<?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>143358</bug_id>
          
          <creation_ts>2015-04-02 20:39:42 -0700</creation_ts>
          <short_desc>Introducing the Platform Abstraction Layer (PAL)</short_desc>
          <delta_ts>2017-01-22 09:26:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>annulen</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>fujii</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>lforschler</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mitz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>yoshiaki.jitsukawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1082443</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-04-02 20:39:42 -0700</bug_when>
    <thetext>Introducing the WebKit Abstraction Framework Layer (WAFL)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082444</commentid>
    <comment_count>1</comment_count>
      <attachid>250034</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-04-02 20:40:37 -0700</bug_when>
    <thetext>Created attachment 250034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082554</commentid>
    <comment_count>2</comment_count>
      <attachid>250070</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-04-03 07:36:53 -0700</bug_when>
    <thetext>Created attachment 250070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082556</commentid>
    <comment_count>3</comment_count>
      <attachid>250070</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-04-03 08:05:25 -0700</bug_when>
    <thetext>Comment on attachment 250070
Patch

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

&gt; Source/WAFL/ChangeLog:3
&gt; +        Introducing the WebCore Abstraction Framework Layer (WAFL)

Don&apos;t like the name, sorry. It doesn&apos;t have &quot;platform&quot; in it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082557</commentid>
    <comment_count>4</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-04-03 08:14:24 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 250070 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=250070&amp;action=review
&gt; 
&gt; &gt; Source/WAFL/ChangeLog:3
&gt; &gt; +        Introducing the WebCore Abstraction Framework Layer (WAFL)
&gt; 
&gt; Don&apos;t like the name, sorry. It doesn&apos;t have &quot;platform&quot; in it.

:(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082560</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-04-03 08:14:59 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 250070 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=250070&amp;action=review
&gt; 
&gt; &gt; Source/WAFL/ChangeLog:3
&gt; &gt; +        Introducing the WebCore Abstraction Framework Layer (WAFL)
&gt; 
&gt; Don&apos;t like the name, sorry. It doesn&apos;t have &quot;platform&quot; in it.

That&apos;s what the &quot;Abstraction&quot; is for!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082647</commentid>
    <comment_count>6</comment_count>
    <who name="ChangSeok Oh">changseok</who>
    <bug_when>2015-04-03 12:20:52 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 250070 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=250070&amp;action=review
&gt; 
&gt; &gt; Source/WAFL/ChangeLog:3
&gt; &gt; +        Introducing the WebCore Abstraction Framework Layer (WAFL)
&gt; 
&gt; Don&apos;t like the name, sorry. It doesn&apos;t have &quot;platform&quot; in it.

Then you want WAPL (WebCore Abstraction Platform Layer)? Come on. :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082728</commentid>
    <comment_count>7</comment_count>
      <attachid>250109</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-04-03 17:27:46 -0700</bug_when>
    <thetext>Created attachment 250109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1082729</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-04-03 17:28:26 -0700</bug_when>
    <thetext>Sadly, it seems that I have been overruled regarding WAFL. The next-best name seems to be PAL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091973</commentid>
    <comment_count>9</comment_count>
      <attachid>252428</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-05 18:07:53 -0700</bug_when>
    <thetext>Created attachment 252428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1091974</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-05 18:11:05 -0700</bug_when>
    <thetext>Attachment 252428 did not pass style-queue:


ERROR: Source/PAL/Configurations/FeatureDefines.xcconfig:0:  Patch introduces a new FeatureDefines.xcconfig, which check-webkit-style doesn&apos;t know about. Please add it to the list in featuredefines.py.  [featuredefines/new] [5]
ERROR: Source/PAL/config.h:30:  #ifndef header guard has wrong style, please use: config_h  [build/header_guard] [5]
ERROR: Source/PAL/config.h:25:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/PAL/PALPrefix.h:65:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/PAL/PALPrefix.h:95:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/PAL/PALPrefix.h:149:  &quot;windows.h&quot; already included at Source/PAL/PALPrefix.h:128  [build/include] [4]
Total errors found: 6 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092191</commentid>
    <comment_count>11</comment_count>
      <attachid>252428</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-06 09:46:56 -0700</bug_when>
    <thetext>Comment on attachment 252428
Patch

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

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:14527
&gt; +				C214D9F51ACE35B4001C80BA /* libPAL.a in Frameworks */,

Don&apos;t require the framework just yet. Give other ports time to add it to their build systems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092297</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-06 13:34:03 -0700</bug_when>
    <thetext>Committed r183883: &lt;http://trac.webkit.org/changeset/183883&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092470</commentid>
    <comment_count>13</comment_count>
      <attachid>252428</attachid>
    <who name="">mitz</who>
    <bug_when>2015-05-06 20:33:13 -0700</bug_when>
    <thetext>Comment on attachment 252428
Patch

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

&gt; Source/PAL/PAL.xcodeproj/project.pbxproj:185
&gt; +				ALWAYS_SEARCH_USER_PATHS = NO;
&gt; +				CLANG_CXX_LANGUAGE_STANDARD = &quot;gnu++0x&quot;;
&gt; +				CLANG_CXX_LIBRARY = &quot;libc++&quot;;
&gt; +				CLANG_ENABLE_MODULES = YES;
&gt; +				CLANG_ENABLE_OBJC_ARC = YES;
&gt; +				CLANG_WARN_BOOL_CONVERSION = YES;
&gt; +				CLANG_WARN_CONSTANT_CONVERSION = YES;
&gt; +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
&gt; +				CLANG_WARN_EMPTY_BODY = YES;
&gt; +				CLANG_WARN_ENUM_CONVERSION = YES;
&gt; +				CLANG_WARN_INT_CONVERSION = YES;
&gt; +				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
&gt; +				CLANG_WARN_UNREACHABLE_CODE = YES;
&gt; +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
&gt; +				COPY_PHASE_STRIP = NO;
&gt; +				DEBUG_INFORMATION_FORMAT = &quot;dwarf-with-dsym&quot;;
&gt; +				ENABLE_NS_ASSERTIONS = NO;
&gt; +				ENABLE_STRICT_OBJC_MSGSEND = YES;
&gt; +				GCC_C_LANGUAGE_STANDARD = gnu99;
&gt; +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
&gt; +				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
&gt; +				GCC_WARN_UNDECLARED_SELECTOR = YES;
&gt; +				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
&gt; +				GCC_WARN_UNUSED_FUNCTION = YES;
&gt; +				GCC_WARN_UNUSED_VARIABLE = YES;
&gt; +				MACOSX_DEPLOYMENT_TARGET = 10.10;
&gt; +				MTL_ENABLE_DEBUG_INFO = NO;
&gt; +				SDKROOT = macosx;

These build settings shouldn’t be in the project file.

&gt; Source/PAL/PAL.xcodeproj/project.pbxproj:194
&gt; +				EXECUTABLE_PREFIX = lib;
&gt; +				PRODUCT_NAME = &quot;$(TARGET_NAME)&quot;;

These too.

&gt; Source/PAL/PAL.xcodeproj/project.pbxproj:219
&gt; +				ALWAYS_SEARCH_USER_PATHS = NO;
&gt; +				CLANG_CXX_LANGUAGE_STANDARD = &quot;gnu++0x&quot;;
&gt; +				CLANG_CXX_LIBRARY = &quot;libc++&quot;;
&gt; +				CLANG_ENABLE_MODULES = YES;
&gt; +				CLANG_ENABLE_OBJC_ARC = YES;
&gt; +				CLANG_WARN_BOOL_CONVERSION = YES;
&gt; +				CLANG_WARN_CONSTANT_CONVERSION = YES;
&gt; +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
&gt; +				CLANG_WARN_EMPTY_BODY = YES;
&gt; +				CLANG_WARN_ENUM_CONVERSION = YES;
&gt; +				CLANG_WARN_INT_CONVERSION = YES;
&gt; +				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
&gt; +				CLANG_WARN_UNREACHABLE_CODE = YES;
&gt; +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
&gt; +				COPY_PHASE_STRIP = NO;
&gt; +				ENABLE_STRICT_OBJC_MSGSEND = YES;
&gt; +				GCC_C_LANGUAGE_STANDARD = gnu99;
&gt; +				GCC_DYNAMIC_NO_PIC = NO;

and these.

&gt; Source/PAL/PAL.xcodeproj/project.pbxproj:223
&gt; +					&quot;DEBUG=1&quot;,
&gt; +					&quot;$(inherited)&quot;,

In other projects we use NDEBUG=1 in non-debug configurations, and we don’t use DEBUG. Why is this different?

&gt; Source/PAL/PAL.xcodeproj/project.pbxproj:235
&gt; +				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
&gt; +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
&gt; +				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
&gt; +				GCC_WARN_UNDECLARED_SELECTOR = YES;
&gt; +				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
&gt; +				GCC_WARN_UNUSED_FUNCTION = YES;
&gt; +				GCC_WARN_UNUSED_VARIABLE = YES;
&gt; +				MACOSX_DEPLOYMENT_TARGET = 10.10;
&gt; +				MTL_ENABLE_DEBUG_INFO = YES;
&gt; +				ONLY_ACTIVE_ARCH = YES;
&gt; +				SDKROOT = macosx;

More settings that don’t belong here.

&gt; Source/PAL/PAL.xcodeproj/project.pbxproj:270
&gt; +				ALWAYS_SEARCH_USER_PATHS = NO;
&gt; +				CLANG_CXX_LANGUAGE_STANDARD = &quot;gnu++0x&quot;;
&gt; +				CLANG_CXX_LIBRARY = &quot;libc++&quot;;
&gt; +				CLANG_ENABLE_MODULES = YES;
&gt; +				CLANG_ENABLE_OBJC_ARC = YES;
&gt; +				CLANG_WARN_BOOL_CONVERSION = YES;
&gt; +				CLANG_WARN_CONSTANT_CONVERSION = YES;
&gt; +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
&gt; +				CLANG_WARN_EMPTY_BODY = YES;
&gt; +				CLANG_WARN_ENUM_CONVERSION = YES;
&gt; +				CLANG_WARN_INT_CONVERSION = YES;
&gt; +				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
&gt; +				CLANG_WARN_UNREACHABLE_CODE = YES;
&gt; +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
&gt; +				COPY_PHASE_STRIP = NO;
&gt; +				DEBUG_INFORMATION_FORMAT = &quot;dwarf-with-dsym&quot;;
&gt; +				ENABLE_NS_ASSERTIONS = NO;
&gt; +				ENABLE_STRICT_OBJC_MSGSEND = YES;
&gt; +				GCC_C_LANGUAGE_STANDARD = gnu99;
&gt; +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
&gt; +				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
&gt; +				GCC_WARN_UNDECLARED_SELECTOR = YES;
&gt; +				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
&gt; +				GCC_WARN_UNUSED_FUNCTION = YES;
&gt; +				GCC_WARN_UNUSED_VARIABLE = YES;
&gt; +				MACOSX_DEPLOYMENT_TARGET = 10.10;
&gt; +				MTL_ENABLE_DEBUG_INFO = NO;
&gt; +				SDKROOT = macosx;

and more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092476</commentid>
    <comment_count>14</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-06 20:56:57 -0700</bug_when>
    <thetext>In hindsight, I think we should use a new target in the WebCore.xcode project rather than adding a new project. We still get all the benefits without the annoyance of an extra project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092491</commentid>
    <comment_count>15</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-06 21:21:24 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 252428 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252428&amp;action=review
&gt; 
&gt; &gt; Source/PAL/PAL.xcodeproj/project.pbxproj:185
&gt; &gt; +				ALWAYS_SEARCH_USER_PATHS = NO;
&gt; &gt; +				CLANG_CXX_LANGUAGE_STANDARD = &quot;gnu++0x&quot;;
&gt; &gt; +				CLANG_CXX_LIBRARY = &quot;libc++&quot;;
&gt; &gt; +				CLANG_ENABLE_MODULES = YES;
&gt; &gt; +				CLANG_ENABLE_OBJC_ARC = YES;
&gt; &gt; +				CLANG_WARN_BOOL_CONVERSION = YES;
&gt; &gt; +				CLANG_WARN_CONSTANT_CONVERSION = YES;
&gt; &gt; +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
&gt; &gt; +				CLANG_WARN_EMPTY_BODY = YES;
&gt; &gt; +				CLANG_WARN_ENUM_CONVERSION = YES;
&gt; &gt; +				CLANG_WARN_INT_CONVERSION = YES;
&gt; &gt; +				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
&gt; &gt; +				CLANG_WARN_UNREACHABLE_CODE = YES;
&gt; &gt; +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
&gt; &gt; +				COPY_PHASE_STRIP = NO;
&gt; &gt; +				DEBUG_INFORMATION_FORMAT = &quot;dwarf-with-dsym&quot;;
&gt; &gt; +				ENABLE_NS_ASSERTIONS = NO;
&gt; &gt; +				ENABLE_STRICT_OBJC_MSGSEND = YES;
&gt; &gt; +				GCC_C_LANGUAGE_STANDARD = gnu99;
&gt; &gt; +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
&gt; &gt; +				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
&gt; &gt; +				GCC_WARN_UNDECLARED_SELECTOR = YES;
&gt; &gt; +				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
&gt; &gt; +				GCC_WARN_UNUSED_FUNCTION = YES;
&gt; &gt; +				GCC_WARN_UNUSED_VARIABLE = YES;
&gt; &gt; +				MACOSX_DEPLOYMENT_TARGET = 10.10;
&gt; &gt; +				MTL_ENABLE_DEBUG_INFO = NO;
&gt; &gt; +				SDKROOT = macosx;
&gt; 
&gt; These build settings shouldn’t be in the project file.
&gt; 
&gt; &gt; Source/PAL/PAL.xcodeproj/project.pbxproj:194
&gt; &gt; +				EXECUTABLE_PREFIX = lib;
&gt; &gt; +				PRODUCT_NAME = &quot;$(TARGET_NAME)&quot;;
&gt; 
&gt; These too.
&gt; 
&gt; &gt; Source/PAL/PAL.xcodeproj/project.pbxproj:219
&gt; &gt; +				ALWAYS_SEARCH_USER_PATHS = NO;
&gt; &gt; +				CLANG_CXX_LANGUAGE_STANDARD = &quot;gnu++0x&quot;;
&gt; &gt; +				CLANG_CXX_LIBRARY = &quot;libc++&quot;;
&gt; &gt; +				CLANG_ENABLE_MODULES = YES;
&gt; &gt; +				CLANG_ENABLE_OBJC_ARC = YES;
&gt; &gt; +				CLANG_WARN_BOOL_CONVERSION = YES;
&gt; &gt; +				CLANG_WARN_CONSTANT_CONVERSION = YES;
&gt; &gt; +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
&gt; &gt; +				CLANG_WARN_EMPTY_BODY = YES;
&gt; &gt; +				CLANG_WARN_ENUM_CONVERSION = YES;
&gt; &gt; +				CLANG_WARN_INT_CONVERSION = YES;
&gt; &gt; +				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
&gt; &gt; +				CLANG_WARN_UNREACHABLE_CODE = YES;
&gt; &gt; +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
&gt; &gt; +				COPY_PHASE_STRIP = NO;
&gt; &gt; +				ENABLE_STRICT_OBJC_MSGSEND = YES;
&gt; &gt; +				GCC_C_LANGUAGE_STANDARD = gnu99;
&gt; &gt; +				GCC_DYNAMIC_NO_PIC = NO;
&gt; 
&gt; and these.
&gt; 
&gt; &gt; Source/PAL/PAL.xcodeproj/project.pbxproj:223
&gt; &gt; +					&quot;DEBUG=1&quot;,
&gt; &gt; +					&quot;$(inherited)&quot;,
&gt; 
&gt; In other projects we use NDEBUG=1 in non-debug configurations, and we don’t
&gt; use DEBUG. Why is this different?
&gt; 
&gt; &gt; Source/PAL/PAL.xcodeproj/project.pbxproj:235
&gt; &gt; +				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
&gt; &gt; +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
&gt; &gt; +				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
&gt; &gt; +				GCC_WARN_UNDECLARED_SELECTOR = YES;
&gt; &gt; +				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
&gt; &gt; +				GCC_WARN_UNUSED_FUNCTION = YES;
&gt; &gt; +				GCC_WARN_UNUSED_VARIABLE = YES;
&gt; &gt; +				MACOSX_DEPLOYMENT_TARGET = 10.10;
&gt; &gt; +				MTL_ENABLE_DEBUG_INFO = YES;
&gt; &gt; +				ONLY_ACTIVE_ARCH = YES;
&gt; &gt; +				SDKROOT = macosx;
&gt; 
&gt; More settings that don’t belong here.
&gt; 
&gt; &gt; Source/PAL/PAL.xcodeproj/project.pbxproj:270
&gt; &gt; +				ALWAYS_SEARCH_USER_PATHS = NO;
&gt; &gt; +				CLANG_CXX_LANGUAGE_STANDARD = &quot;gnu++0x&quot;;
&gt; &gt; +				CLANG_CXX_LIBRARY = &quot;libc++&quot;;
&gt; &gt; +				CLANG_ENABLE_MODULES = YES;
&gt; &gt; +				CLANG_ENABLE_OBJC_ARC = YES;
&gt; &gt; +				CLANG_WARN_BOOL_CONVERSION = YES;
&gt; &gt; +				CLANG_WARN_CONSTANT_CONVERSION = YES;
&gt; &gt; +				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
&gt; &gt; +				CLANG_WARN_EMPTY_BODY = YES;
&gt; &gt; +				CLANG_WARN_ENUM_CONVERSION = YES;
&gt; &gt; +				CLANG_WARN_INT_CONVERSION = YES;
&gt; &gt; +				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
&gt; &gt; +				CLANG_WARN_UNREACHABLE_CODE = YES;
&gt; &gt; +				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
&gt; &gt; +				COPY_PHASE_STRIP = NO;
&gt; &gt; +				DEBUG_INFORMATION_FORMAT = &quot;dwarf-with-dsym&quot;;
&gt; &gt; +				ENABLE_NS_ASSERTIONS = NO;
&gt; &gt; +				ENABLE_STRICT_OBJC_MSGSEND = YES;
&gt; &gt; +				GCC_C_LANGUAGE_STANDARD = gnu99;
&gt; &gt; +				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
&gt; &gt; +				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
&gt; &gt; +				GCC_WARN_UNDECLARED_SELECTOR = YES;
&gt; &gt; +				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
&gt; &gt; +				GCC_WARN_UNUSED_FUNCTION = YES;
&gt; &gt; +				GCC_WARN_UNUSED_VARIABLE = YES;
&gt; &gt; +				MACOSX_DEPLOYMENT_TARGET = 10.10;
&gt; &gt; +				MTL_ENABLE_DEBUG_INFO = NO;
&gt; &gt; +				SDKROOT = macosx;
&gt; 
&gt; and more.

Default Xcode project strikes again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092689</commentid>
    <comment_count>16</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-07 12:05:52 -0700</bug_when>
    <thetext>Reverted in https://bugs.webkit.org/show_bug.cgi?id=144751 and http://trac.webkit.org/changeset/183940</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092793</commentid>
    <comment_count>17</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-07 15:25:50 -0700</bug_when>
    <thetext>Also http://trac.webkit.org/changeset/183952 and https://bugs.webkit.org/show_bug.cgi?id=144768</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092878</commentid>
    <comment_count>18</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-07 17:16:49 -0700</bug_when>
    <thetext>PAL should be a target in WebCore, not a top-level folder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092885</commentid>
    <comment_count>19</comment_count>
      <attachid>252658</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-07 17:21:11 -0700</bug_when>
    <thetext>Created attachment 252658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092929</commentid>
    <comment_count>20</comment_count>
      <attachid>252667</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-07 18:06:34 -0700</bug_when>
    <thetext>Created attachment 252667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092933</commentid>
    <comment_count>21</comment_count>
      <attachid>252668</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-07 18:08:52 -0700</bug_when>
    <thetext>Created attachment 252668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093039</commentid>
    <comment_count>22</comment_count>
      <attachid>252668</attachid>
    <who name="">mitz</who>
    <bug_when>2015-05-07 22:52:39 -0700</bug_when>
    <thetext>Comment on attachment 252668
Patch

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

&gt; Source/WebCore/Configurations/PAL.xcconfig:27
&gt; +HEADER_SEARCH_PATHS = ForwardingHeaders icu &quot;$(BUILT_PRODUCTS_DIR)/usr/local/include&quot; $(HEADER_SEARCH_PATHS);

You can use $(inherited) instead of $(HEADER_SEARCH_PATHS).

Does this prevent files in this target from casually including headers that don’t belong in this target? It seems like that would be a good way to enforce layering.

&gt; Source/WebCore/Configurations/PAL.xcconfig:28
&gt; +PRODUCT_NAME = PAL;

Seems like you should be setting SKIP_INSTALL to YES, since the library isn’t intended to be consumed by other projects.

&gt; Source/WebCore/platform/graphics/PALPlaceholder.cpp:1
&gt; +/*

Isn’t there perhaps one existing file in WebCore/platform that you can move into the new target instead of adding something new and unused?

Are you planning to leave the files in the platform subdirectory as you move them into the new target? That might make it hard to enforce layering requirements on files as they migrate from one target to the other.

&gt; Source/WebCore/platform/graphics/PALPlaceholder.cpp:29
&gt; +namespace WebCore {

A different namespace would be a good way to indicate what goes in what layer and make violations obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093661</commentid>
    <comment_count>23</comment_count>
      <attachid>252668</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-10 23:22:51 -0700</bug_when>
    <thetext>Comment on attachment 252668
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/PALPlaceholder.cpp:1
&gt;&gt; +/*
&gt; 
&gt; Isn’t there perhaps one existing file in WebCore/platform that you can move into the new target instead of adding something new and unused?
&gt; 
&gt; Are you planning to leave the files in the platform subdirectory as you move them into the new target? That might make it hard to enforce layering requirements on files as they migrate from one target to the other.

I&apos;m worried about the other ports. I don&apos;t know how to add a build dependency for every port, so my plan was to create something new and unused, then ask everyone to add the relevant build target, and then start requiring it. Is there a better way of doing this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093669</commentid>
    <comment_count>24</comment_count>
      <attachid>252843</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-10 23:54:42 -0700</bug_when>
    <thetext>Created attachment 252843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093840</commentid>
    <comment_count>25</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-11 12:01:37 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Comment on attachment 252668 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252668&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/PALPlaceholder.cpp:1
&gt; &gt;&gt; +/*
&gt; &gt; 
&gt; &gt; Isn’t there perhaps one existing file in WebCore/platform that you can move into the new target instead of adding something new and unused?
&gt; &gt; 
&gt; &gt; Are you planning to leave the files in the platform subdirectory as you move them into the new target? That might make it hard to enforce layering requirements on files as they migrate from one target to the other.
&gt; 
&gt; I&apos;m worried about the other ports. I don&apos;t know how to add a build
&gt; dependency for every port, so my plan was to create something new and
&gt; unused, then ask everyone to add the relevant build target, and then start
&gt; requiring it. Is there a better way of doing this?

platform/ios/wak/FloatingPointEnvironment.{cpp,h} are only needed on Xcode-based platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095521</commentid>
    <comment_count>26</comment_count>
      <attachid>253295</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-17 13:16:01 -0700</bug_when>
    <thetext>Created attachment 253295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095522</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-17 13:18:20 -0700</bug_when>
    <thetext>Attachment 253295 did not pass style-queue:


ERROR: Source/WebCore/PAL/PlatformExportMacros.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:37:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:76:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095543</commentid>
    <comment_count>28</comment_count>
      <attachid>253303</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-17 22:58:24 -0700</bug_when>
    <thetext>Created attachment 253303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095544</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-17 23:01:11 -0700</bug_when>
    <thetext>Attachment 253303 did not pass style-queue:


ERROR: Source/WebCore/PAL/PlatformExportMacros.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:37:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:76:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095637</commentid>
    <comment_count>30</comment_count>
      <attachid>253303</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-18 10:50:35 -0700</bug_when>
    <thetext>Comment on attachment 253303
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        and its dependents, into PAL.

Add a link to https://lists.webkit.org/pipermail/webkit-dev/2015-March/027303.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095750</commentid>
    <comment_count>31</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-18 17:09:54 -0700</bug_when>
    <thetext>I&apos;m tinkering with the GTK+ build locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096712</commentid>
    <comment_count>32</comment_count>
      <attachid>253560</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-21 17:21:50 -0700</bug_when>
    <thetext>Created attachment 253560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096713</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-21 17:25:13 -0700</bug_when>
    <thetext>Attachment 253560 did not pass style-queue:


ERROR: Source/WebCore/PAL/config.h:37:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:76:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/PlatformExportMacros.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096716</commentid>
    <comment_count>34</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-21 17:30:06 -0700</bug_when>
    <thetext>I&apos;ve uploaded a patch that adds support for a statically compiled PAL library for (hopefully) all CMake ports. Sorry for the delay. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096786</commentid>
    <comment_count>35</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-21 23:05:33 -0700</bug_when>
    <thetext>I wonder if we should use another subdirectory, something like Source/WebCore/PAL/pal, and force pal includes to be &lt;pal/Foo.h&gt;, avoiding &quot;Foo.h&quot; includes of PAL in WebCore (well, and everything else).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096839</commentid>
    <comment_count>36</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-05-22 04:04:37 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; I wonder if we should use another subdirectory, something like
&gt; Source/WebCore/PAL/pal, and force pal includes to be &lt;pal/Foo.h&gt;, avoiding
&gt; &quot;Foo.h&quot; includes of PAL in WebCore (well, and everything else).

Why do we need one more directory level for this? 
It&apos;s so ugly, similar to WTF/wtf. :-/

We can simply not add PAL to WebCore_INCLUDE_DIRECTORIES 
and it would force the developers to use &lt;PAL/Foo.h&gt; includes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096840</commentid>
    <comment_count>37</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-22 04:23:48 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (In reply to comment #35)
&gt; &gt; I wonder if we should use another subdirectory, something like
&gt; &gt; Source/WebCore/PAL/pal, and force pal includes to be &lt;pal/Foo.h&gt;, avoiding
&gt; &gt; &quot;Foo.h&quot; includes of PAL in WebCore (well, and everything else).
&gt; 
&gt; Why do we need one more directory level for this? 
&gt; It&apos;s so ugly, similar to WTF/wtf. :-/
&gt; 
&gt; We can simply not add PAL to WebCore_INCLUDE_DIRECTORIES 
&gt; and it would force the developers to use &lt;PAL/Foo.h&gt; includes.

Ah!, I don&apos;t really mind either way, as long as we don&apos;t allow #include &quot;Foo.h&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096905</commentid>
    <comment_count>38</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-22 11:38:31 -0700</bug_when>
    <thetext>mitzpettel: do you have any thoughts on PAL/pal/?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096968</commentid>
    <comment_count>39</comment_count>
      <attachid>253610</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-22 15:14:04 -0700</bug_when>
    <thetext>Created attachment 253610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096969</commentid>
    <comment_count>40</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-22 15:15:22 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; Created attachment 253610 [details]
&gt; Patch

I&apos;m not sure how my previous patch omitted the WebKit2 changes (they were in my working tree), but I&apos;ve confirmed that the new patch has them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097220</commentid>
    <comment_count>41</comment_count>
      <attachid>253610</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-25 01:12:53 -0700</bug_when>
    <thetext>Comment on attachment 253610
Patch

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

&gt; Source/WebCore/PAL/CMakeLists.txt:9
&gt; +    JavaScriptCore

Why does PAL need to link to JavaScriptCore?

&gt; Source/WebCore/PAL/CMakeLists.txt:16
&gt; +include_directories(${PAL_INCLUDE_DIRECTORIES} ${WebCoreTestSupport_INCLUDE_DIRECTORIES})

And why do we need the WebCoreTestSupport_INCLUDE_DIRECTORIES?

&gt; Source/WebCore/PAL/config.h:37
&gt; +#include &lt;wtf/ExportMacros.h&gt;
&gt; +#include &quot;PlatformExportMacros.h&quot;

PlatformExportMacros.h already includes wtf/ExportMacros.h

&gt; Source/WebCore/PAL/config.h:39
&gt; +#include &lt;runtime/JSExportMacros.h&gt;

I guess we shouldn&apos;t need this in PAL, but now WebCore doesn&apos;t have its own config.h file. The thing is that I don&apos;t see any use of JS_EXPORT* in WebCore, so maybe we can safely remove this.

&gt; Source/WebCore/PAL/config.h:125
&gt; +// FIXME: Move this to JavaScriptCore/wtf/Platform.h, which is where we define USE_AVFOUNDATION on the Mac.
&gt; +// https://bugs.webkit.org/show_bug.cgi?id=67334

Maybe it&apos;s time to fix this? Even the FIXME comment is outdated :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097423</commentid>
    <comment_count>42</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-26 13:54:41 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt;
&gt; &gt; Source/WebCore/PAL/CMakeLists.txt:9
&gt; &gt; +    JavaScriptCore
&gt; 
&gt; Why does PAL need to link to JavaScriptCore?

It doesn&apos;t yet, but this was to allow any code from WebCore to move here. I can remove this for now.

&gt; &gt; Source/WebCore/PAL/CMakeLists.txt:16
&gt; &gt; +include_directories(${PAL_INCLUDE_DIRECTORIES} ${WebCoreTestSupport_INCLUDE_DIRECTORIES})
&gt; 
&gt; And why do we need the WebCoreTestSupport_INCLUDE_DIRECTORIES?

Left over from a copy and paste insertion. I&apos;ll remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097426</commentid>
    <comment_count>43</comment_count>
      <attachid>253735</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-26 13:56:53 -0700</bug_when>
    <thetext>Created attachment 253735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097428</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-26 13:59:34 -0700</bug_when>
    <thetext>Attachment 253735 did not pass style-queue:


ERROR: Source/WebCore/PAL/config.h:37:  Bad include order. Mixing system and custom headers.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:76:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/PlatformExportMacros.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097467</commentid>
    <comment_count>45</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-26 14:49:44 -0700</bug_when>
    <thetext>I&apos;ll add Windows support as soon as I have time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097601</commentid>
    <comment_count>46</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-05-26 23:35:42 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; (In reply to comment #41)
&gt; &gt;
&gt; &gt; &gt; Source/WebCore/PAL/CMakeLists.txt:9
&gt; &gt; &gt; +    JavaScriptCore
&gt; &gt; 
&gt; &gt; Why does PAL need to link to JavaScriptCore?
&gt; 
&gt; It doesn&apos;t yet, but this was to allow any code from WebCore to move here. I
&gt; can remove this for now.

I don&apos;t think we want to allow any code from WebCore in PAL, but rather only platform code that is free of layering violations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1125684</commentid>
    <comment_count>47</comment_count>
      <attachid>252428</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-09-14 11:18:11 -0700</bug_when>
    <thetext>Comment on attachment 252428
Patch

Cleared Simon Fraser&apos;s review+ from obsolete attachment 252428 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188161</commentid>
    <comment_count>48</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-04-28 00:31:10 -0700</bug_when>
    <thetext>Myles, what happened with this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188353</commentid>
    <comment_count>49</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-04-28 13:04:36 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; Myles, what happened with this?

I still want to make this dream a reality.... I just haven&apos;t had time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194569</commentid>
    <comment_count>50</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2016-05-18 18:46:04 -0700</bug_when>
    <thetext>Myles do you have any sort of design in mind? This is something we&apos;re interested in looking into.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195986</commentid>
    <comment_count>51</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-05-24 13:07:58 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; Myles do you have any sort of design in mind? This is something we&apos;re
&gt; interested in looking into.

Yeah, I have a few constraints of the design of this:

- Building PAL without the rest of WebCore should be possible. I&apos;d like to set up a buildbot to enforce this. Pieces should be migrated into PAL from platform once they don&apos;t have any dependencies on the rest of WebCore
- PAL should be conceptually inside WebCore
- A default build of WebCore should build PAL as an intermediate step
- The forwarding headers setup the Cocoa ports use for WTF should still work. I&apos;m not quite sure how to do this properly.
- PAL should be a static library, not a shared library. It should be linked into the WebCore shared library (like how WTF is linked into JavaScriptCore)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195990</commentid>
    <comment_count>52</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2016-05-24 13:16:16 -0700</bug_when>
    <thetext>What about platform specific stuff in WTF? That anything this should handle as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196038</commentid>
    <comment_count>53</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-05-24 14:54:22 -0700</bug_when>
    <thetext>(In reply to comment #52)
&gt; What about platform specific stuff in WTF? That anything this should handle
&gt; as well?

W/R/T platform-specific stuff, I don&apos;t think there should be any difference in the policy of PAL from the policy of platform/. The goal of this project is to enforce layering between the two pieces, so the first step is literally just moving sources from platform/ to PAL.

Maybe in the future we will move code from WTF to PAL, but I think that we shouldn&apos;t do that just yet. I&apos;d like to get this thing off the ground before we change anything about WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196039</commentid>
    <comment_count>54</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-05-24 14:55:08 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; enforce layering between the two pieces

&quot;the two pieces&quot; being WebCore/platform and the rest of WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265205</commentid>
    <comment_count>55</comment_count>
      <attachid>298416</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-01-09 16:41:47 -0800</bug_when>
    <thetext>Created attachment 298416
First stab at the PAL layer

Here is my first pass on the PAL library. Looking for feedback on the particulars of it all.

I ended up moving over crypto as this was something that was being used by multiple ports so each port will end up having an implementation present so the PAL library will have something in it.

Since Mac hasn&apos;t moved to CMake yet I expect the Apple builds to fail. Hoping Myles can get that sorted. I built WinCairo locally and that went fine so will see how the builds go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265211</commentid>
    <comment_count>56</comment_count>
      <attachid>298418</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-01-09 16:48:06 -0800</bug_when>
    <thetext>Created attachment 298418
First stab at the PAL layer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265216</commentid>
    <comment_count>57</comment_count>
      <attachid>298420</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-01-09 17:00:29 -0800</bug_when>
    <thetext>Created attachment 298420
First stab at the PAL layer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265248</commentid>
    <comment_count>58</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-09 18:22:23 -0800</bug_when>
    <thetext>Hm, I was thinking we would put PAL in the toplevel Source/ directory, outside of WebCore.

Are you familiar with Tools/Scripts/check-for-platform-layering-violations? I think basically all the files not listed by that script could be immediately moved to PAL, and then WebCore/platform/ could consist only of layering violations that we need to fix, eventually to be deleted.

(In reply to comment #8)
&gt; Sadly, it seems that I have been overruled regarding WAFL. The next-best
&gt; name seems to be PAL.

PAL is a great name. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265251</commentid>
    <comment_count>59</comment_count>
      <attachid>298420</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-09 18:28:50 -0800</bug_when>
    <thetext>Comment on attachment 298420
First stab at the PAL layer

You have four redundant changelog entries in the toplevel ChangeLog!

Also, &quot;patch does not apply to trunk of repository&quot; isn&apos;t good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265275</commentid>
    <comment_count>60</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-01-09 20:15:41 -0800</bug_when>
    <thetext>(In reply to comment #58)
&gt; Hm, I was thinking we would put PAL in the toplevel Source/ directory,
&gt; outside of WebCore.

I talked to Myles and he said PAL in WebCore so that&apos;s what I followed. Having the code namespaced as WebCore::PAL was my opinion.

I&apos;m not sure if it would ever really be needed but maybe individual libraries would benefit from a PAL.

&gt; Are you familiar with Tools/Scripts/check-for-platform-layering-violations?
&gt; I think basically all the files not listed by that script could be
&gt; immediately moved to PAL, and then WebCore/platform/ could consist only of
&gt; layering violations that we need to fix, eventually to be deleted.

Thanks for the tip I wasn&apos;t familiar with that. I had thought that moving stuff to the PAL would also give the project a chance to do some cleanup to provide a nice testable layer. We&apos;re rebooting our port so we&apos;re in a good position to do some of the associated grunt work.

(In reply to comment #59)
&gt; Comment on attachment 298420 [details]
&gt; First stab at the PAL layer
&gt; 
&gt; You have four redundant changelog entries in the toplevel ChangeLog!
&gt; 
&gt; Also, &quot;patch does not apply to trunk of repository&quot; isn&apos;t good.

Sorry still getting the workflow for everything down and wasn&apos;t able to get the patch applying cleanly on the bots before I had to leave the office today. I&apos;m planning on continuing on tomorrow when I get in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265307</commentid>
    <comment_count>61</comment_count>
      <attachid>298449</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-10 00:32:27 -0800</bug_when>
    <thetext>Created attachment 298449
First stab at the PAL layer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265308</commentid>
    <comment_count>62</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-10 00:34:05 -0800</bug_when>
    <thetext>The patch I just uploaded still needs a precommit hook or a build verification step or a style bot check (or all three).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265309</commentid>
    <comment_count>63</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 00:35:18 -0800</bug_when>
    <thetext>Attachment 298449 did not pass style-queue:


ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/config.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 7 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265372</commentid>
    <comment_count>64</comment_count>
      <attachid>298449</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-10 08:46:50 -0800</bug_when>
    <thetext>Comment on attachment 298449
First stab at the PAL layer

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

(Still got to fix the toplevel ChangeLog.)

&gt; Source/WTF/wtf/Platform.h:1217
&gt; -#define HAVE_TOUCH_BAR 1
&gt; +#define HAVE_TOUCH_BAR 0

Is this intended to be here? Why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265402</commentid>
    <comment_count>65</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-10 10:01:11 -0800</bug_when>
    <thetext>(In reply to comment #64)
&gt; Comment on attachment 298449 [details]
&gt; First stab at the PAL layer
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298449&amp;action=review
&gt; 
&gt; (Still got to fix the toplevel ChangeLog.)
&gt; 
&gt; &gt; Source/WTF/wtf/Platform.h:1217
&gt; &gt; -#define HAVE_TOUCH_BAR 1
&gt; &gt; +#define HAVE_TOUCH_BAR 0
&gt; 
&gt; Is this intended to be here? Why?

Well of course the Platform Abstraction Library is incompatible with the touch bar!

Just kidding. It&apos;s an accident.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265500</commentid>
    <comment_count>66</comment_count>
      <attachid>298502</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-10 12:41:49 -0800</bug_when>
    <thetext>Created attachment 298502
Needs cmake invariant enforcement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265506</commentid>
    <comment_count>67</comment_count>
      <attachid>298503</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-10 12:46:00 -0800</bug_when>
    <thetext>Created attachment 298503
Needs cmake invariant enforcement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265521</commentid>
    <comment_count>68</comment_count>
      <attachid>298503</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-01-10 13:47:47 -0800</bug_when>
    <thetext>Comment on attachment 298503
Needs cmake invariant enforcement

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

&gt; Source/WebCore/PAL/CMakeLists.txt:17
&gt; +

To make the script run in CMake land the following works.

if OS(UNIX)
    add_custom_command(
        TARGET PAL
        POST_BUILD
        COMMAND ${PYTHON_EXECUTABLE} ${WEBCORE_DIR}/scripts/EnforcePALLayering.py $&lt;TARGET_FILE:PAL&gt; ${PAL_DIR}
        VERBATIM)
endif ()

&gt; Source/WebCore/PAL/crypto/win/CryptoDigestWin.cpp:30
&gt; +#include &lt;windows.h&gt;

With the WinCairo build it appears that &lt;windows.h&gt; needs to come first otherwise the build fails.

&gt; Source/WebCore/Scripts/EnforcePALLayering.py:1
&gt; +# Copyright (C) 2017 Apple Inc. All rights reserved.

Not sure if you want a shebang line here or not. Just making a note of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265546</commentid>
    <comment_count>69</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-10 15:00:36 -0800</bug_when>
    <thetext>(In reply to comment #68)
&gt; Comment on attachment 298503 [details]
&gt; Needs cmake invariant enforcement
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298503&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/PAL/CMakeLists.txt:17
&gt; &gt; +
&gt; 
&gt; To make the script run in CMake land the following works.
&gt; 
&gt; if OS(UNIX)
&gt;     add_custom_command(
&gt;         TARGET PAL
&gt;         POST_BUILD
&gt;         COMMAND ${PYTHON_EXECUTABLE}
&gt; ${WEBCORE_DIR}/scripts/EnforcePALLayering.py $&lt;TARGET_FILE:PAL&gt; ${PAL_DIR}
&gt;         VERBATIM)
&gt; endif ()
&gt; 
&gt; &gt; Source/WebCore/PAL/crypto/win/CryptoDigestWin.cpp:30
&gt; &gt; +#include &lt;windows.h&gt;
&gt; 
&gt; With the WinCairo build it appears that &lt;windows.h&gt; needs to come first
&gt; otherwise the build fails.
&gt; 

Do you want to upload a patch which does these two things?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265547</commentid>
    <comment_count>70</comment_count>
      <attachid>298503</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-10 15:04:23 -0800</bug_when>
    <thetext>Comment on attachment 298503
Needs cmake invariant enforcement

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

&gt; Source/WebCore/Scripts/EnforcePALLayering.py:30
&gt; +symbolNamespaceCommand = &quot;nm -gUj &quot; + archiveFile + &quot; | c++filt | grep \&quot;^WebCore::\&quot; | grep -v \&quot;^WebCore::PAL::\&quot;&quot;

We probably should be checking the used symbols, not just the declared symbols.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265549</commentid>
    <comment_count>71</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-01-10 15:10:20 -0800</bug_when>
    <thetext>(In reply to comment #70)
&gt; Comment on attachment 298503 [details]
&gt; Needs cmake invariant enforcement
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298503&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Scripts/EnforcePALLayering.py:30
&gt; &gt; +symbolNamespaceCommand = &quot;nm -gUj &quot; + archiveFile + &quot; | c++filt | grep \&quot;^WebCore::\&quot; | grep -v \&quot;^WebCore::PAL::\&quot;&quot;
&gt; 
&gt; We probably should be checking the used symbols, not just the declared
&gt; symbols.

Yea I didn&apos;t make the patch because I wasn&apos;t sure if you had any local modifications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265562</commentid>
    <comment_count>72</comment_count>
      <attachid>298516</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-10 15:41:53 -0800</bug_when>
    <thetext>Created attachment 298516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265564</commentid>
    <comment_count>73</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-10 15:45:26 -0800</bug_when>
    <thetext>(In reply to comment #68)
&gt; &gt; Source/WebCore/Scripts/EnforcePALLayering.py:1
&gt; &gt; +# Copyright (C) 2017 Apple Inc. All rights reserved.
&gt; 
&gt; Not sure if you want a shebang line here or not. Just making a note of it.

It should have a shebang and executable permission set since it&apos;s intended to be executed directly. Note that if it has a shebang, it shouldn&apos;t have the .py extension.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265567</commentid>
    <comment_count>74</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 15:49:51 -0800</bug_when>
    <thetext>Attachment 298516 did not pass style-queue:


ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/config.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/crypto/win/CryptoDigestWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265579</commentid>
    <comment_count>75</comment_count>
      <attachid>298521</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-01-10 16:18:14 -0800</bug_when>
    <thetext>Created attachment 298521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265581</commentid>
    <comment_count>76</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 16:21:29 -0800</bug_when>
    <thetext>Attachment 298521 did not pass style-queue:


ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/config.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/crypto/win/CryptoDigestWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265602</commentid>
    <comment_count>77</comment_count>
      <attachid>298530</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-01-10 17:23:00 -0800</bug_when>
    <thetext>Created attachment 298530
Patch

Last build was foiled by me testing on a case-insensitive file system...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265612</commentid>
    <comment_count>78</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 17:32:40 -0800</bug_when>
    <thetext>Attachment 298530 did not pass style-queue:


ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/config.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/crypto/win/CryptoDigestWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265647</commentid>
    <comment_count>79</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-01-10 18:38:56 -0800</bug_when>
    <thetext>(In reply to comment #73)
&gt; (In reply to comment #68)
&gt; &gt; &gt; Source/WebCore/Scripts/EnforcePALLayering.py:1
&gt; &gt; &gt; +# Copyright (C) 2017 Apple Inc. All rights reserved.
&gt; &gt; 
&gt; &gt; Not sure if you want a shebang line here or not. Just making a note of it.
&gt; 
&gt; It should have a shebang and executable permission set since it&apos;s intended
&gt; to be executed directly. Note that if it has a shebang, it shouldn&apos;t have
&gt; the .py extension.

The other python file already present in that directory, make-js-file-arrays.py, had a shebang so I wasn&apos;t sure what the convention was. Its currently being run through CMake so not sure if that makes a difference in terms of whether it should be there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265657</commentid>
    <comment_count>80</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-10 19:08:34 -0800</bug_when>
    <thetext>(In reply to comment #79)
&gt; The other python file already present in that directory,
&gt; make-js-file-arrays.py, had a shebang so I wasn&apos;t sure what the convention
&gt; was. Its currently being run through CMake so not sure if that makes a
&gt; difference in terms of whether it should be there.

It&apos;s just a matter of style, doesn&apos;t really matter, but if it&apos;s a script intended to be executed (rather than just imported into another python file) then I definitely prefer to make it executable and add a shebang. Then CMake has two options for how to execute it (via the python interpreter, or just by directly executing the script) for which I have no preference... except perhaps it matters on Windows?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265659</commentid>
    <comment_count>81</comment_count>
      <attachid>298530</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-10 19:20:54 -0800</bug_when>
    <thetext>Comment on attachment 298530
Patch

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

I think the next step now is a mail to webkit-dev. I like what I see, but this is such a major change it definitely requires discussion on list. In particular, I expect a thrilling argument over whether it should be a subdirectory of WebCore. ;)

Another thing I&apos;m worried about, which there&apos;s nothing we can do to avoid, is that if we&apos;re going to be moving files one by one from platform to PAL, it&apos;s going to have to be done only by Apple folks because of the nonsense XCode build files. :/

&gt; Source/WebCore/Scripts/EnforcePALLayering.py:1
&gt; +#!/usr/bin/env python

Ah well, you need to specify python2 or python3... otherwise you have no clue which python it&apos;s going to be executed in. On Arch this gets you python3, everywhere else it&apos;s python2.

If Mac *still* doesn&apos;t have python2 in PATH, which I hope is not the case, then there&apos;s no way to do it properly and we&apos;d need some configure replacement, which is definitely not worth messing with. So if that&apos;s the case, ignore my previous advice, unset the executable bit and remove the shebang. (I can&apos;t see in the patch file if this file is executable, do make sure it is if you have a shebang).

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:81
&gt; +#include &lt;PAL/crypto/CryptoDigest.h&gt;

WebKit style: includes of system headers (including everything outside of WebCore... i.e. including PAL) must come after includes of other headers. So all &quot;&quot; includes come before &lt;&gt; includes.

&gt; Source/WebCore/page/csp/ContentSecurityPolicy.cpp:47
&gt; +#include &lt;PAL/crypto/CryptoDigest.h&gt;

Ditto.

&gt; Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:38
&gt;  #include &quot;Logging.h&quot;
&gt; +#include &lt;PAL/crypto/CryptoDigest.h&gt;
&gt;  #include &quot;ResourceHandle.h&quot;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265683</commentid>
    <comment_count>82</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-10 22:32:59 -0800</bug_when>
    <thetext>(In reply to comment #81)
&gt; Comment on attachment 298530 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298530&amp;action=review
&gt; 
&gt; I think the next step now is a mail to webkit-dev. I like what I see, but
&gt; this is such a major change it definitely requires discussion on list. In
&gt; particular, I expect a thrilling argument over whether it should be a
&gt; subdirectory of WebCore. ;)

https://lists.webkit.org/pipermail/webkit-dev/2017-January/028619.html

&gt; 
&gt; Another thing I&apos;m worried about, which there&apos;s nothing we can do to avoid,
&gt; is that if we&apos;re going to be moving files one by one from platform to PAL,
&gt; it&apos;s going to have to be done only by Apple folks because of the nonsense
&gt; XCode build files. :/

I don&apos;t think this is true. Anybody with a Mac can run Xcode.

&gt; 
&gt; &gt; Source/WebCore/Scripts/EnforcePALLayering.py:1
&gt; &gt; +#!/usr/bin/env python
&gt; 
&gt; Ah well, you need to specify python2 or python3... otherwise you have no
&gt; clue which python it&apos;s going to be executed in. On Arch this gets you
&gt; python3, everywhere else it&apos;s python2.
&gt; 
&gt; If Mac *still* doesn&apos;t have python2 in PATH, which I hope is not the case,
&gt; then there&apos;s no way to do it properly and we&apos;d need some configure
&gt; replacement, which is definitely not worth messing with. So if that&apos;s the
&gt; case, ignore my previous advice, unset the executable bit and remove the
&gt; shebang. (I can&apos;t see in the patch file if this file is executable, do make
&gt; sure it is if you have a shebang).

I&apos;ll take the shebang out.

&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:81
&gt; &gt; +#include &lt;PAL/crypto/CryptoDigest.h&gt;
&gt; 
&gt; WebKit style: includes of system headers (including everything outside of
&gt; WebCore... i.e. including PAL) must come after includes of other headers. So
&gt; all &quot;&quot; includes come before &lt;&gt; includes.
&gt; 
&gt; &gt; Source/WebCore/page/csp/ContentSecurityPolicy.cpp:47
&gt; &gt; +#include &lt;PAL/crypto/CryptoDigest.h&gt;
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:38
&gt; &gt;  #include &quot;Logging.h&quot;
&gt; &gt; +#include &lt;PAL/crypto/CryptoDigest.h&gt;
&gt; &gt;  #include &quot;ResourceHandle.h&quot;
&gt; 
&gt; Ditto.

check-webkit-style tells me that it&apos;s wrong when I do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265684</commentid>
    <comment_count>83</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-10 22:40:26 -0800</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:81
&gt; &gt; &gt; +#include &lt;PAL/crypto/CryptoDigest.h&gt;
&gt; &gt; 
&gt; &gt; WebKit style: includes of system headers (including everything outside of
&gt; &gt; WebCore... i.e. including PAL) must come after includes of other headers. So
&gt; &gt; all &quot;&quot; includes come before &lt;&gt; includes.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/csp/ContentSecurityPolicy.cpp:47
&gt; &gt; &gt; +#include &lt;PAL/crypto/CryptoDigest.h&gt;
&gt; &gt; 
&gt; &gt; Ditto.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/network/soup/SoupNetworkSession.cpp:38
&gt; &gt; &gt;  #include &quot;Logging.h&quot;
&gt; &gt; &gt; +#include &lt;PAL/crypto/CryptoDigest.h&gt;
&gt; &gt; &gt;  #include &quot;ResourceHandle.h&quot;
&gt; &gt; 
&gt; &gt; Ditto.
&gt; 
&gt; check-webkit-style tells me that it&apos;s wrong when I do that.

Wait, never mind. I was just doing it wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265685</commentid>
    <comment_count>84</comment_count>
      <attachid>298555</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-10 22:43:26 -0800</bug_when>
    <thetext>Created attachment 298555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1265686</commentid>
    <comment_count>85</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-10 22:45:43 -0800</bug_when>
    <thetext>Attachment 298555 did not pass style-queue:


ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/crypto/CryptoDigest.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/config.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/crypto/win/CryptoDigestWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 8 in 30 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268297</commentid>
    <comment_count>86</comment_count>
      <attachid>299298</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-01-19 18:34:40 -0800</bug_when>
    <thetext>Created attachment 299298
PAL with suggested revisions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268298</commentid>
    <comment_count>87</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-19 18:38:36 -0800</bug_when>
    <thetext>Attachment 299298 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:26:  Use #pragma once instead of #ifndef for header guard.  [build/header_guard] [5]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:44:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/config.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/win/CryptoDigestWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 10 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268302</commentid>
    <comment_count>88</comment_count>
      <attachid>299299</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-01-19 18:52:02 -0800</bug_when>
    <thetext>Created attachment 299299
PAL with suggested revisions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268305</commentid>
    <comment_count>89</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-19 18:54:29 -0800</bug_when>
    <thetext>Attachment 299299 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/config.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/win/CryptoDigestWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 9 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268317</commentid>
    <comment_count>90</comment_count>
      <attachid>299302</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-01-19 19:15:43 -0800</bug_when>
    <thetext>Created attachment 299302
PAL with suggested revisions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268321</commentid>
    <comment_count>91</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-19 19:20:18 -0800</bug_when>
    <thetext>Attachment 299302 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/config.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/win/CryptoDigestWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 9 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268380</commentid>
    <comment_count>92</comment_count>
      <attachid>299327</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-19 23:41:16 -0800</bug_when>
    <thetext>Created attachment 299327
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268382</commentid>
    <comment_count>93</comment_count>
      <attachid>299329</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-19 23:43:09 -0800</bug_when>
    <thetext>Created attachment 299329
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268388</commentid>
    <comment_count>94</comment_count>
      <attachid>299330</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-20 00:28:23 -0800</bug_when>
    <thetext>Created attachment 299330
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268390</commentid>
    <comment_count>95</comment_count>
      <attachid>299332</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-20 00:34:18 -0800</bug_when>
    <thetext>Created attachment 299332
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268392</commentid>
    <comment_count>96</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-20 00:39:40 -0800</bug_when>
    <thetext>Attachment 299332 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/WebCore/PAL/config.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/win/CryptoDigestWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 10 in 35 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268394</commentid>
    <comment_count>97</comment_count>
      <attachid>299333</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-20 00:53:59 -0800</bug_when>
    <thetext>Created attachment 299333
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268395</commentid>
    <comment_count>98</comment_count>
      <attachid>299334</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-20 01:02:09 -0800</bug_when>
    <thetext>Created attachment 299334
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268396</commentid>
    <comment_count>99</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-20 01:07:22 -0800</bug_when>
    <thetext>Attachment 299333 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/WebCore/PAL/config.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/win/CryptoDigestWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 10 in 35 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268397</commentid>
    <comment_count>100</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-20 01:08:46 -0800</bug_when>
    <thetext>Attachment 299334 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
ERROR: Source/WebCore/PAL/config.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/win/CryptoDigestWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 10 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268458</commentid>
    <comment_count>101</comment_count>
      <attachid>299352</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-20 10:20:55 -0800</bug_when>
    <thetext>Created attachment 299352
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268460</commentid>
    <comment_count>102</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-20 10:23:35 -0800</bug_when>
    <thetext>Attachment 299352 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/config.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/win/CryptoDigestWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 9 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268491</commentid>
    <comment_count>103</comment_count>
      <attachid>299352</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-01-20 11:42:06 -0800</bug_when>
    <thetext>Comment on attachment 299352
Patch

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

&gt; Source/WebCore/PAL/pal/CMakeLists.txt:1
&gt; +set(PAL_HEADERS

We shouldn&apos;t need to maintain a list of all the headers in PAL.

&gt; Source/WebCore/PAL/pal/CMakeLists.txt:10
&gt; +    &quot;${PAL_DIR}&quot;
&gt; +    &quot;${PAL_DIR}/pal&quot;

One of these ought to be unnecessary.

&gt; Source/WebCore/PAL/pal/CMakeLists.txt:23
&gt; +if (MSVC)

I hope this isn&apos;t necessary.

&gt; CMakeLists.txt:117
&gt; +set(PAL_LIBRARY_TYPE STATIC)

This file isn&apos;t used in the internal Windows build.  This line should probably be in PlatformWin.cmake, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268511</commentid>
    <comment_count>104</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-01-20 12:07:35 -0800</bug_when>
    <thetext>(In reply to comment #103)
&gt; Comment on attachment 299352 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=299352&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/PAL/pal/CMakeLists.txt:1
&gt; &gt; +set(PAL_HEADERS
&gt; 
&gt; We shouldn&apos;t need to maintain a list of all the headers in PAL.

I was following around with what WTF was doing since the ask was to make it look like that.

If its not there then its not present in Visual Studio projects. In WebCore there are zero headers present in the project file generated. I&apos;m not sure if that translates to XCode projects using CMake.

Fine with removing if that&apos;s a problem.

&gt; &gt; Source/WebCore/PAL/pal/CMakeLists.txt:10
&gt; &gt; +    &quot;${PAL_DIR}&quot;
&gt; &gt; +    &quot;${PAL_DIR}/pal&quot;
&gt; 
&gt; One of these ought to be unnecessary.

The config.h is in the root ${PAL_DIR} which is consistent with WTF.

The current Source/WebCore/platform has files in the root. The ${PAL_DIR}/pal include isn&apos;t necessary right this second but it should be as we go along. That is unless we want to move everything to be in a sub-directory when moving things over.

&gt; &gt; Source/WebCore/PAL/pal/CMakeLists.txt:23
&gt; &gt; +if (MSVC)
&gt; 
&gt; I hope this isn&apos;t necessary.

Calling /tools/scripts/auto-version.pl is being used by all the MSVC builds. If that shouldn&apos;t be happening I&apos;ll remove.

&gt; &gt; CMakeLists.txt:117
&gt; &gt; +set(PAL_LIBRARY_TYPE STATIC)
&gt; 
&gt; This file isn&apos;t used in the internal Windows build.  This line should
&gt; probably be in PlatformWin.cmake, too.

Will go ahead and add that. Didn&apos;t know that was the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268701</commentid>
    <comment_count>105</comment_count>
      <attachid>299418</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-01-20 18:49:37 -0800</bug_when>
    <thetext>Created attachment 299418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268702</commentid>
    <comment_count>106</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-20 18:51:51 -0800</bug_when>
    <thetext>Attachment 299418 did not pass style-queue:


ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/pal/crypto/CryptoDigest.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/PAL/config.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/config.h:53:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/gnutls/CryptoDigestGnuTLS.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/PAL/pal/crypto/win/CryptoDigestWin.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 9 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268879</commentid>
    <comment_count>107</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-01-22 06:37:23 -0800</bug_when>
    <thetext>Very happy with this. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268889</commentid>
    <comment_count>108</comment_count>
      <attachid>299418</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-22 09:26:06 -0800</bug_when>
    <thetext>Comment on attachment 299418
Patch

Clearing flags on attachment: 299418

Committed r211027: &lt;http://trac.webkit.org/changeset/211027&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268890</commentid>
    <comment_count>109</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-22 09:26:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250034</attachid>
            <date>2015-04-02 20:40:37 -0700</date>
            <delta_ts>2015-04-03 07:36:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20150402203952.patch</filename>
            <type>text/plain</type>
            <size>17643</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV0FGTC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV0FGTC9DaGFuZ2VMb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMThiMWQxMWZjODg2ZDc0
NzRlZjY2NDJkNzk3OWZjMmVjOGY4NDc3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XQUZM
L0NoYW5nZUxvZwpAQCAtMCwwICsxLDIzIEBACisyMDE1LTA0LTAyICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhlIFdlYktp
dCBBYnN0cmFjdGlvbiBGcmFtZXdvcmsgTGF5ZXIgKFdBRkwpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgdG9wLWxldmVsIGZv
bGRlciBhbmQgc3RhdGljIGxpYnJhcnkuIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUKKyAgICAgICAg
dGhlIGRlc3RpbmF0aW9uIGZvciBjb2RlIHRoYXQgY3VycmVudGx5IHJlc2lkZXMgaW4gV2ViQ29y
ZS9wbGF0Zm9ybS4gQ29kZQorICAgICAgICB3aWxsIGJlIG1vdmVkIGZyb20gdGhhdCBmb2xkZXIg
aW50byBXQUZMIGZpbGUgYnkgZmlsZS4gU2VwYXJhdGluZyB0aGlzCisgICAgICAgIHBsYXRmb3Jt
IGNvZGUgaW50byBpdHMgb3duIHN0YXRpYyBsaWJyYXJ5IGVuZm9yY2VzIGxheWVyaW5nLCBhcyB3
ZWxsIGFzCisgICAgICAgIGVuY291cmFnZXMvYWlkcyB1bml0IHRlc3Rpbmcgb2YgdGhpcyBwbGF0
Zm9ybSBjb2RlLgorCisgICAgICAgIFRoaXMgY29tbWl0IG9ubHkgY3JlYXRlcyBhIHNpbmdsZSBz
eW1ib2wgd2hpY2ggaXMgbm90IHJlcXVpcmVkIHRvIGJ1aWxkCisgICAgICAgIFdlYktpdC4gVGhl
IHJlYXNvbiBmb3IgdGhpcyBpcyBzbyB0aGF0IHdlIGNhbiBnZXQgYWxsIGJ1aWxkIGlzc3VlcyBp
cm9uZWQKKyAgICAgICAgb3V0IGJlZm9yZSByZXF1aXJpbmcgV0FGTC4KKworICAgICAgICBGb3Ig
bW9yZSBpbmZvcm1hdGlvbiwgc2VlCisgICAgICAgIGh0dHBzOi8vbGlzdHMud2Via2l0Lm9yZy9w
aXBlcm1haWwvd2Via2l0LWRldi8yMDE1LU1hcmNoLzAyNzMwMy5odG1sCisKKyAgICAgICAgKiBX
QUZMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkLgorICAgICAgICAqIGdyYXBoaWNz
L0Zvby5jcHA6IEFkZGVkLgorICAgICAgICAoZm9vKTogUGxhY2Vob2xkZXIgc3ltYm9sLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGM4NDk2YTgzNGVjYTI5YzY2NDgyZjAxZDUxMTZmZjZkYTM2ZWM4ZWIuLjAxYWE4
MGViOTI4YjlhMWEzOTU5NTcwNjM5MzUxZGNhMThlNzczZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxNS0wNC0wMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBXZWJLaXQgQWJzdHJhY3Rpb24gRnJhbWV3
b3JrIExheWVyIChXQUZMKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERlcGVuZCBvbiBp
dC4KKwogMjAxNS0wNC0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZDogUmVhcHBsaWVkIENoYW5nZSBhZnRlciByb2xsb3V0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dBRkwvV0FGTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dBRkwvV0FGTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4NDM5MDY5
ZGEwY2FjMWRiYjEyMDVhODYzZWE4ZTJlNTdiNmE3OTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV0FGTC9XQUZMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTAsMCArMSwyNDAgQEAK
Ky8vICEkKlVURjgqJCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9IHsKKwl9
OworCW9iamVjdFZlcnNpb24gPSA0NjsKKwlvYmplY3RzID0geworCisvKiBCZWdpbiBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLworCQlDMjE0RDlGMzFBQ0UzNTc5MDAxQzgwQkEgLyogRm9vLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTREOUYyMUFD
RTM1NzkwMDFDODBCQSAvKiBGb28uY3BwICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0
aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQlDMjE0RDlF
QTFBQ0UzNEQ2MDAxQzgwQkEgLyogbGliV0FGTC5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBsaWJXQUZMLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUMy
MTREOUYyMUFDRTM1NzkwMDFDODBCQSAvKiBGb28uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRm9vLmNwcDsgcGF0aCA9IGdyYXBoaWNzL0Zvby5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisK
Ky8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJQzIxNEQ5RTcx
QUNFMzRENjAwMUM4MEJBIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxl
cyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJl
Z2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJQzIxNEQ5RTExQUNFMzRENjAwMUM4MEJBID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMjE0RDlGMTFBQ0UzNTNG
MDAxQzgwQkEgLyogZ3JhcGhpY3MgKi8sCisJCQkJQzIxNEQ5RUIxQUNFMzRENjAwMUM4MEJBIC8q
IFByb2R1Y3RzICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJ
CUMyMTREOUVCMUFDRTM0RDYwMDFDODBCQSAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzIxNEQ5RUExQUNFMzRENjAwMUM4MEJBIC8q
IGxpYldBRkwuYSAqLywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQlDMjE0RDlGMTFBQ0UzNTNGMDAxQzgwQkEgLyogZ3JhcGhp
Y3MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMyMTRE
OUYyMUFDRTM1NzkwMDFDODBCQSAvKiBGb28uY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBncmFw
aGljczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAg
c2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJ
CUMyMTREOUU4MUFDRTM0RDYwMDFDODBCQSAvKiBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJY
SGVhZGVyc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCX07CisvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBC
ZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQlDMjE0RDlFOTFBQ0UzNEQ2MDAxQzgw
QkEgLyogV0FGTCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSBDMjE0RDlFRTFBQ0UzNEQ2MDAxQzgwQkEgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIldBRkwiICovOworCQkJYnVpbGRQaGFz
ZXMgPSAoCisJCQkJQzIxNEQ5RTYxQUNFMzRENjAwMUM4MEJBIC8qIFNvdXJjZXMgKi8sCisJCQkJ
QzIxNEQ5RTcxQUNFMzRENjAwMUM4MEJBIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJQzIxNEQ5RTgx
QUNFMzRENjAwMUM4MEJBIC8qIEhlYWRlcnMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgK
KwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IFdBRkw7CisJCQlw
cm9kdWN0TmFtZSA9IFdBRkw7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gQzIxNEQ5RUExQUNFMzRE
NjAwMUM4MEJBIC8qIGxpYldBRkwuYSAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5w
cm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdl
dCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQlDMjE0RDlF
MjFBQ0UzNEQ2MDAxQzgwQkEgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQ
cm9qZWN0OworCQkJYXR0cmlidXRlcyA9IHsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDYyMDsK
KwkJCQlPUkdBTklaQVRJT05OQU1FID0gY29tLmFwcGxlOworCQkJCVRhcmdldEF0dHJpYnV0ZXMg
PSB7CisJCQkJCUMyMTREOUU5MUFDRTM0RDYwMDFDODBCQSA9IHsKKwkJCQkJCUNyZWF0ZWRPblRv
b2xzVmVyc2lvbiA9IDYuMjsKKwkJCQkJfTsKKwkJCQl9OworCQkJfTsKKwkJCWJ1aWxkQ29uZmln
dXJhdGlvbkxpc3QgPSBDMjE0RDlFNTFBQ0UzNEQ2MDAxQzgwQkEgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXQUZMIiAqLzsKKwkJCWNvbXBhdGliaWxpdHlWZXJz
aW9uID0gIlhjb2RlIDMuMiI7CisJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CisJCQlo
YXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwK
KwkJCSk7CisJCQltYWluR3JvdXAgPSBDMjE0RDlFMTFBQ0UzNEQ2MDAxQzgwQkE7CisJCQlwcm9k
dWN0UmVmR3JvdXAgPSBDMjE0RDlFQjFBQ0UzNEQ2MDAxQzgwQkEgLyogUHJvZHVjdHMgKi87CisJ
CQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJCXRhcmdldHMg
PSAoCisJCQkJQzIxNEQ5RTkxQUNFMzRENjAwMUM4MEJBIC8qIFdBRkwgKi8sCisJCQkpOworCQl9
OworLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhTb3VyY2VzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCUMyMTREOUU2MUFDRTM0RDYwMDFDODBCQSAvKiBTb3VyY2Vz
ICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQzIxNEQ5RjMxQUNFMzU3OTAwMUM4
MEJBIC8qIEZvby5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8K
KwkJQzIxNEQ5RUMxQUNFMzRENjAwMUM4MEJBIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFS
Q0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJn
bnUrKzB4IjsKKwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5HX0VO
QUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJ
CQlDTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTlNU
QU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ESVJFQ1RfT0JKQ19JU0FfVVNB
R0UgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNM
QU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZF
UlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7
CisJCQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
X0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5P
OworCQkJCUVOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOworCQkJCUdDQ19DX0xBTkdV
QUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJ
R0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklU
SU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOwor
CQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJCQkJR0NDX1dBUk5fNjRfVE9f
MzJfQklUX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUg
PSBZRVNfRVJST1I7CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CisJCQkJR0ND
X1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJM
RSA9IFlFUzsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC4xMDsKKwkJCQlNVExf
RU5BQkxFX0RFQlVHX0lORk8gPSBZRVM7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJ
CQlTREtST09UID0gbWFjb3N4OworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJQzIx
NEQ5RUQxQUNFMzRENjAwMUM4MEJBIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9V
U0VSX1BBVEhTID0gTk87CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsr
MHgiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7CisJCQkJQ0xBTkdfRU5BQkxF
X01PRFVMRVMgPSBZRVM7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfQVJDID0gWUVTOworCQkJCUNM
QU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09OU1RBTlRf
Q09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9
IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7CisJCQkJQ0xBTkdf
V0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lP
TiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJ
CQlDTEFOR19XQVJOX1VOUkVBQ0hBQkxFX0NPREUgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9fRFVQ
TElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJ
CQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJRU5B
QkxFX05TX0FTU0VSVElPTlMgPSBOTzsKKwkJCQlFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9
IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19XQVJO
XzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVS
Tl9UWVBFID0gWUVTX0VSUk9SOworCQkJCUdDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZ
RVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFU19BR0dSRVNTSVZFOwor
CQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuMTA7CisJ
CQkJTVRMX0VOQUJMRV9ERUJVR19JTkZPID0gTk87CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJ
CX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJQzIxNEQ5RUYxQUNFMzRENjAwMUM4MEJB
IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGliOworCQkJCVBST0RVQ1Rf
TkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9Owor
CQlDMjE0RDlGMDFBQ0UzNEQ2MDAxQzgwQkEgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFWEVDVVRBQkxF
X1BSRUZJWCA9IGxpYjsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJ
fTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9u
IHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJ
CUMyMTREOUU1MUFDRTM0RDYwMDFDODBCQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWFByb2plY3QgIldBRkwiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsK
KwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJQzIxNEQ5RUMxQUNFMzRENjAwMUM4MEJB
IC8qIERlYnVnICovLAorCQkJCUMyMTREOUVEMUFDRTM0RDYwMDFDODBCQSAvKiBSZWxlYXNlICov
LAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUMyMTREOUVFMUFDRTM0RDYw
MDFDODBCQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAi
V0FGTCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25m
aWd1cmF0aW9ucyA9ICgKKwkJCQlDMjE0RDlFRjFBQ0UzNEQ2MDAxQzgwQkEgLyogRGVidWcgKi8s
CisJCQkJQzIxNEQ5RjAxQUNFMzRENjAwMUM4MEJBIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rp
b24gKi8KKwl9OworCXJvb3RPYmplY3QgPSBDMjE0RDlFMjFBQ0UzNEQ2MDAxQzgwQkEgLyogUHJv
amVjdCBvYmplY3QgKi87Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV0FGTC9ncmFwaGljcy9Gb28u
Y3BwIGIvU291cmNlL1dBRkwvZ3JhcGhpY3MvRm9vLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmYxOWM5MDMz
MTIzNDhlNTRiMTJiMjVlNzg0OGJlYWY0NDdhZTJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dBRkwvZ3JhcGhpY3MvRm9vLmNwcApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworaW50
IGZvbyhpbnQsIGNoYXIpCit7CisgICAgcmV0dXJuIDE3OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBlZTZjNTQ0NTM2ZDA0
OGQyM2EyZGUwYjZkNjJmMmYwZjA1OGM2YzcuLjlhZjEyYWRmZWI4ZWExOTg4YmRmMDlkZDg0YjA4
NjE0ZTI3MWQ1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTU2MTMsNiArNTYxMyw3IEBACiAJCUMwRjJBNDQxMTM4NjlBQUIw
MDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29y
LnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMx
MDVEQTYyMEYzQUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MTBGM0FB
NjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovOyB9OwogCQlDMTA1
REE2NDBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMDVEQTYzMEYzQUE2QjgwMDFE
RDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oICovOyB9OworCQlDMjE0RDlGNTFBQ0UzNUI0
MDAxQzgwQkEgLyogbGliV0FGTC5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzIxNEQ5RjQxQUNFMzVCNDAwMUM4MEJBIC8qIGxpYldBRkwuYSAqLzsg
fTsKIAkJQzMzMEEyMjMxM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzMEEyMjExM0VDMTk2QjAw
MDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUMzM0VFNUM0MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2th
YmxlV2l0aEtleUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMzNFRTVDMjE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdp
dGhLZXlJbnB1dFR5cGUuY3BwICovOyB9OwogCQlDMzNFRTVDNTE0RkI0OTYxMDAwMjA5NUEgLyog
QmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzM0VFNUMzMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xp
Y2thYmxlV2l0aEtleUlucHV0VHlwZS5oICovOyB9OwpAQCAtMTMxMzksNiArMTMxNDAsNyBAQAog
CQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsg
bmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29yLnBtOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTA1REE2MTBGM0FBNjhGMDAxREQ0NEYgLyog
VGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMTA1REE2MzBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dEVuY29kaW5nRGV0ZWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIxNEQ5RjQxQUNFMzVCNDAwMUM4
MEJBIC8qIGxpYldBRkwuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJXQUZMLmE7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCUMyNDY4NTEzMUExNDhFMTgwMDgxMTc5MiAvKiBDb3JlR3Jh
cGhpY3NTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ29yZUdyYXBoaWNz
U1BJLmg7IHBhdGggPSBjZy9Db3JlR3JhcGhpY3NTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzJDNENCMUQxNjFBMTMxMjAwRDIxNERBIC8qIFdlYlNhZmVJbmNyZW1lbnRhbFN3
ZWVwZXJJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViU2FmZUluY3Jl
bWVudGFsU3dlZXBlcklPUy5oOyBwYXRoID0gaW9zL1dlYlNhZmVJbmNyZW1lbnRhbFN3ZWVwZXJJ
T1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzMzMEEyMjExM0VDMTk2QjAwMDBC
NDVCIC8qIENvbG9yQ2hvb3Nlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b2xvckNob29zZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NDg5LDYgKzE0
NDkxLDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCUMyMTREOUY1MUFDRTM1QjQw
MDFDODBCQSAvKiBsaWJXQUZMLmEgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxMjEyQjA0
OEEzMDBFRDk4QzYgLyogQWNjZWxlcmF0ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJ
CQlGRDJEQkYxMzEyQjA0OEEzMDBFRDk4QzYgLyogQXVkaW9Ub29sYm94LmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjE1MTJCMDQ4QTMwMEVEOThDNiAvKiBDb3JlQXVkaW8u
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCkBAIC0xNDkxOCw2ICsxNDkyMSw3IEBACiAJCTA4
NjdENjlBRkU4NDAyOEZDMDJBQUMwNyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMjE0RDlGNDFBQ0UzNUI0MDAxQzgwQkEgLyog
bGliV0FGTC5hICovLAogCQkJCUZEMkRCRjBFMTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVyYXRl
LmZyYW1ld29yayAqLywKIAkJCQlGRDJEQkYwRjEyQjA0OEEzMDBFRDk4QzYgLyogQXVkaW9Ub29s
Ym94LmZyYW1ld29yayAqLywKIAkJCQlGRDJEQkYxMTEyQjA0OEEzMDBFRDk4QzYgLyogQ29yZUF1
ZGlvLmZyYW1ld29yayAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBkNzA4N2MxYzYxNWVmNmM2OWZjYTkwZmRjMmE2OWNiN2NmOTlmZjk4Li4x
MDhkOWE3ZmIxM2Q0ZDMxMDhkYTExYTUzNjllYTMyMzg4MjEyYjgwIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUt
MDQtMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2luZyB0aGUgV2ViS2l0IEFic3RyYWN0aW9uIEZyYW1ld29yayBMYXllciAoV0FG
TCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzM1
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2Ny
aXB0cy9idWlsZC13ZWJraXQ6IEFkZCBpdCB0byBidWlsZC13ZWJraXQuCisKIDIwMTUtMDQtMDEg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgZmlsdGVyLXdl
YmtpdC1idWlsZCBzaG91bGQgZmlsdGVyIG91dCAiY3JlYXRlZCBieSBhbiB1bnN1cHBvcnRlZCBY
Q0RlcGVuZGVuY3lHcmFwaCBidWlsZCIgbGluZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
YnVpbGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggNjRkNWVmYzI2
YjZiOGFhZDQ2MmI4YjMzOGVkNmI5NDlmY2M1ODFmZS4uNDVlMDM3YmU3ZDRlMDgwZmZhODU5M2Rm
ZTYwOWNjNTIwYWZmMjY1ZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQK
KysrIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTE0Myw3ICsxNDMsNyBAQCBzZXRD
b25maWd1cmF0aW9uKCk7CiBteSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKIAogIyBDaGVj
ayB0aGF0IGFsbCB0aGUgcHJvamVjdCBkaXJlY3RvcmllcyBhcmUgdGhlcmUuCi1teSBAcHJvamVj
dHMgPSAoIlNvdXJjZS9KYXZhU2NyaXB0Q29yZSIsICJTb3VyY2UvV2ViQ29yZSIsICJTb3VyY2Uv
V2ViS2l0Iik7CitteSBAcHJvamVjdHMgPSAoIlNvdXJjZS9KYXZhU2NyaXB0Q29yZSIsICJTb3Vy
Y2UvV0FGTCIsICJTb3VyY2UvV2ViQ29yZSIsICJTb3VyY2UvV2ViS2l0Iik7CiAKICMgQnVpbGQg
V1RGIGFzIGEgc2VwYXJhdGUgc3RhdGljIGxpYnJhcnkgb24gcG9ydHMgd2hpY2ggc3VwcG9ydCBp
dC4KIHNwbGljZSBAcHJvamVjdHMsIDAsIDAsICJTb3VyY2UvV1RGIiBpZiBpc0FwcGxlTWFjV2Vi
S2l0KCkgb3IgaXNBcHBsZVdpbldlYktpdCgpIG9yIGlzV2luQ2Fpcm8oKTsKZGlmZiAtLWdpdCBh
L0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2YTE3NGE2ODdjMTYzNjRmZDMxN2JiMDliMzUx
YzU3YzY0ODU1YzdjLi5mMWIwMDUwMTQ5N2ExMTY2NWUyZTlhMjAwZTdlNzQxODI1ZmIwNmVlIDEw
MDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIw
MTUtMDQtMDIgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbnRyb2R1Y2luZyB0aGUgV2ViS2l0IEFic3RyYWN0aW9uIEZyYW1ld29yayBMYXllciAo
V0FGTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViS2l0Lnhjd29ya3NwYWNlL2NvbnRlbnRzLnhjd29ya3NwYWNlZGF0YTogQWRkIGl0IHRvIHRo
ZSB3b3Jrc3BhY2UuCisKIDIwMTUtMDQtMDEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcm9ncmVzcyB0b3dhcmRzIENNYWtlIG9uIFdpbmRv
d3MgYW5kIE1hYy4KZGlmZiAtLWdpdCBhL1dlYktpdC54Y3dvcmtzcGFjZS9jb250ZW50cy54Y3dv
cmtzcGFjZWRhdGEgYi9XZWJLaXQueGN3b3Jrc3BhY2UvY29udGVudHMueGN3b3Jrc3BhY2VkYXRh
CmluZGV4IDUzNTNlYzNhZmI3Y2Y0NjVkMjVkNjc1NzMwYmI5OTI0NzZkODQxMTYuLmUyNGM5ODg4
MTZhZGU3NDNmY2Y3ZmNkMDU5M2QxMDc1NTJkNmYxN2UgMTAwNjQ0Ci0tLSBhL1dlYktpdC54Y3dv
cmtzcGFjZS9jb250ZW50cy54Y3dvcmtzcGFjZWRhdGEKKysrIGIvV2ViS2l0Lnhjd29ya3NwYWNl
L2NvbnRlbnRzLnhjd29ya3NwYWNlZGF0YQpAQCAtMiw2ICsyLDkgQEAKIDxXb3Jrc3BhY2UKICAg
IHZlcnNpb24gPSAiMS4wIj4KICAgIDxGaWxlUmVmCisgICAgICBsb2NhdGlvbiA9ICJncm91cDpT
b3VyY2UvV0FGTC9XQUZMLnhjb2RlcHJvaiI+CisgICA8L0ZpbGVSZWY+CisgICA8RmlsZVJlZgog
ICAgICAgbG9jYXRpb24gPSAiZ3JvdXA6U291cmNlL2JtYWxsb2MvYm1hbGxvYy54Y29kZXByb2oi
PgogICAgPC9GaWxlUmVmPgogICAgPEZpbGVSZWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250070</attachid>
            <date>2015-04-03 07:36:53 -0700</date>
            <delta_ts>2015-04-03 17:27:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20150403073607.patch</filename>
            <type>text/plain</type>
            <size>17614</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV0FGTC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV0FGTC9DaGFuZ2VMb2cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNiNzgwMzhjNDJlZGRl
NTk5MjQzYjZkZDllZjE2YTc0ZmZlNTUwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XQUZM
L0NoYW5nZUxvZwpAQCAtMCwwICsxLDIzIEBACisyMDE1LTA0LTAyICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhlIFdlYkNv
cmUgQWJzdHJhY3Rpb24gRnJhbWV3b3JrIExheWVyIChXQUZMKQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3IHRvcC1sZXZlbCBm
b2xkZXIgYW5kIHN0YXRpYyBsaWJyYXJ5LiBUaGlzIGlzIGludGVuZGVkIHRvIGJlCisgICAgICAg
IHRoZSBkZXN0aW5hdGlvbiBmb3IgY29kZSB0aGF0IGN1cnJlbnRseSByZXNpZGVzIGluIFdlYkNv
cmUvcGxhdGZvcm0uIENvZGUKKyAgICAgICAgd2lsbCBiZSBtb3ZlZCBmcm9tIHRoYXQgZm9sZGVy
IGludG8gV0FGTCBmaWxlIGJ5IGZpbGUuIFNlcGFyYXRpbmcgdGhpcworICAgICAgICBwbGF0Zm9y
bSBjb2RlIGludG8gaXRzIG93biBzdGF0aWMgbGlicmFyeSBlbmZvcmNlcyBsYXllcmluZywgYXMg
d2VsbCBhcworICAgICAgICBlbmNvdXJhZ2VzL2FpZHMgdW5pdCB0ZXN0aW5nIG9mIHRoaXMgcGxh
dGZvcm0gY29kZS4KKworICAgICAgICBUaGlzIGNvbW1pdCBvbmx5IGNyZWF0ZXMgYSBzaW5nbGUg
c3ltYm9sIHdoaWNoIGlzIG5vdCByZXF1aXJlZCB0byBidWlsZAorICAgICAgICBXZWJLaXQuIFRo
ZSByZWFzb24gZm9yIHRoaXMgaXMgc28gdGhhdCB3ZSBjYW4gZ2V0IGFsbCBidWlsZCBpc3N1ZXMg
aXJvbmVkCisgICAgICAgIG91dCBiZWZvcmUgcmVxdWlyaW5nIFdBRkwuCisKKyAgICAgICAgRm9y
IG1vcmUgaW5mb3JtYXRpb24sIHNlZQorICAgICAgICBodHRwczovL2xpc3RzLndlYmtpdC5vcmcv
cGlwZXJtYWlsL3dlYmtpdC1kZXYvMjAxNS1NYXJjaC8wMjczMDMuaHRtbAorCisgICAgICAgICog
V0FGTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBncmFwaGlj
cy9Gb28uY3BwOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6IFBsYWNlaG9sZGVyIHN5bWJvbC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxMjcyNjhiZDcxNzIyYTAzZjA0YzQ1ODJlMDNjM2JkNjM4NzcyZjI0Li41YmQ2
ZTVkMmM3YjMwMzkxZDUwYzUzZjU1NTFlMWExNzJjM2EwODFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMTUtMDQtMDMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxl
LmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgV2ViQ29yZSBBYnN0cmFjdGlvbiBGcmFt
ZXdvcmsgTGF5ZXIgKFdBRkwpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGVwZW5kIG9u
IGl0LgorCiAyMDE1LTA0LTAzICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCBmaXhpbmcgQ2xhbmcgYnVpbGRzIG9mIHRoZSBHVEsgcG9y
dCBvbiBMaW51eC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XQUZML1dBRkwueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XQUZML1dBRkwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wODQzOTA2OWRhMGNhYzFkYmIxMjA1YTg2M2VhOGUyZTU3YjZhNzk5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dBRkwvV0FGTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0wLDAgKzEsMjQwIEBACisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAx
OworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJzaW9uID0gNDY7CisJb2JqZWN0cyA9IHsK
KworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJQzIxNEQ5RjMxQUNFMzU3OTAw
MUM4MEJBIC8qIEZvby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjE0RDlGMjFBQ0UzNTc5MDAxQzgwQkEgLyogRm9vLmNwcCAqLzsgfTsKKy8qIEVu
ZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KKwkJQzIxNEQ5RUExQUNFMzRENjAwMUM4MEJBIC8qIGxpYldBRkwuYSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5j
bHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliV0FGTC5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQlDMjE0RDlGMjFBQ0UzNTc5MDAxQzgwQkEgLyogRm9vLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEZvby5jcHA7IHBhdGggPSBncmFwaGlj
cy9Gb28uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyogRW5kIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0
aW9uICovCisJCUMyMTREOUU3MUFDRTM0RDYwMDFDODBCQSAvKiBGcmFtZXdvcmtzICovID0gewor
CQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCUMyMTREOUUxMUFD
RTM0RDYwMDFDODBCQSA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJQzIxNEQ5RjExQUNFMzUzRjAwMUM4MEJBIC8qIGdyYXBoaWNzICovLAorCQkJCUMyMTREOUVC
MUFDRTM0RDYwMDFDODBCQSAvKiBQcm9kdWN0cyAqLywKKwkJCSk7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworCQlDMjE0RDlFQjFBQ0UzNEQ2MDAxQzgwQkEgLyogUHJvZHVjdHMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMyMTREOUVB
MUFDRTM0RDYwMDFDODBCQSAvKiBsaWJXQUZMLmEgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1
Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzIxNEQ5RjExQUNFMzUz
RjAwMUM4MEJBIC8qIGdyYXBoaWNzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQlDMjE0RDlGMjFBQ0UzNTc5MDAxQzgwQkEgLyogRm9vLmNwcCAqLywKKwkJ
CSk7CisJCQluYW1lID0gZ3JhcGhpY3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLworCQlDMjE0RDlFODFBQ0UzNEQ2MDAxQzgwQkEgLyogSGVhZGVycyAq
LyA9IHsKKwkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJQzIx
NEQ5RTkxQUNFMzRENjAwMUM4MEJBIC8qIFdBRkwgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVU
YXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gQzIxNEQ5RUUxQUNFMzRENjAwMUM4
MEJBIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXQUZM
IiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCUMyMTREOUU2MUFDRTM0RDYwMDFDODBCQSAv
KiBTb3VyY2VzICovLAorCQkJCUMyMTREOUU3MUFDRTM0RDYwMDFDODBCQSAvKiBGcmFtZXdvcmtz
ICovLAorCQkJCUMyMTREOUU4MUFDRTM0RDYwMDFDODBCQSAvKiBIZWFkZXJzICovLAorCQkJKTsK
KwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJ
CW5hbWUgPSBXQUZMOworCQkJcHJvZHVjdE5hbWUgPSBXQUZMOworCQkJcHJvZHVjdFJlZmVyZW5j
ZSA9IEMyMTREOUVBMUFDRTM0RDYwMDFDODBCQSAvKiBsaWJXQUZMLmEgKi87CisJCQlwcm9kdWN0
VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKKy8q
IEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KKwkJQzIxNEQ5RTIxQUNFMzRENjAwMUM4MEJBIC8qIFByb2plY3Qgb2JqZWN0ICov
ID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFVw
Z3JhZGVDaGVjayA9IDA2MjA7CisJCQkJT1JHQU5JWkFUSU9OTkFNRSA9IGNvbS5hcHBsZTsKKwkJ
CQlUYXJnZXRBdHRyaWJ1dGVzID0geworCQkJCQlDMjE0RDlFOTFBQ0UzNEQ2MDAxQzgwQkEgPSB7
CisJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSA2LjI7CisJCQkJCX07CisJCQkJfTsKKwkJ
CX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gQzIxNEQ5RTUxQUNFMzRENjAwMUM4MEJB
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV0FGTCIgKi87CisJ
CQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRSZWdp
b24gPSBFbmdsaXNoOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7CisJCQlrbm93blJl
Z2lvbnMgPSAoCisJCQkJZW4sCisJCQkpOworCQkJbWFpbkdyb3VwID0gQzIxNEQ5RTExQUNFMzRE
NjAwMUM4MEJBOworCQkJcHJvZHVjdFJlZkdyb3VwID0gQzIxNEQ5RUIxQUNFMzRENjAwMUM4MEJB
IC8qIFByb2R1Y3RzICovOworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RSb290
ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCUMyMTREOUU5MUFDRTM0RDYwMDFDODBCQSAvKiBX
QUZMICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyog
QmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQlDMjE0RDlFNjFBQ0UzNEQ2
MDAxQzgwQkEgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNl
OworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUMy
MTREOUYzMUFDRTM1NzkwMDFDODBCQSAvKiBGb28uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQg
UEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmln
dXJhdGlvbiBzZWN0aW9uICovCisJCUMyMTREOUVDMUFDRTM0RDYwMDFDODBCQSAvKiBEZWJ1ZyAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19DWFhfTEFO
R1VBR0VfU1RBTkRBUkQgPSAiZ251KysweCI7CisJCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAibGli
YysrIjsKKwkJCQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVf
T0JKQ19BUkMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
RElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fRU1QVFlf
Qk9EWSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19ST09U
X0NMQVNTID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNP
UFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlF
UzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19EWU5BTUlD
X05PX1BJQyA9IE5POworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19Q
UkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5o
ZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POwor
CQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJO
X0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VSUk9SOworCQkJCUdDQ19XQVJOX1VOREVDTEFSRURf
U0VMRUNUT1IgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFU19B
R0dSRVNTSVZFOworCQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VU
ID0gMTAuMTA7CisJCQkJTVRMX0VOQUJMRV9ERUJVR19JTkZPID0gWUVTOworCQkJCU9OTFlfQUNU
SVZFX0FSQ0ggPSBZRVM7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCX07CisJCQluYW1lID0g
RGVidWc7CisJCX07CisJCUMyMTREOUVEMUFDRTM0RDYwMDFDODBCQSAvKiBSZWxlYXNlICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUNMQU5HX0NYWF9MQU5HVUFH
RV9TVEFOREFSRCA9ICJnbnUrKzB4IjsKKwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysi
OworCQkJCUNMQU5HX0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpD
X0FSQyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ESVJF
Q1RfT0JKQ19JU0FfVVNBR0UgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZ
ID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xB
U1MgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IE5POworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13
aXRoLWRzeW0iOworCQkJCUVOQUJMRV9OU19BU1NFUlRJT05TID0gTk87CisJCQkJRU5BQkxFX1NU
UklDVF9PQkpDX01TR1NFTkQgPSBZRVM7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBn
bnU5OTsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlH
Q0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKKwkJCQlHQ0NfV0FSTl9VTkRF
Q0xBUkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1Mg
PSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CisJ
CQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5U
X1RBUkdFVCA9IDEwLjEwOworCQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9IE5POworCQkJCVNE
S1JPT1QgPSBtYWNvc3g7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUMyMTRE
OUVGMUFDRTM0RDYwMDFDODBCQSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFWEVDVVRBQkxFX1BSRUZJWCA9
IGxpYjsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJfTsKKwkJCW5h
bWUgPSBEZWJ1ZzsKKwkJfTsKKwkJQzIxNEQ5RjAxQUNFMzRENjAwMUM4MEJBIC8qIFJlbGVhc2Ug
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQo
VEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBY
Q0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlv
bkxpc3Qgc2VjdGlvbiAqLworCQlDMjE0RDlFNTFBQ0UzNEQ2MDAxQzgwQkEgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXQUZMIiAqLyA9IHsKKwkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCUMyMTRE
OUVDMUFDRTM0RDYwMDFDODBCQSAvKiBEZWJ1ZyAqLywKKwkJCQlDMjE0RDlFRDFBQ0UzNEQ2MDAx
QzgwQkEgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9Owor
CQlDMjE0RDlFRTFBQ0UzNEQ2MDAxQzgwQkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgIldBRkwiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9u
TGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJQzIxNEQ5RUYxQUNFMzRENjAw
MUM4MEJBIC8qIERlYnVnICovLAorCQkJCUMyMTREOUYwMUFDRTM0RDYwMDFDODBCQSAvKiBSZWxl
YXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25m
aWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0gQzIxNEQ5RTIxQUNF
MzRENjAwMUM4MEJBIC8qIFByb2plY3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dBRkwvZ3JhcGhpY3MvRm9vLmNwcCBiL1NvdXJjZS9XQUZML2dyYXBoaWNzL0Zvby5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYmZmMTljOTAzMzEyMzQ4ZTU0YjEyYjI1ZTc4NDhiZWFmNDQ3YWUyZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XQUZML2dyYXBoaWNzL0Zvby5jcHAKQEAgLTAsMCArMSwyOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK2ludCBmb28oaW50LCBjaGFyKQoreworICAgIHJldHVybiAxNzsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAwZWU2YzU0NDUzNmQwNDhkMjNhMmRlMGI2ZDYyZjJmMGYwNThjNmM3Li45YWYxMmFkZmVi
OGVhMTk4OGJkZjA5ZGQ4NGIwODYxNGUyNzFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NjEzLDYgKzU2MTMsNyBAQAog
CQlDMEYyQTQ0MTEzODY5QUFCMDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBGMkE0M0YxMzg2OUEyODAwNjZD
NTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDMTA1REE2MjBGM0FBNjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5n
RGV0ZWN0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzEwNURBNjEwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9ySUNV
LmNwcCAqLzsgfTsKIAkJQzEwNURBNjQwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0Rl
dGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MTA1REE2MzBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCAqLzsgfTsK
KwkJQzIxNEQ5RjUxQUNFMzVCNDAwMUM4MEJBIC8qIGxpYldBRkwuYSBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTREOUY0MUFDRTM1QjQwMDFDODBC
QSAvKiBsaWJXQUZMLmEgKi87IH07CiAJCUMzMzBBMjIzMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xv
ckNob29zZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMzMzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMzNFRTVDNDE0RkI0OTYxMDAw
MjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzRUU1QzIxNEZCNDk2MTAwMDIwOTVB
IC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcCAqLzsgfTsKIAkJQzMzRUU1QzUx
NEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMzNFRTVDMzE0RkI0OTYx
MDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCAqLzsgfTsKQEAgLTEz
MTM5LDYgKzEzMTQwLDcgQEAKIAkJQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nl
c3Nvci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBwcmVwcm9jZXNzb3IucG07IHBhdGggPSBzY3JpcHRz
L3ByZXByb2Nlc3Nvci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjEw
RjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjMwRjNBQTZCODAwMURENDRGIC8q
IFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRleHRFbmNvZGluZ0RldGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMy
MTREOUY0MUFDRTM1QjQwMDFDODBCQSAvKiBsaWJXQUZMLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBwYXRoID0gbGliV0FGTC5h
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDMjQ2ODUxMzFBMTQ4RTE4
MDA4MTE3OTIgLyogQ29yZUdyYXBoaWNzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENvcmVHcmFwaGljc1NQSS5oOyBwYXRoID0gY2cvQ29yZUdyYXBoaWNzU1BJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzRDQjFEMTYxQTEzMTIwMEQyMTREQSAvKiBX
ZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFdlYlNhZmVJbmNyZW1lbnRhbFN3ZWVwZXJJT1MuaDsgcGF0aCA9IGlvcy9XZWJTYWZl
SW5jcmVtZW50YWxTd2VlcGVySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMz
MzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDaG9vc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNDQ4OSw2ICsxNDQ5MSw3IEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJ
CQlDMjE0RDlGNTFBQ0UzNUI0MDAxQzgwQkEgLyogbGliV0FGTC5hIGluIEZyYW1ld29ya3MgKi8s
CiAJCQkJRkQyREJGMTIxMkIwNDhBMzAwRUQ5OEM2IC8qIEFjY2VsZXJhdGUuZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTMxMkIwNDhBMzAwRUQ5OEM2IC8qIEF1ZGlvVG9v
bGJveC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxNTEyQjA0OEEzMDBF
RDk4QzYgLyogQ29yZUF1ZGlvLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLApAQCAtMTQ5MTgs
NiArMTQ5MjEsNyBAQAogCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyogRnJhbWV3b3JrcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzIxNEQ5RjQx
QUNFMzVCNDAwMUM4MEJBIC8qIGxpYldBRkwuYSAqLywKIAkJCQlGRDJEQkYwRTEyQjA0OEEzMDBF
RDk4QzYgLyogQWNjZWxlcmF0ZS5mcmFtZXdvcmsgKi8sCiAJCQkJRkQyREJGMEYxMkIwNDhBMzAw
RUQ5OEM2IC8qIEF1ZGlvVG9vbGJveC5mcmFtZXdvcmsgKi8sCiAJCQkJRkQyREJGMTExMkIwNDhB
MzAwRUQ5OEM2IC8qIENvcmVBdWRpby5mcmFtZXdvcmsgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWU4MzY5ZWQ0NzhkNDBmOGZmY2MzODU0
NWJkMzQzZTZjNmU1OWU0Yi4uOTA5OGU2ZjFmYTNmMWU5NDNhOTk5MTRlMGMxZTk3N2U1YWU1NjUy
YSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDE1LTA0LTAzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBh
cHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhlIFdlYkNvcmUgQWJzdHJhY3Rpb24g
RnJhbWV3b3JrIExheWVyIChXQUZMKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtpdDogQWRkIGl0IHRvIGJ1aWxkLXdl
YmtpdC4KKwogMjAxNS0wNC0wMyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFtFRkxdIFNwZWVkdXAgamhidWlsZCB3aXRoIGRpc2FibGUgcnVubmluZyBh
dXRvZ2VuLnNoCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1Rvb2xz
L1NjcmlwdHMvYnVpbGQtd2Via2l0CmluZGV4IDY0ZDVlZmMyNmI2YjhhYWQ0NjJiOGIzMzhlZDZi
OTQ5ZmNjNTgxZmUuLjQ1ZTAzN2JlN2Q0ZTA4MGZmYTg1OTNkZmU2MDljYzUyMGFmZjI2NWQgMTAw
NzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CisrKyBiL1Rvb2xzL1NjcmlwdHMv
YnVpbGQtd2Via2l0CkBAIC0xNDMsNyArMTQzLDcgQEAgc2V0Q29uZmlndXJhdGlvbigpOwogbXkg
JHByb2R1Y3REaXIgPSBwcm9kdWN0RGlyKCk7CiAKICMgQ2hlY2sgdGhhdCBhbGwgdGhlIHByb2pl
Y3QgZGlyZWN0b3JpZXMgYXJlIHRoZXJlLgotbXkgQHByb2plY3RzID0gKCJTb3VyY2UvSmF2YVNj
cmlwdENvcmUiLCAiU291cmNlL1dlYkNvcmUiLCAiU291cmNlL1dlYktpdCIpOworbXkgQHByb2pl
Y3RzID0gKCJTb3VyY2UvSmF2YVNjcmlwdENvcmUiLCAiU291cmNlL1dBRkwiLCAiU291cmNlL1dl
YkNvcmUiLCAiU291cmNlL1dlYktpdCIpOwogCiAjIEJ1aWxkIFdURiBhcyBhIHNlcGFyYXRlIHN0
YXRpYyBsaWJyYXJ5IG9uIHBvcnRzIHdoaWNoIHN1cHBvcnQgaXQuCiBzcGxpY2UgQHByb2plY3Rz
LCAwLCAwLCAiU291cmNlL1dURiIgaWYgaXNBcHBsZU1hY1dlYktpdCgpIG9yIGlzQXBwbGVXaW5X
ZWJLaXQoKSBvciBpc1dpbkNhaXJvKCk7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggMzI4ZWQwOTUyNGU0ZWJlNGYzNDJlOTY1ODgwMTk2MzRiMjFhZDI1Mi4uY2U5Y2Fi
NmY1ZTJjOTJkZTYxN2I0NzU4OGZhZTgyNDg1Mzk1MWFkMiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTA0LTAzICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhl
IFdlYkNvcmUgQWJzdHJhY3Rpb24gRnJhbWV3b3JrIExheWVyIChXQUZMKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQueGN3b3Jrc3BhY2Uv
Y29udGVudHMueGN3b3Jrc3BhY2VkYXRhOiBBZGQgaXQgdG8gdGhlIHdvcmtzcGFjZS4KKwogMjAx
NS0wNC0wMyAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAg
Rml4IHRoZSBFRkwgYW5kIEdUSyBidWlsZCBhZnRlciByMTgyMjQzCmRpZmYgLS1naXQgYS9XZWJL
aXQueGN3b3Jrc3BhY2UvY29udGVudHMueGN3b3Jrc3BhY2VkYXRhIGIvV2ViS2l0Lnhjd29ya3Nw
YWNlL2NvbnRlbnRzLnhjd29ya3NwYWNlZGF0YQppbmRleCA1MzUzZWMzYWZiN2NmNDY1ZDI1ZDY3
NTczMGJiOTkyNDc2ZDg0MTE2Li5lMjRjOTg4ODE2YWRlNzQzZmNmN2ZjZDA1OTNkMTA3NTUyZDZm
MTdlIDEwMDY0NAotLS0gYS9XZWJLaXQueGN3b3Jrc3BhY2UvY29udGVudHMueGN3b3Jrc3BhY2Vk
YXRhCisrKyBiL1dlYktpdC54Y3dvcmtzcGFjZS9jb250ZW50cy54Y3dvcmtzcGFjZWRhdGEKQEAg
LTIsNiArMiw5IEBACiA8V29ya3NwYWNlCiAgICB2ZXJzaW9uID0gIjEuMCI+CiAgICA8RmlsZVJl
ZgorICAgICAgbG9jYXRpb24gPSAiZ3JvdXA6U291cmNlL1dBRkwvV0FGTC54Y29kZXByb2oiPgor
ICAgPC9GaWxlUmVmPgorICAgPEZpbGVSZWYKICAgICAgIGxvY2F0aW9uID0gImdyb3VwOlNvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9qIj4KICAgIDwvRmlsZVJlZj4KICAgIDxGaWxlUmVm
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250109</attachid>
            <date>2015-04-03 17:27:46 -0700</date>
            <delta_ts>2015-05-05 18:07:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>17538</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUEFML0NoYW5n
ZUxvZyBiL1NvdXJjZS9QQUwvQ2hhbmdlTG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjYjc4MDM4YzQyZWRkZTU5
OTI0M2I2ZGQ5ZWYxNmE3NGZmZTU1MGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUEFML0No
YW5nZUxvZwpAQCAtMCwwICsxLDIzIEBACisyMDE1LTA0LTAyICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhlIFBsYXRmb3Jt
IEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgdG9wLWxldmVsIGZvbGRlciBhbmQgc3Rh
dGljIGxpYnJhcnkuIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUKKyAgICAgICAgdGhlIGRlc3RpbmF0
aW9uIGZvciBjb2RlIHRoYXQgY3VycmVudGx5IHJlc2lkZXMgaW4gV2ViQ29yZS9wbGF0Zm9ybS4g
Q29kZQorICAgICAgICB3aWxsIGJlIG1vdmVkIGZyb20gdGhhdCBmb2xkZXIgaW50byBQQUwgZmls
ZSBieSBmaWxlLiBTZXBhcmF0aW5nIHRoaXMKKyAgICAgICAgcGxhdGZvcm0gY29kZSBpbnRvIGl0
cyBvd24gc3RhdGljIGxpYnJhcnkgZW5mb3JjZXMgbGF5ZXJpbmcsIGFzIHdlbGwgYXMKKyAgICAg
ICAgZW5jb3VyYWdlcy9haWRzIHVuaXQgdGVzdGluZyBvZiB0aGlzIHBsYXRmb3JtIGNvZGUuCisK
KyAgICAgICAgVGhpcyBjb21taXQgb25seSBjcmVhdGVzIGEgc2luZ2xlIHN5bWJvbCB3aGljaCBp
cyBub3QgcmVxdWlyZWQgdG8gYnVpbGQKKyAgICAgICAgV2ViS2l0LiBUaGUgcmVhc29uIGZvciB0
aGlzIGlzIHNvIHRoYXQgd2UgY2FuIGdldCBhbGwgYnVpbGQgaXNzdWVzIGlyb25lZAorICAgICAg
ICBvdXQgYmVmb3JlIHJlcXVpcmluZyBQQUwuCisKKyAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRp
b24sIHNlZQorICAgICAgICBodHRwczovL2xpc3RzLndlYmtpdC5vcmcvcGlwZXJtYWlsL3dlYmtp
dC1kZXYvMjAxNS1NYXJjaC8wMjczMDMuaHRtbAorCisgICAgICAgICogUEFMLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IEFkZGVkLgorICAgICAgICAqIGdyYXBoaWNzL0Zvby5jcHA6IEFkZGVk
LgorICAgICAgICAoZm9vKTogUGxhY2Vob2xkZXIgc3ltYm9sLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDEyNzI2
OGJkNzE3MjJhMDNmMDRjNDU4MmUwM2MzYmQ2Mzg3NzJmMjQuLjViZDZlNWQyYzdiMzAzOTFkNTBj
NTNmNTU1MWUxYTE3MmMzYTA4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNS0w
NC0wMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAg
IEludHJvZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0cmFjdGlvbiBMYXllciAoUEFMKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IERlcGVuZCBvbiBpdC4KKwogMjAxNS0wNC0wMyAgWmFuIERv
YmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4
aW5nIENsYW5nIGJ1aWxkcyBvZiB0aGUgR1RLIHBvcnQgb24gTGludXguCmRpZmYgLS1naXQgYS9T
b3VyY2UvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1BBTC9QQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODQzOTA2OWRhMGNhYzFkYmIx
MjA1YTg2M2VhOGUyZTU3YjZhNzk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BBTC9QQUwu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMCwwICsxLDI0MCBAQAorLy8gISQqVVRGOCok
IQoreworCWFyY2hpdmVWZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVy
c2lvbiA9IDQ2OworCW9iamVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9u
ICovCisJCUMyMTREOUYzMUFDRTM1NzkwMDFDODBCQSAvKiBGb28uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIxNEQ5RjIxQUNFMzU3OTAwMUM4MEJB
IC8qIEZvby5jcHAgKi87IH07CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyog
QmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCUMyMTREOUVBMUFDRTM0RDYwMDFD
ODBCQSAvKiBsaWJQQUwuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliUEFMLmE7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUMyMTREOUYyMUFDRTM1Nzkw
MDFDODBCQSAvKiBGb28uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
Rm9vLmNwcDsgcGF0aCA9IGdyYXBoaWNzL0Zvby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJQzIxNEQ5RTcxQUNFMzRENjAwMUM4MEJB
IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNl
Y3Rpb24gKi8KKwkJQzIxNEQ5RTExQUNFMzRENjAwMUM4MEJBID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMjE0RDlGMTFBQ0UzNTNGMDAxQzgwQkEgLyogZ3Jh
cGhpY3MgKi8sCisJCQkJQzIxNEQ5RUIxQUNFMzRENjAwMUM4MEJBIC8qIFByb2R1Y3RzICovLAor
CQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUMyMTREOUVCMUFDRTM0
RDYwMDFDODBCQSAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJQzIxNEQ5RUExQUNFMzRENjAwMUM4MEJBIC8qIGxpYlBBTC5hICovLAor
CQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCUMyMTREOUYxMUFDRTM1M0YwMDFDODBCQSAvKiBncmFwaGljcyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzIxNEQ5RjIxQUNFMzU3OTAwMUM4
MEJBIC8qIEZvby5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGdyYXBoaWNzOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJQzIxNEQ5RTgxQUNFMzRE
NjAwMUM4MEJBIC8qIEhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7
CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVu
ZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRh
cmdldCBzZWN0aW9uICovCisJCUMyMTREOUU5MUFDRTM0RDYwMDFDODBCQSAvKiBQQUwgKi8gPSB7
CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
QzIxNEQ5RUUxQUNFMzRENjAwMUM4MEJBIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYTmF0aXZlVGFyZ2V0ICJQQUwiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJQzIxNEQ5
RTYxQUNFMzRENjAwMUM4MEJBIC8qIFNvdXJjZXMgKi8sCisJCQkJQzIxNEQ5RTcxQUNFMzRENjAw
MUM4MEJBIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJQzIxNEQ5RTgxQUNFMzRENjAwMUM4MEJBIC8q
IEhlYWRlcnMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRl
bmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IFBBTDsKKwkJCXByb2R1Y3ROYW1lID0gUEFMOwor
CQkJcHJvZHVjdFJlZmVyZW5jZSA9IEMyMTREOUVBMUFDRTM0RDYwMDFDODBCQSAvKiBsaWJQQUwu
YSAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5z
dGF0aWMiOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJl
Z2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQlDMjE0RDlFMjFBQ0UzNEQ2MDAxQzgwQkEgLyog
UHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJYXR0cmlidXRl
cyA9IHsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDYyMDsKKwkJCQlPUkdBTklaQVRJT05OQU1F
ID0gY29tLmFwcGxlOworCQkJCVRhcmdldEF0dHJpYnV0ZXMgPSB7CisJCQkJCUMyMTREOUU5MUFD
RTM0RDYwMDFDODBCQSA9IHsKKwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDYuMjsKKwkJ
CQkJfTsKKwkJCQl9OworCQkJfTsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBDMjE0RDlF
NTFBQ0UzNEQ2MDAxQzgwQkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9q
ZWN0ICJQQUwiICovOworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKKwkJ
CWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3Mg
PSAwOworCQkJa25vd25SZWdpb25zID0gKAorCQkJCWVuLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9
IEMyMTREOUUxMUFDRTM0RDYwMDFDODBCQTsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IEMyMTREOUVC
MUFDRTM0RDYwMDFDODBCQSAvKiBQcm9kdWN0cyAqLzsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7
CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQlDMjE0RDlFOTFBQ0Uz
NEQ2MDAxQzgwQkEgLyogUEFMICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQlD
MjE0RDlFNjFBQ0UzNEQ2MDAxQzgwQkEgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJCUMyMTREOUYzMUFDRTM1NzkwMDFDODBCQSAvKiBGb28uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdp
biBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCUMyMTREOUVDMUFDRTM0RDYwMDFD
ODBCQSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJ
CQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251KysweCI7CisJCQkJQ0xBTkdfQ1hY
X0xJQlJBUlkgPSAibGliYysrIjsKKwkJCQlDTEFOR19FTkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJ
CQlDTEFOR19FTkFCTEVfT0JKQ19BUkMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZF
UlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOwor
CQkJCUNMQU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJCUNM
QU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lP
TiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5H
X1dBUk5fT0JKQ19ST09UX0NMQVNTID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fVU5SRUFD
SEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENI
ID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlFTkFCTEVfU1RSSUNUX09C
SkNfTVNHU0VORCA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5Owor
CQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwg
PSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0x
IiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRF
X0VYVEVSTiA9IE5POworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVT
OworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VSUk9SOworCQkJCUdDQ19X
QVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpF
RF9BVVRPUyA9IFlFU19BR0dSRVNTSVZFOworCQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9
IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJTUFDT1NYX0RF
UExPWU1FTlRfVEFSR0VUID0gMTAuMTA7CisJCQkJTVRMX0VOQUJMRV9ERUJVR19JTkZPID0gWUVT
OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJ
CX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCUMyMTREOUVEMUFDRTM0RDYwMDFDODBCQSAv
KiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUNM
QU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzB4IjsKKwkJCQlDTEFOR19DWFhfTElC
UkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNM
QU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lP
TiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJ
Q0xBTkdfV0FSTl9ESVJFQ1RfT0JKQ19JU0FfVVNBR0UgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdf
V0FSTl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0g
WUVTOworCQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FS
Tl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJM
RV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZ
RVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZP
Uk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUVOQUJMRV9OU19BU1NFUlRJT05TID0gTk87
CisJCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZRVM7CisJCQkJR0NDX0NfTEFOR1VB
R0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lP
TiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKKwkJ
CQlHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5J
VElBTElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfRlVO
Q1RJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCU1B
Q09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjEwOworCQkJCU1UTF9FTkFCTEVfREVCVUdfSU5G
TyA9IE5POworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7
CisJCX07CisJCUMyMTREOUVGMUFDRTM0RDYwMDFDODBCQSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlFWEVD
VVRBQkxFX1BSRUZJWCA9IGxpYjsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSki
OworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJQzIxNEQ5RjAxQUNFMzRENjAwMUM4
MEJBIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJUFJP
RFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsK
KwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2lu
IFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQlDMjE0RDlFNTFBQ0UzNEQ2MDAxQzgw
QkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJQQUwiICovID0g
eworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCisJCQkJQzIxNEQ5RUMxQUNFMzRENjAwMUM4MEJBIC8qIERlYnVnICovLAorCQkJCUMyMTRE
OUVEMUFDRTM0RDYwMDFDODBCQSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJl
bGVhc2U7CisJCX07CisJCUMyMTREOUVFMUFDRTM0RDYwMDFDODBCQSAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUEFMIiAqLyA9IHsKKwkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCUMyMTRE
OUVGMUFDRTM0RDYwMDFDODBCQSAvKiBEZWJ1ZyAqLywKKwkJCQlDMjE0RDlGMDFBQ0UzNEQ2MDAx
QzgwQkEgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9Owor
LyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9
IEMyMTREOUUyMUFDRTM0RDYwMDFDODBCQSAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9QQUwvZ3JhcGhpY3MvRm9vLmNwcCBiL1NvdXJjZS9QQUwvZ3JhcGhpY3Mv
Rm9vLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iZmYxOWM5MDMzMTIzNDhlNTRiMTJiMjVlNzg0OGJlYWY0NDdh
ZTJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BBTC9ncmFwaGljcy9Gb28uY3BwCkBAIC0w
LDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitpbnQgZm9vKGludCwgY2hhcikKK3sKKyAgICByZXR1
cm4gMTc7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMGVlNmM1NDQ1MzZkMDQ4ZDIzYTJkZTBiNmQ2MmYyZjBmMDU4YzZjNy4u
OWFmMTJhZGZlYjhlYTE5ODhiZGYwOWRkODRiMDg2MTRlMjcxZDVlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTYxMyw2ICs1
NjEzLDcgQEAKIAkJQzBGMkE0NDExMzg2OUFBQjAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRjJBNDNGMTM4
NjlBMjgwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzEwNURBNjIwRjNBQTY4RjAwMURENDRGIC8qIFRl
eHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMxMDVEQTYxMEYzQUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdE
ZXRlY3RvcklDVS5jcHAgKi87IH07CiAJCUMxMDVEQTY0MEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0
RW5jb2RpbmdEZXRlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzEwNURBNjMwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9y
LmggKi87IH07CisJCUMyMTREOUY1MUFDRTM1QjQwMDFDODBCQSAvKiBsaWJQQUwuYSBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTREOUY0MUFDRTM1
QjQwMDFDODBCQSAvKiBsaWJQQUwuYSAqLzsgfTsKIAkJQzMzMEEyMjMxM0VDMTk2QjAwMDBCNDVC
IC8qIENvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMzM0VFNUM0MTRG
QjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMzNFRTVDMjE0RkI0OTYx
MDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwICovOyB9OwogCQlD
MzNFRTVDNTE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzM0VFNUMz
MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oICovOyB9
OwpAQCAtMTMxMzksNiArMTMxNDAsNyBAQAogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyog
cHJlcHJvY2Vzc29yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9
IHNjcmlwdHMvcHJlcHJvY2Vzc29yLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MTA1REE2MTBGM0FBNjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEVuY29kaW5nRGV0ZWN0b3JJ
Q1UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTA1REE2MzBGM0FBNkI4MDAx
REQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGV4dEVuY29kaW5nRGV0ZWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzIxNEQ5RjQxQUNFMzVCNDAwMUM4MEJBIC8qIGxpYlBBTC5hICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgcGF0aCA9IGxp
YlBBTC5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlDMjQ2ODUxMzFB
MTQ4RTE4MDA4MTE3OTIgLyogQ29yZUdyYXBoaWNzU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IENvcmVHcmFwaGljc1NQSS5oOyBwYXRoID0gY2cvQ29yZUdyYXBoaWNzU1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzRDQjFEMTYxQTEzMTIwMEQyMTRE
QSAvKiBXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdlYlNhZmVJbmNyZW1lbnRhbFN3ZWVwZXJJT1MuaDsgcGF0aCA9IGlvcy9X
ZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMzMzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDaG9vc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNDQ4OSw2ICsxNDQ5MSw3IEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9
ICgKKwkJCQlDMjE0RDlGNTFBQ0UzNUI0MDAxQzgwQkEgLyogbGliUEFMLmEgaW4gRnJhbWV3b3Jr
cyAqLywKIAkJCQlGRDJEQkYxMjEyQjA0OEEzMDBFRDk4QzYgLyogQWNjZWxlcmF0ZS5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxMzEyQjA0OEEzMDBFRDk4QzYgLyogQXVk
aW9Ub29sYm94LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjE1MTJCMDQ4
QTMwMEVEOThDNiAvKiBDb3JlQXVkaW8uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCkBAIC0x
NDkxOCw2ICsxNDkyMSw3IEBACiAJCTA4NjdENjlBRkU4NDAyOEZDMDJBQUMwNyAvKiBGcmFtZXdv
cmtzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMjE0
RDlGNDFBQ0UzNUI0MDAxQzgwQkEgLyogbGliUEFMLmEgKi8sCiAJCQkJRkQyREJGMEUxMkIwNDhB
MzAwRUQ5OEM2IC8qIEFjY2VsZXJhdGUuZnJhbWV3b3JrICovLAogCQkJCUZEMkRCRjBGMTJCMDQ4
QTMwMEVEOThDNiAvKiBBdWRpb1Rvb2xib3guZnJhbWV3b3JrICovLAogCQkJCUZEMkRCRjExMTJC
MDQ4QTMwMEVEOThDNiAvKiBDb3JlQXVkaW8uZnJhbWV3b3JrICovLApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVlODM2OWVkNDc4ZDQwZjhmZmNj
Mzg1NDViZDM0M2U2YzZlNTllNGIuLjkwOThlNmYxZmEzZjFlOTQzYTk5OTE0ZTBjMWU5NzdlNWFl
NTY1MmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMiBAQAorMjAxNS0wNC0wMyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0cmFj
dGlvbiBMYXllciAoUEFMKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtpdDogQWRkIGl0IHRvIGJ1aWxkLXdlYmtpdC4K
KwogMjAxNS0wNC0wMyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtFRkxdIFNwZWVkdXAgamhidWlsZCB3aXRoIGRpc2FibGUgcnVubmluZyBhdXRvZ2Vu
LnNoCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1Rvb2xzL1Njcmlw
dHMvYnVpbGQtd2Via2l0CmluZGV4IDY0ZDVlZmMyNmI2YjhhYWQ0NjJiOGIzMzhlZDZiOTQ5ZmNj
NTgxZmUuLjQ1ZTAzN2JlN2Q0ZTA4MGZmYTg1OTNkZmU2MDljYzUyMGFmZjI2NWQgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQt
d2Via2l0CkBAIC0xNDMsNyArMTQzLDcgQEAgc2V0Q29uZmlndXJhdGlvbigpOwogbXkgJHByb2R1
Y3REaXIgPSBwcm9kdWN0RGlyKCk7CiAKICMgQ2hlY2sgdGhhdCBhbGwgdGhlIHByb2plY3QgZGly
ZWN0b3JpZXMgYXJlIHRoZXJlLgotbXkgQHByb2plY3RzID0gKCJTb3VyY2UvSmF2YVNjcmlwdENv
cmUiLCAiU291cmNlL1dlYkNvcmUiLCAiU291cmNlL1dlYktpdCIpOworbXkgQHByb2plY3RzID0g
KCJTb3VyY2UvSmF2YVNjcmlwdENvcmUiLCAiU291cmNlL1BBTCIsICJTb3VyY2UvV2ViQ29yZSIs
ICJTb3VyY2UvV2ViS2l0Iik7CiAKICMgQnVpbGQgV1RGIGFzIGEgc2VwYXJhdGUgc3RhdGljIGxp
YnJhcnkgb24gcG9ydHMgd2hpY2ggc3VwcG9ydCBpdC4KIHNwbGljZSBAcHJvamVjdHMsIDAsIDAs
ICJTb3VyY2UvV1RGIiBpZiBpc0FwcGxlTWFjV2ViS2l0KCkgb3IgaXNBcHBsZVdpbldlYktpdCgp
IG9yIGlzV2luQ2Fpcm8oKTsKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRl
eCAzMjhlZDA5NTI0ZTRlYmU0ZjM0MmU5NjU4ODAxOTYzNGIyMWFkMjUyLi5jZTljYWI2ZjVlMmM5
MmRlNjE3YjQ3NTg4ZmFlODI0ODUzOTUxYWQyIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUtMDQtMDMgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZv
cm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lnhjd29ya3NwYWNlL2NvbnRlbnRzLnhjd29ya3Nw
YWNlZGF0YTogQWRkIGl0IHRvIHRoZSB3b3Jrc3BhY2UuCisKIDIwMTUtMDQtMDMgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCB0aGUgRUZMIGFuZCBH
VEsgYnVpbGQgYWZ0ZXIgcjE4MjI0MwpkaWZmIC0tZ2l0IGEvV2ViS2l0Lnhjd29ya3NwYWNlL2Nv
bnRlbnRzLnhjd29ya3NwYWNlZGF0YSBiL1dlYktpdC54Y3dvcmtzcGFjZS9jb250ZW50cy54Y3dv
cmtzcGFjZWRhdGEKaW5kZXggNTM1M2VjM2FmYjdjZjQ2NWQyNWQ2NzU3MzBiYjk5MjQ3NmQ4NDEx
Ni4uZTI0Yzk4ODgxNmFkZTc0M2ZjZjdmY2QwNTkzZDEwNzU1MmQ2ZjE3ZSAxMDA2NDQKLS0tIGEv
V2ViS2l0Lnhjd29ya3NwYWNlL2NvbnRlbnRzLnhjd29ya3NwYWNlZGF0YQorKysgYi9XZWJLaXQu
eGN3b3Jrc3BhY2UvY29udGVudHMueGN3b3Jrc3BhY2VkYXRhCkBAIC0yLDYgKzIsOSBAQAogPFdv
cmtzcGFjZQogICAgdmVyc2lvbiA9ICIxLjAiPgogICAgPEZpbGVSZWYKKyAgICAgIGxvY2F0aW9u
ID0gImdyb3VwOlNvdXJjZS9QQUwvUEFMLnhjb2RlcHJvaiI+CisgICA8L0ZpbGVSZWY+CisgICA8
RmlsZVJlZgogICAgICAgbG9jYXRpb24gPSAiZ3JvdXA6U291cmNlL2JtYWxsb2MvYm1hbGxvYy54
Y29kZXByb2oiPgogICAgPC9GaWxlUmVmPgogICAgPEZpbGVSZWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252428</attachid>
            <date>2015-05-05 18:07:53 -0700</date>
            <delta_ts>2015-09-14 11:18:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20150505180638.patch</filename>
            <type>text/plain</type>
            <size>62132</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OTlkN2U3ZWZiOGM0OGUxZjlmZGUzYTY0YTI4NjkwOWVmNmE2MGQ4Li4yOTM5YTNkYjg3YzA4ZmJk
MGQ0NzI0ZTRlNTkyM2RhZWY5ODc5M2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxNS0wNC0wMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0cmFjdGlvbiBM
YXllciAoUEFMKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogVXBkYXRlZAorCiAy
MDE1LTA1LTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgRlRM
IFN3aXRjaFN0cmluZyBzbG93IGNhc2UgY3JlYXRlcyBkdXBsaWNhdGUgc3dpdGNoIGNhc2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9QQUwvQ2hhbmdlTG9nCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjlhZmYwOWVkMzczNzVkZmQ4MzNjMGVjYzUxYzk4NGFmZGFlMjkzODIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvUEFML0NoYW5nZUxvZwpAQCAtMCwwICsxLDMwIEBACisyMDE1
LTA0LTAyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBu
ZXcgdG9wLWxldmVsIGZvbGRlciBhbmQgc3RhdGljIGxpYnJhcnkuIFRoaXMgaXMgaW50ZW5kZWQg
dG8gYmUKKyAgICAgICAgdGhlIGRlc3RpbmF0aW9uIGZvciBjb2RlIHRoYXQgY3VycmVudGx5IHJl
c2lkZXMgaW4gV2ViQ29yZS9wbGF0Zm9ybS4gQ29kZQorICAgICAgICB3aWxsIGJlIG1vdmVkIGZy
b20gdGhhdCBmb2xkZXIgaW50byBQQUwgZmlsZSBieSBmaWxlLiBTZXBhcmF0aW5nIHRoaXMKKyAg
ICAgICAgcGxhdGZvcm0gY29kZSBpbnRvIGl0cyBvd24gc3RhdGljIGxpYnJhcnkgZW5mb3JjZXMg
bGF5ZXJpbmcsIGFzIHdlbGwgYXMKKyAgICAgICAgZW5jb3VyYWdlcy9haWRzIHVuaXQgdGVzdGlu
ZyBvZiB0aGlzIHBsYXRmb3JtIGNvZGUuCisKKyAgICAgICAgVGhpcyBjb21taXQgb25seSBjcmVh
dGVzIGEgc2luZ2xlIHN5bWJvbCB3aGljaCBpcyBub3QgcmVxdWlyZWQgdG8gYnVpbGQKKyAgICAg
ICAgV2ViS2l0LiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHNvIHRoYXQgd2UgY2FuIGdldCBhbGwg
YnVpbGQgaXNzdWVzIGlyb25lZAorICAgICAgICBvdXQgYmVmb3JlIHJlcXVpcmluZyBQQUwuCisK
KyAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQorICAgICAgICBodHRwczovL2xpc3Rz
LndlYmtpdC5vcmcvcGlwZXJtYWlsL3dlYmtpdC1kZXYvMjAxNS1NYXJjaC8wMjczMDMuaHRtbAor
CisgICAgICAgICogUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkLgorICAgICAg
ICAqIE1ha2VmaWxlOiBBZGRlZC4gU3RhbmRhcmQgTWFrZWZpbGUuCisgICAgICAgICogY29uZmln
Lmg6IEFkZGVkLiBTdGFuZGFyZCBoZWFkZXIuCisgICAgICAgICogUEFMUHJlZml4Lmg6IEFkZGVk
LiBDb3BpZWQgZnJvbSBXZWJDb3JlLgorICAgICAgICAqIGdyYXBoaWNzL0Zvby5oOiBBZGRlZC4g
SGVhZGVyLgorICAgICAgICAqIGdyYXBoaWNzL0Zvby5jcHA6IEFkZGVkLgorICAgICAgICAoZm9v
KTogUGxhY2Vob2xkZXIgc3ltYm9sLgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0Jhc2UueGNj
b25maWc6IEFkZGVkLiBTdGFuZGFyZCBjb25maWcgZmlsZXMKKyAgICAgICAgKiBDb25maWd1cmF0
aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWc6IEFkZGVkLiBTdGFuZGFyZCBjb25maWcgZmlsZXMK
KyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9QQUwueGNjb25maWc6IEFkZGVkLiBTdGFuZGFyZCBj
b25maWcgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDE5MTAyMjE2OTQ2Yzg3M2U1NDQ0N2Y3YmUyMTU5
NmM1YzUyZmJhLi4xZDExY2EyMTRiYjNhZWQyNmNhMzEwMDU1YWJkNWM5MDQ0YzRmMmFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDUtMDUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0g
QWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEZXBl
bmQgb24gaXQuCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWc6IFVwZGF0ZWQKKwogMjAxNS0wNS0wNSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIE5hdmlnYXRpbmcgdG8gd3d3LmFwcGxlLmNvbSBoaXRzIGFzc2VydGlvbiBp
biBXZWJDb3JlOjpUZXh0SXRlcmF0b3JDb3B5YWJsZVRleHQ6OnNldCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggNTI5ZmY5YTg4MzllZTkzNTVhNDIwYzhmZjkyZWFmMDk3ZDQ2YjZhYS4uMzVmYjU2OTQ5
YTczNzk0MjMyNjBjM2FjNWY0Njc4YTA5MjVmNDE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDE1LTA0LTAyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExh
eWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBVcGRhdGVkCisKIDIw
MTUtMDUtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVG9n
Z2xpbmcgdW5kZXJsaW5lIG9yIHN0cmlrZSB0aHJvdWdoIGFmZmVjdHMgZWFjaCBvdGhlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IGI4OTA0ZDgzMDIxODY5ZDc4YzcxMGQwZGFmMDNlMWQ0NTQ0ODg5ODAuLjg4YmEw
ODVjMzQzNzdhYWQ0NGE1NmFhNDQ1MWJmZGE4ODkwMzQyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxNS0wNC0wMiAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0cmFjdGlvbiBMYXll
ciAoUEFMKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogVXBkYXRlZAorCiAyMDE1
LTA1LTA1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW0NvbnRlbnQgRXh0ZW5zaW9uc10gVXNlIGxlc3MgbWVtb3J5IHRvIHN0b3JlIHRoZSBq
c29uIGlucHV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IGZjOTBmNjExNTYyMzFhNDFj
YTkxMzdmMTdjNzk1NWU4ZDM3M2IwZWEuLjI4OWEzMzk0NDQyNGY5NDVmZmQ2MWMwNjhlNTE3ZmYw
MWMyYjIzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTIzLDcgKzIzLDcgQEAKIC8v
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKIC8vIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbXVzdCBiZSBrZXB0
IGluIHN5bmMgd2l0aCBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBpbiBKYXZhU2NyaXB0Q29yZSwK
LS8vIFdlYkNvcmUsIFdlYktpdCBhbmQgV2ViS2l0Mi4gIEFsc28gdGhlIGRlZmF1bHQgdmFsdWVz
IG9mIHRoZSBFTkFCTEVfRkVBVFVSRV9OQU1FIG1hY3JvcyBpbgorLy8gUEFMLCBXZWJDb3JlLCBX
ZWJLaXQgYW5kIFdlYktpdDIuICBBbHNvIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgRU5BQkxF
X0ZFQVRVUkVfTkFNRSBtYWNyb3MgaW4KIC8vIGJ1aWxkLXdlYmtpdCBzaG91bGQgbWF0Y2ggdGhl
IHZhbHVlcyBiZWxvdywgYnV0IHRoZXkgZG8gbm90IG5lZWQgdG8gYmUgaW4gdGhlIHNhbWUgb3Jk
ZXIuCiAKIC8vIEtlZXAgdGhpcyBsaXN0IG9mIGZlYXR1cmVzIChub3QgZW5hYmxlZC9kaXNhYmxl
ZCBzdGF0ZSkgaW4gc3luYyB3aXRoIEZlYXR1cmVEZWZpbmVzLnZzcHJvcHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9QQUwvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZyBiL1NvdXJjZS9QQUwvQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWFkYzVlYmExZmM1MDMyNmY2
N2RlOGY0YzUwZGI4MzMxMGE0MWFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BBTC9Db25m
aWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsMTE5IEBACisvLyBDb3B5cmlnaHQg
KEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisv
LyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNsdWRlICI8REVW
RUxPUEVSX0RJUj4vQXBwbGVJbnRlcm5hbC9YY29kZUNvbmZpZy9Bc3BlbkZhbWlseS54Y2NvbmZp
ZyIKKyNpbmNsdWRlICIuLi8uLi8uLi8uLi9JbnRlcm5hbC9Db25maWd1cmF0aW9ucy9IYXZlSW50
ZXJuYWxTREsueGNjb25maWciCisKK1VTRV9JTlRFUk5BTF9TREsgPSAkKFVTRV9JTlRFUk5BTF9T
REtfJChDT05GSUdVUkFUSU9OKSk7CitVU0VfSU5URVJOQUxfU0RLX1Byb2R1Y3Rpb24gPSBZRVM7
CitVU0VfSU5URVJOQUxfU0RLX0RlYnVnID0gJChIQVZFX0lOVEVSTkFMX1NESyk7CitVU0VfSU5U
RVJOQUxfU0RLX1JlbGVhc2UgPSAkKEhBVkVfSU5URVJOQUxfU0RLKTsKKworQ0xBTkdfQ1hYX0xB
TkdVQUdFX1NUQU5EQVJEID0gZ251KysweDsKK0NMQU5HX0NYWF9MSUJSQVJZID0gbGliYysrOwor
Q0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX0NPTlNUQU5UX0NP
TlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBOTzsKK0NMQU5H
X1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKK0NMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVT
OworQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fX0RVUExJQ0FU
RV9NRVRIT0RfTUFUQ0ggPSBZRVM7CitDT01CSU5FX0hJRFBJX0lNQUdFUyA9IE5POworREVCVUdf
SU5GT1JNQVRJT05fRk9STUFUID0gZHdhcmYtd2l0aC1kc3ltOworRU5BQkxFX1NUUklDVF9PQkpD
X01TR1NFTkQgPSBZRVM7CitHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworR0NDX0RF
QlVHR0lOR19TWU1CT0xTID0gZGVmYXVsdDsKK0dDQ19EWU5BTUlDX05PX1BJQyA9IE5POworR0ND
X0VOQUJMRV9DUFBfRVhDRVBUSU9OUyA9IE5POworR0NDX0VOQUJMRV9DUFBfUlRUSSA9IE5POwor
R0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CitHQ0NfRU5BQkxFX09CSkNfR0MgPSAk
KEdDQ19FTkFCTEVfT0JKQ19HQ18kKFBMQVRGT1JNX05BTUUpXyQoVVNFX0lOVEVSTkFMX1NESykp
OworR0NDX0VOQUJMRV9PQkpDX0dDX21hY29zeF8gPSBOTzsKK0dDQ19FTkFCTEVfT0JKQ19HQ19t
YWNvc3hfWUVTID0gc3VwcG9ydGVkOworR0NDX0VOQUJMRV9TWU1CT0xfU0VQQVJBVElPTiA9IE5P
OworR0NDX0ZBU1RfT0JKQ19ESVNQQVRDSCA9IFlFUzsKK0dDQ19HRU5FUkFURV9ERUJVR0dJTkdf
U1lNQk9MUyA9IFlFUzsKK0dDQ19JTkxJTkVTX0FSRV9QUklWQVRFX0VYVEVSTiA9IFlFUzsKK0dD
Q19NT0RFTF9UVU5JTkdbc2RrPW1hY29zeCpdID0gRzU7CitHQ0NfT0JKQ19DQUxMX0NYWF9DRFRP
UlMgPSBZRVM7CitHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOworR0NDX1BSRVBS
T0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVGSU5FUykgV0VCS0lUX1ZFUlNJT05fTUlO
X1JFUVVJUkVEPVdFQktJVF9WRVJTSU9OX0xBVEVTVCBIQVZFX0hFQURFUl9ERVRFQ1RJT05fSCAk
KEdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMpOworR0NDX1NUUklDVF9BTElBU0lORyA9IFlF
UzsKK0dDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKK0dDQ19UUkVBVF9XQVJOSU5HU19BU19F
UlJPUlMgPSBZRVM7CitHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFu
Zy4xXzA7CisvLyBGSVhNRTogPGh0dHA6Ly93ZWJraXQub3JnL2IvMTA3MDkzPiBXVEYgc2hvdWxk
IGJ1aWxkIHdpdGggLVdzaG9ydGVuLTY0LXRvLTMyCitHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09O
VkVSU0lPTiA9ICQoR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT05fJChDVVJSRU5UX0FS
Q0gpKTsKK0dDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OXyA9IFlFUzsKK0dDQ19XQVJO
XzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OX2FybXY3ID0gWUVTOworR0NDX1dBUk5fNjRfVE9fMzJf
QklUX0NPTlZFUlNJT05fYXJtdjdrID0gWUVTOworR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZF
UlNJT05fYXJtdjdzID0gWUVTOworR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT05fYXJt
NjQgPSBOTzsKK0dDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OX2kzODYgPSBZRVM7CitH
Q0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTl94ODZfNjQgPSBOTzsKK0dDQ19XQVJOX0FC
T1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0gTk87CitHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX05F
V0xJTkUgPSBZRVM7CitHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CitH
Q0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKK0dDQ19XQVJOX05PTl9WSVJUVUFMX0RF
U1RSVUNUT1IgPSBZRVM7CitHQ0NfV0FSTl9TSUdOX0NPTVBBUkUgPSBZRVM7CitHQ0NfV0FSTl9V
TkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9
IFlFUzsKK0dDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKK0dDQ19XQVJOX1VOVVNFRF9W
QVJJQUJMRSA9IFlFUzsKK0xJTktFUl9ESVNQTEFZU19NQU5HTEVEX05BTUVTID0gWUVTOworUFJF
QklORElORyA9IE5POworV0FSTklOR19DRkxBR1MgPSAtV2FsbCAtV2V4dHJhIC1XY2FzdC1xdWFs
IC1XY2hhci1zdWJzY3JpcHRzIC1XZXh0cmEtdG9rZW5zIC1XZm9ybWF0PTIgLVdpbml0LXNlbGYg
LVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5vcmV0dXJuIC1XcGFja2VkIC1X
cG9pbnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscyAtV3VuZGVmIC1Xd3JpdGUtc3RyaW5ncyAt
V2V4aXQtdGltZS1kZXN0cnVjdG9ycyAtV2dsb2JhbC1jb25zdHJ1Y3RvcnMgLVd0YXV0b2xvZ2lj
YWwtY29tcGFyZSAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoOworSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSAkKERTVFJPT1QpLyQoSU5T
VEFMTF9QQVRIX1BSRUZJWCkvdXNyL2xvY2FsL2luY2x1ZGUgaWN1ICQoSEVBREVSX1NFQVJDSF9Q
QVRIUyk7CisKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChNQUNfT1NfWF9WRVJT
SU9OX01BSk9SKTsKKworU1VQUE9SVEVEX1BMQVRGT1JNUyA9IGlwaG9uZW9zIGlwaG9uZXNpbXVs
YXRvciBtYWNvc3g7CisKK0pBVkFTQ1JJUFRDT1JFX0ZSQU1FV09SS1NfRElSID0gJChTWVNURU1f
TElCUkFSWV9ESVIpL0ZyYW1ld29ya3M7CisKKy8vIERFQlVHX0RFRklORVMsIEdDQ19PUFRJTUla
QVRJT05fTEVWRUwsIFNUUklQX0lOU1RBTExFRF9QUk9EVUNUIGFuZCBERUFEX0NPREVfU1RSSVBQ
SU5HIHZhcnkgYmV0d2VlbiB0aGUgZGVidWcgYW5kIG5vcm1hbCB2YXJpYW50cy4KKy8vIFdlIHNl
dCB1cCB0aGUgdmFsdWVzIGZvciBlYWNoIHZhcmlhbnQgaGVyZSwgYW5kIGhhdmUgdGhlIERlYnVn
IGNvbmZpZ3VyYXRpb24gaW4gdGhlIFhjb2RlIHByb2plY3QgdXNlIHRoZSBfZGVidWcgdmFyaWFu
dC4KK0RFQlVHX0RFRklORVNfZGVidWcgPSA7CitERUJVR19ERUZJTkVTX25vcm1hbCA9IE5ERUJV
RzsKK0RFQlVHX0RFRklORVMgPSAkKERFQlVHX0RFRklORVNfJChDVVJSRU5UX1ZBUklBTlQpKTsK
KworR0NDX09QVElNSVpBVElPTl9MRVZFTCA9ICQoR0NDX09QVElNSVpBVElPTl9MRVZFTF8kKENV
UlJFTlRfVkFSSUFOVCkpOworR0NDX09QVElNSVpBVElPTl9MRVZFTF9ub3JtYWwgPSAzOworR0ND
X09QVElNSVpBVElPTl9MRVZFTF9kZWJ1ZyA9IDA7CisKK1NUUklQX0lOU1RBTExFRF9QUk9EVUNU
ID0gJChTVFJJUF9JTlNUQUxMRURfUFJPRFVDVF8kKENVUlJFTlRfVkFSSUFOVCkpOworU1RSSVBf
SU5TVEFMTEVEX1BST0RVQ1Rfbm9ybWFsID0gWUVTOworU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1Rf
ZGVidWcgPSBOTzsKKworREVBRF9DT0RFX1NUUklQUElOR19kZWJ1ZyA9IE5POworREVBRF9DT0RF
X1NUUklQUElOR19ub3JtYWwgPSBZRVM7CitERUFEX0NPREVfU1RSSVBQSU5HID0gJChERUFEX0NP
REVfU1RSSVBQSU5HXyQoQ1VSUkVOVF9WQVJJQU5UKSk7CisKK0lOU1RBTExfUEFUSCA9ICQoSU5T
VEFMTF9QQVRIX1BSRUZJWCkkKElOU1RBTExfUEFUSF9BQ1RVQUwpOworCitTREtST09UID0gbWFj
b3N4LmludGVybmFsOworCitPVEhFUl9DRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ0ZMQUdTKTsKK09U
SEVSX0NQTFVTUExVU0ZMQUdTID0gJChBU0FOX09USEVSX0NQTFVTUExVU0ZMQUdTKTsKK09USEVS
X0xERkxBR1MgPSAkKEFTQU5fT1RIRVJfTERGTEFHUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvUEFM
L0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZyBiL1NvdXJjZS9QQUwvQ29uZmln
dXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4ZmU1ZGU5YmIzMDRj
MWQ0NDgwMGI0NDQ4YmQwMzFlZWFhNzhiMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUEFM
L0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZwpAQCAtMCwwICsxLDQwIEBACisv
LyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8g
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisv
LyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8g
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
Ky8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNsdWRl
ICJCYXNlLnhjY29uZmlnIgorCitBUkNIUyA9ICQoQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUKTsK
K09OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9ICQo
TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUXyQoUExBVEZPUk1fTkFNRSlfJChUQVJHRVRfTUFDX09T
X1hfVkVSU0lPTl9NQUpPUikpOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDkw
ID0gMTAuOTsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gMTAuMTA7
CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IDEwLjExOworCitHQ0Nf
V0FSTl9BQk9VVF9ERVBSRUNBVEVEX0ZVTkNUSU9OUyA9IFlFUzsKK0RFQlVHX0lORk9STUFUSU9O
X0ZPUk1BVCA9IGR3YXJmOworCitTREtST09UW3Nkaz1pcGhvbmUqXSA9ICQoU0RLUk9PVCk7CitT
REtST09UID0gJChTREtST09UXyQoUExBVEZPUk1fTkFNRSlfJChVU0VfSU5URVJOQUxfU0RLKSk7
CitTREtST09UX21hY29zeF8gPSBtYWNvc3g7CitTREtST09UX21hY29zeF9ZRVMgPSBtYWNvc3gu
aW50ZXJuYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvUEFML0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1BBTC9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODlhMzM5NDQ0MjRmOTQ1ZmZkNjFjMDY4ZTUxN2ZmMDFj
MmIyMzk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BBTC9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMCwwICsxLDIxOCBAQAorLy8gQ29weXJpZ2h0IChDKSAy
MDA5LCAyMDEwLCAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworLy8gVGhlIGNvbnRlbnRzIG9mIHRo
aXMgZmlsZSBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIEZlYXR1cmVEZWZpbmVzLnhjY29uZmln
IGluIEphdmFTY3JpcHRDb3JlLAorLy8gUEFMLCBXZWJDb3JlLCBXZWJLaXQgYW5kIFdlYktpdDIu
ICBBbHNvIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgRU5BQkxFX0ZFQVRVUkVfTkFNRSBtYWNy
b3MgaW4KKy8vIGJ1aWxkLXdlYmtpdCBzaG91bGQgbWF0Y2ggdGhlIHZhbHVlcyBiZWxvdywgYnV0
IHRoZXkgZG8gbm90IG5lZWQgdG8gYmUgaW4gdGhlIHNhbWUgb3JkZXIuCisKKy8vIEtlZXAgdGhp
cyBsaXN0IG9mIGZlYXR1cmVzIChub3QgZW5hYmxlZC9kaXNhYmxlZCBzdGF0ZSkgaW4gc3luYyB3
aXRoIEZlYXR1cmVEZWZpbmVzLnZzcHJvcHMKKy8vIGFuZCBGZWF0dXJlRGVmaW5lc0NhaXJvLnZz
cHJvcHMgaW4gV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzLgorCisvLyBTZXQgYW55
IEVOQUJMRV9GRUFUVVJFX05BTUUgbWFjcm8gdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGRpc2FibGUg
dGhhdCBmZWF0dXJlLgorCitFTkFCTEVfM0RfVFJBTlNGT1JNUyA9IEVOQUJMRV8zRF9UUkFOU0ZP
Uk1TOworRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyA9IDsKK0VOQUJMRV9BQ0NFTEVSQVRF
RF9PVkVSRkxPV19TQ1JPTExJTkdbc2RrPWlwaG9uZSpdID0gRU5BQkxFX0FDQ0VMRVJBVEVEX09W
RVJGTE9XX1NDUk9MTElORzsKK0VOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQgPSBFTkFCTEVfQVRU
QUNITUVOVF9FTEVNRU5UOworRU5BQkxFX0FWRl9DQVBUSU9OU1tzZGs9aXBob25lKl0gPSBFTkFC
TEVfQVZGX0NBUFRJT05TOworRU5BQkxFX0FWRl9DQVBUSU9OU1tzZGs9bWFjb3N4Kl0gPSAkKEVO
QUJMRV9BVkZfQ0FQVElPTlNfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1Ip
KTsKK0VOQUJMRV9BVkZfQ0FQVElPTlNfbWFjb3N4XzEwOTAgPSA7CitFTkFCTEVfQVZGX0NBUFRJ
T05TX21hY29zeF8xMDEwMDAgPSBFTkFCTEVfQVZGX0NBUFRJT05TOworRU5BQkxFX0FWRl9DQVBU
SU9OU19tYWNvc3hfMTAxMTAwID0gRU5BQkxFX0FWRl9DQVBUSU9OUzsKK0VOQUJMRV9DQUNIRV9Q
QVJUSVRJT05JTkcgPSBFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HOworRU5BQkxFX0NBTlZBU19Q
QVRIID0gRU5BQkxFX0NBTlZBU19QQVRIOworRU5BQkxFX0NBTlZBU19QUk9YWSA9IDsKK0VOQUJM
RV9DSEFOTkVMX01FU1NBR0lORyA9IEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORzsKK0VOQUJMRV9F
UzZfQ0xBU1NfU1lOVEFYID0gRU5BQkxFX0VTNl9DTEFTU19TWU5UQVg7CitFTkFCTEVfRVM2X1RF
TVBMQVRFX0xJVEVSQUxfU1lOVEFYID0gRU5BQkxFX0VTNl9URU1QTEFURV9MSVRFUkFMX1NZTlRB
WDsKK0VOQUJMRV9DT05URU5UX0ZJTFRFUklORyA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsK
K0VOQUJMRV9DU1BfTkVYVCA9IDsKK0VOQUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yID0gRU5B
QkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzI7CitFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JS
RUFLID0gRU5BQkxFX0NTU19CT1hfREVDT1JBVElPTl9CUkVBSzsKK0VOQUJMRV9DU1NfQ09NUE9T
SVRJTkcgPSBFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HOworRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRB
VElPTiA9IDsKK0VOQUJMRV9DU1NfR1JJRF9MQVlPVVQgPSBFTkFCTEVfQ1NTX0dSSURfTEFZT1VU
OworRU5BQkxFX0NTU19JTUFHRV9PUklFTlRBVElPTiA9IDsKK0VOQUJMRV9DU1NfSU1BR0VfUkVT
T0xVVElPTiA9IDsKK0VOQUJMRV9DU1NfUkVHSU9OUyA9IEVOQUJMRV9DU1NfUkVHSU9OUzsKK0VO
QUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCA9IEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNDsK
K0VOQUJMRV9DU1NfU0hBUEVTID0gRU5BQkxFX0NTU19TSEFQRVM7CitFTkFCTEVfQ1NTM19URVhU
ID0gOworRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFLID0gOworRU5BQkxFX0NVUlNPUl9WSVNJ
QklMSVRZID0gRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZOworRU5BQkxFX0NVU1RPTV9TQ0hFTUVf
SEFORExFUiA9IDsKK0VOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVFtzZGs9bWFjb3N4Kl0gPSBFTkFC
TEVfREFTSEJPQVJEX1NVUFBPUlQ7CitFTkFCTEVfREFUQUxJU1RfRUxFTUVOVCA9IDsKK0VOQUJM
RV9EQVRBX1RSQU5TRkVSX0lURU1TID0gOworRU5BQkxFX0RFVEFJTFNfRUxFTUVOVCA9IEVOQUJM
RV9ERVRBSUxTX0VMRU1FTlQ7CitFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OW3Nkaz1pcGhvbmUq
XSA9IEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT047CitFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RS
VUNUT1IgPSBFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1I7CitFTkFCTEVfRU5DUllQVEVE
X01FRElBW3Nkaz1tYWNvc3gqXSA9IEVOQUJMRV9FTkNSWVBURURfTUVESUE7CitFTkFCTEVfRU5D
UllQVEVEX01FRElBX1YyW3Nkaz1tYWNvc3gqXSA9IEVOQUJMRV9FTkNSWVBURURfTUVESUFfVjI7
CitFTkFCTEVfRklMVEVSU19MRVZFTF8yW3Nkaz1pcGhvbmUqXSA9IEVOQUJMRV9GSUxURVJTX0xF
VkVMXzI7CitFTkFCTEVfRklMVEVSU19MRVZFTF8yW3Nkaz1tYWNvc3gqXSA9ICQoRU5BQkxFX0ZJ
TFRFUlNfTEVWRUxfMl9tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwor
RU5BQkxFX0ZJTFRFUlNfTEVWRUxfMl9tYWNvc3hfMTA5MCA9IDsKK0VOQUJMRV9GSUxURVJTX0xF
VkVMXzJfbWFjb3N4XzEwMTAwMCA9IEVOQUJMRV9GSUxURVJTX0xFVkVMXzI7CitFTkFCTEVfRklM
VEVSU19MRVZFTF8yX21hY29zeF8xMDExMDAgPSBFTkFCTEVfRklMVEVSU19MRVZFTF8yOworRU5B
QkxFX0ZPTlRfTE9BRF9FVkVOVFMgPSA7CitFTkFCTEVfRlVMTFNDUkVFTl9BUElbc2RrPW1hY29z
eCpdID0gRU5BQkxFX0ZVTExTQ1JFRU5fQVBJOworRU5BQkxFX0dBTUVQQURbc2RrPW1hY29zeCpd
ID0gRU5BQkxFX0dBTUVQQUQ7CitFTkFCTEVfR0FNRVBBRF9ERVBSRUNBVEVEID0gOworRU5BQkxF
X0dFT0xPQ0FUSU9OID0gRU5BQkxFX0dFT0xPQ0FUSU9OOworRU5BQkxFX0hJRERFTl9QQUdFX0RP
TV9USU1FUl9USFJPVFRMSU5HW3Nkaz1tYWNvc3gqXSA9IEVOQUJMRV9ISURERU5fUEFHRV9ET01f
VElNRVJfVEhST1RUTElORzsKK0VOQUJMRV9JQ09OREFUQUJBU0Vbc2RrPW1hY29zeCpdID0gRU5B
QkxFX0lDT05EQVRBQkFTRTsKK0VOQUJMRV9TRVJWSUNFX0NPTlRST0xTW3Nkaz1tYWNvc3gqXSA9
ICQoRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFNfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJ
T05fTUFKT1IpKTsKK0VOQUJMRV9TRVJWSUNFX0NPTlRST0xTX21hY29zeF8xMDkwID0gOworRU5B
QkxFX1NFUlZJQ0VfQ09OVFJPTFNfbWFjb3N4XzEwMTAwMCA9IEVOQUJMRV9TRVJWSUNFX0NPTlRS
T0xTOworRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFNfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9TRVJW
SUNFX0NPTlRST0xTOworRU5BQkxFX0lOREVYRURfREFUQUJBU0UgPSBFTkFCTEVfSU5ERVhFRF9E
QVRBQkFTRTsKK0VOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMgPSA7CitFTkFCTEVf
SU5ESUVfVUkgPSBFTkFCTEVfSU5ESUVfVUk7CitFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUltzZGs9
bWFjb3N4Kl0gPSBFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUjsKK0VOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SX1BPUE9WRVJbc2RrPW1hY29zeCpdID0gRU5BQkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZF
UjsKK0VOQUJMRV9JTlBVVF9UWVBFX0RBVEVbc2RrPWlwaG9uZSpdID0gRU5BQkxFX0lOUFVUX1RZ
UEVfREFURTsKK0VOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUgPSA7CitFTkFC
TEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMW3Nkaz1pcGhvbmUqXSA9IEVOQUJMRV9JTlBVVF9U
WVBFX0RBVEVUSU1FTE9DQUw7CitFTkFCTEVfSU5QVVRfVFlQRV9NT05USFtzZGs9aXBob25lKl0g
PSBFTkFCTEVfSU5QVVRfVFlQRV9NT05USDsKK0VOQUJMRV9JTlBVVF9UWVBFX1RJTUVbc2RrPWlw
aG9uZSpdID0gRU5BQkxFX0lOUFVUX1RZUEVfVElNRTsKK0VOQUJMRV9JTlBVVF9UWVBFX1dFRUtb
c2RrPWlwaG9uZSpdID0gRU5BQkxFX0lOUFVUX1RZUEVfV0VFSzsKKworRU5BQkxFX0lOU1BFQ1RP
Ul9BTFRFUk5BVEVfRElTUEFUQ0hFUlNbc2RrPWlwaG9uZSpdID0gRU5BQkxFX0lOU1BFQ1RPUl9B
TFRFUk5BVEVfRElTUEFUQ0hFUlM7CitFTkFCTEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRD
SEVSU1tzZGs9bWFjb3N4Kl0gPSAkKEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENI
RVJTX21hY29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSkKK0VOQUJMRV9JTlNQ
RUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJTX21hY29zeF8xMDkwID0gOworRU5BQkxFX0lOU1BF
Q1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlNfbWFjb3N4XzEwMTAwMCA9IEVOQUJMRV9JTlNQRUNU
T1JfQUxURVJOQVRFX0RJU1BBVENIRVJTOworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElT
UEFUQ0hFUlNfbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9JTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BB
VENIRVJTOworCitFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUW3Nkaz1pcGhvbmUqXSA9
IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7CitFTkFCTEVfV0lSRUxFU1NfUExBWUJB
Q0tfVEFSR0VUW3Nkaz1tYWNvc3gqXSA9ICQoRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdF
VF9tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpCitFTkFCTEVfV0lSRUxF
U1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDkwID0gOworRU5BQkxFX1dJUkVMRVNTX1BMQVlC
QUNLX1RBUkdFVF9tYWNvc3hfMTAxMDAwID0gOworRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RB
UkdFVF9tYWNvc3hfMTAxMTAwID0gRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKKwor
RU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VT
VFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOwor
RU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5B
QkxFX0lPU19HRVNUVVJFX0VWRU5UUzsKKworRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkdbc2Rr
PWlwaG9uZSpdID0gRU5BQkxFX0lPU19URVhUX0FVVE9TSVpJTkc7CisKK0VOQUJMRV9JT1NfVE9V
Q0hfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX0lPU19UT1VDSF9FVkVOVFNfaW9zX1dJ
VEhfSU5URVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOworRU5BQkxFX0lPU19UT1VDSF9F
VkVOVFNfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9JT1NfVE9VQ0hfRVZFTlRT
OworCitFTkFCTEVfTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMgPSBFTkFCTEVfTEVHQUNZX0NT
U19WRU5ET1JfUFJFRklYRVM7CitFTkFCTEVfTEVHQUNZX05PVElGSUNBVElPTlNbc2RrPW1hY29z
eCpdID0gRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TOworRU5BQkxFX0xFR0FDWV9WRU5ET1Jf
UFJFRklYRVMgPSBFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUzsKK0VOQUJMRV9MRUdBQ1lf
V0VCX0FVRElPID0gRU5BQkxFX0xFR0FDWV9XRUJfQVVESU87CitFTkFCTEVfTEVUVEVSUFJFU1Nb
c2RrPWlwaG9uZSpdID0gRU5BQkxFX0xFVFRFUlBSRVNTOworRU5BQkxFX0xJTktfUFJFRkVUQ0gg
PSA7CitFTkFCTEVfTUFUSE1MID0gRU5BQkxFX01BVEhNTDsKK0VOQUJMRV9NRURJQV9DT05UUk9M
U19TQ1JJUFQgPSBFTkFCTEVfTUVESUFfQ09OVFJPTFNfU0NSSVBUOworCitFTkFCTEVfTUVESUFf
U09VUkNFW3Nkaz1tYWNvc3gqXSA9ICQoRU5BQkxFX01FRElBX1NPVVJDRV9tYWNvc3hfJChUQVJH
RVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOworRU5BQkxFX01FRElBX1NPVVJDRV9tYWNvc3hf
MTA5MCA9IDsKK0VOQUJMRV9NRURJQV9TT1VSQ0VfbWFjb3N4XzEwMTAwMCA9IEVOQUJMRV9NRURJ
QV9TT1VSQ0U7CitFTkFCTEVfTUVESUFfU09VUkNFX21hY29zeF8xMDExMDAgPSBFTkFCTEVfTUVE
SUFfU09VUkNFOworCitFTkFCTEVfTUVESUFfU1RBVElTVElDUyA9IDsKK0VOQUJMRV9NRVRFUl9F
TEVNRU5UW3Nkaz1tYWNvc3gqXSA9IEVOQUJMRV9NRVRFUl9FTEVNRU5UOworRU5BQkxFX01IVE1M
ID0gOworRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRVtzZGs9bWFjb3N4Kl0gPSBFTkFCTEVfTU9V
U0VfQ1VSU09SX1NDQUxFOworRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTID0gOworRU5B
QkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZID0gRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJF
TkNZOworRU5BQkxFX05PU05JRkYgPSA7CitFTkFCTEVfTk9USUZJQ0FUSU9OU1tzZGs9bWFjb3N4
Kl0gPSBFTkFCTEVfTk9USUZJQ0FUSU9OUzsKK0VOQUJMRV9QREZLSVRfUExVR0lOW3Nkaz1tYWNv
c3gqXSA9IEVOQUJMRV9QREZLSVRfUExVR0lOOworRU5BQkxFX1BJQ1RVUkVfU0laRVMgPSBFTkFC
TEVfUElDVFVSRV9TSVpFUzsKK0VOQUJMRV9QT0lOVEVSX0xPQ0sgPSA7CitFTkFCTEVfUFJPTUlT
RVMgPSBFTkFCTEVfUFJPTUlTRVM7CitFTkFCTEVfUFJPWElNSVRZX0VWRU5UUyA9IDsKK0VOQUJM
RV9QVUJMSUNfU1VGRklYX0xJU1QgPSBFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUOworRU5BQkxF
X1FVT1RBID0gOworRU5BQkxFX1JFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FID0gRU5BQkxFX1JFUVVF
U1RfQU5JTUFUSU9OX0ZSQU1FOworRU5BQkxFX1JFUVVFU1RfQVVUT0NPTVBMRVRFID0gOworRU5B
QkxFX1JFTU9URV9JTlNQRUNUT1Jbc2RrPWlwaG9uZSpdID0gRU5BQkxFX1JFTU9URV9JTlNQRUNU
T1I7CitFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUltzZGs9bWFjb3N4Kl0gPSAkKEVOQUJMRV9SRU1P
VEVfSU5TUEVDVE9SX21hY29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7CitF
TkFCTEVfUkVNT1RFX0lOU1BFQ1RPUl9tYWNvc3hfMTA5MCA9IDsKK0VOQUJMRV9SRU1PVEVfSU5T
UEVDVE9SX21hY29zeF8xMDEwMDAgPSBFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUjsKK0VOQUJMRV9S
RU1PVEVfSU5TUEVDVE9SX21hY29zeF8xMDExMDAgPSBFTkFCTEVfUkVNT1RFX0lOU1BFQ1RPUjsK
K0VOQUJMRV9SRVNPTFVUSU9OX01FRElBX1FVRVJZID0gOworRU5BQkxFX1JVQkJFUl9CQU5ESU5H
W3Nkaz1tYWNvc3gqXSA9IEVOQUJMRV9SVUJCRVJfQkFORElORzsKK0VOQUJMRV9DU1NfU0NST0xM
X1NOQVAgPSBFTkFCTEVfQ1NTX1NDUk9MTF9TTkFQOworRU5BQkxFX1NQRUVDSF9TWU5USEVTSVMg
PSBFTkFCTEVfU1BFRUNIX1NZTlRIRVNJUzsKK0VOQUJMRV9TVFJFQU1TX0FQSSA9IEVOQUJMRV9T
VFJFQU1TX0FQSTsKK0VOQUJMRV9TVUJUTEVfQ1JZUFRPID0gRU5BQkxFX1NVQlRMRV9DUllQVE87
CitFTkFCTEVfU1ZHX0ZPTlRTID0gRU5BQkxFX1NWR19GT05UUzsKK0VOQUJMRV9TVkdfT1RGX0NP
TlZFUlRFUiA9IEVOQUJMRV9TVkdfT1RGX0NPTlZFUlRFUjsKKworRU5BQkxFX1RFTEVQSE9ORV9O
VU1CRVJfREVURUNUSU9OW3Nkaz1pcGhvbmUqXSA9IEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RF
VEVDVElPTjsKK0VOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTltzZGs9bWFjb3N4Kl0g
PSAkKEVOQUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTl9tYWNvc3hfJChUQVJHRVRfTUFD
X09TX1hfVkVSU0lPTl9NQUpPUikpOworRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
X21hY29zeF8xMDkwID0gOworRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OX21hY29z
eF8xMDEwMDAgPSBFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT047CitFTkFCTEVfVEVM
RVBIT05FX05VTUJFUl9ERVRFQ1RJT05fbWFjb3N4XzEwMTEwMCA9IEVOQUJMRV9URUxFUEhPTkVf
TlVNQkVSX0RFVEVDVElPTjsKKworRU5BQkxFX1RFTVBMQVRFX0VMRU1FTlQgPSBFTkFCTEVfVEVN
UExBVEVfRUxFTUVOVDsKK0VOQUJMRV9URVhUX0FVVE9TSVpJTkcgPSA7CisKK0VOQUJMRV9DU1Nf
VFJBSUxJTkdfV09SRCA9IEVOQUJMRV9DU1NfVFJBSUxJTkdfV09SRDsKKworLy8gRklYTUU6IFJl
bW92ZSB0aGUgVVNFX0lOVEVSTkFMX1NESyBjb25kaXRpb24gb25jZSB3ZSBzdXBwb3J0IHRvdWNo
IGV2ZW50cyB3aGVuIGJ1aWxkaW5nIGZvciBpT1Mgd2l0aAorLy8gdGhlIHB1YmxpYyBTREsuIFdl
IHdpbGwgYWxzbyBuZWVkIHRvIHVwZGF0ZSBGZWF0dXJlRGVmaW5lcy5oLgorRU5BQkxFX1RPVUNI
X0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9UT1VDSF9FVkVOVFNfaW9zX1dJVEhfSU5U
RVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOworRU5BQkxFX1RPVUNIX0VWRU5UU19pb3Nf
V0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX1RPVUNIX0VWRU5UUzsKKworRU5BQkxFX1RP
VUNIX0lDT05fTE9BRElORyA9IDsKK0VOQUJMRV9VU0VSU0VMRUNUX0FMTCA9IEVOQUJMRV9VU0VS
U0VMRUNUX0FMTDsKK0VOQUJMRV9WSURFTyA9IEVOQUJMRV9WSURFTzsKK0VOQUJMRV9WSURFT19Q
UkVTRU5UQVRJT05fTU9ERVtzZGs9aXBob25lKl0gPSBFTkFCTEVfVklERU9fUFJFU0VOVEFUSU9O
X01PREU7CitFTkFCTEVfVklERU9fVFJBQ0sgPSBFTkFCTEVfVklERU9fVFJBQ0s7CitFTkFCTEVf
REFUQUNVRV9WQUxVRSA9IEVOQUJMRV9EQVRBQ1VFX1ZBTFVFOworRU5BQkxFX1ZJRVdfTU9ERV9D
U1NfTUVESUEgPSA7CitFTkFCTEVfV0VCR0wgPSBFTkFCTEVfV0VCR0w7CitFTkFCTEVfV0VCX0FV
RElPID0gRU5BQkxFX1dFQl9BVURJTzsKK0VOQUJMRV9XRUJfUkVQTEFZID0gJChFTkFCTEVfV0VC
X1JFUExBWV8kKFBMQVRGT1JNX05BTUUpXyQoQ09ORklHVVJBVElPTikpOworRU5BQkxFX1dFQl9S
RVBMQVlfbWFjb3N4X0RlYnVnID0gRU5BQkxFX1dFQl9SRVBMQVk7CitFTkFCTEVfV0VCX1JFUExB
WV9tYWNvc3hfUmVsZWFzZSA9IEVOQUJMRV9XRUJfUkVQTEFZOworRU5BQkxFX1dFQl9TT0NLRVRT
ID0gRU5BQkxFX1dFQl9TT0NLRVRTOworCitFTkFCTEVfV0VCX1RJTUlOR1tzZGs9aXBob25lKl0g
PSBFTkFCTEVfV0VCX1RJTUlORzsKK0VOQUJMRV9XRUJfVElNSU5HW3Nkaz1tYWNvc3gqXSA9ICQo
RU5BQkxFX1dFQl9USU1JTkdfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1Ip
KTsKK0VOQUJMRV9XRUJfVElNSU5HX21hY29zeF8xMDkwID0gOworRU5BQkxFX1dFQl9USU1JTkdf
bWFjb3N4XzEwMTAwMCA9IEVOQUJMRV9XRUJfVElNSU5HOworRU5BQkxFX1dFQl9USU1JTkdfbWFj
b3N4XzEwMTEwMCA9IEVOQUJMRV9XRUJfVElNSU5HOworCitFTkFCTEVfV0VCVlRUX1JFR0lPTlMg
PSBFTkFCTEVfV0VCVlRUX1JFR0lPTlM7CitFTkFCTEVfWEhSX1RJTUVPVVQgPSBFTkFCTEVfWEhS
X1RJTUVPVVQ7CisKKy8vIEZJWE1FOiBSZW1vdmUgdGhlIFVTRV9JTlRFUk5BTF9TREsgY29uZGl0
aW9uIG9uY2Ugd2Ugc3VwcG9ydCBYU0xUIHdoZW4gYnVpbGRpbmcgZm9yIGlPUyB3aXRoIHRoZQor
Ly8gcHVibGljIFNESy4gV2Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRlIEZlYXR1cmVEZWZpbmVz
LmguCitFTkFCTEVfWFNMVFtzZGs9bWFjb3N4Kl0gPSBFTkFCTEVfWFNMVDsKK0VOQUJMRV9YU0xU
W3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxFX1hTTFRfaW9zX1dJVEhfSU5URVJOQUxfU0RLXyQoVVNF
X0lOVEVSTkFMX1NESykpOworRU5BQkxFX1hTTFRfaW9zX1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9
IEVOQUJMRV9YU0xUOworCitFTkFCTEVfRlRMX0pJVFtzZGs9bWFjb3N4Kl0gPSBFTkFCTEVfRlRM
X0pJVDsKK0VOQUJMRV9GVExfSklUW3Nkaz1pcGhvbmVvcypdID0gRU5BQkxFX0ZUTF9KSVQ7CisK
K0VOQUJMRV9KSVQgPSBFTkFCTEVfSklUOworCitFTkFCTEVfU0FUVVJBVEVEX0xBWU9VVF9BUklU
SE1FVElDID0gRU5BQkxFX1NBVFVSQVRFRF9MQVlPVVRfQVJJVEhNRVRJQzsKKworRkVBVFVSRV9E
RUZJTkVTID0gJChFTkFCTEVfM0RfVFJBTlNGT1JNUykgJChFTkFCTEVfQUNDRUxFUkFURURfMkRf
Q0FOVkFTKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpICQoRU5BQkxF
X0FWRl9DQVBUSU9OUykgJChFTkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UKSAkKEVOQUJMRV9DQUNI
RV9QQVJUSVRJT05JTkcpICQoRU5BQkxFX0NBTlZBU19QQVRIKSAkKEVOQUJMRV9DQU5WQVNfUFJP
WFkpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9FUzZfQ0xBU1NfU1lOVEFY
KSAkKEVOQUJMRV9FUzZfVEVNUExBVEVfTElURVJBTF9TWU5UQVgpICQoRU5BQkxFX0NPTlRFTlRf
RklMVEVSSU5HKSAkKEVOQUJMRV9DU1BfTkVYVCkgJChFTkFCTEVfQ1NTX0FOSU1BVElPTlNfTEVW
RUxfMikgJChFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLKSAkKEVOQUJMRV9DU1NfQ09N
UE9TSVRJTkcpICQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJChFTkFCTEVfQ1NTX0dS
SURfTEFZT1VUKSAkKEVOQUJMRV9DU1NfSU1BR0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0NTU19J
TUFHRV9SRVNPTFVUSU9OKSAkKEVOQUJMRV9DU1NfUkVHSU9OUykgJChFTkFCTEVfQ1NTX1NFTEVD
VE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19TSEFQRVMpICQoRU5BQkxFX0NTUzNfVEVYVCkgJChF
TkFCTEVfQ1NTM19URVhUX0xJTkVfQlJFQUspICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAk
KEVOQUJMRV9DVVNUT01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JU
KSAkKEVOQUJMRV9EQVRBTElTVF9FTEVNRU5UKSAkKEVOQUJMRV9EQVRBX1RSQU5TRkVSX0lURU1T
KSAkKEVOQUJMRV9ERVRBSUxTX0VMRU1FTlQpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikg
JChFTkFCTEVfRE9NNF9FVkVOVFNfQ09OU1RSVUNUT1IpICQoRU5BQkxFX0VOQ1JZUFRFRF9NRURJ
QSkgJChFTkFCTEVfRU5DUllQVEVEX01FRElBX1YyKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIp
ICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAkKEVO
QUJMRV9HQU1FUEFEKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dFT0xP
Q0FUSU9OKSAkKEVOQUJMRV9ISURERU5fUEFHRV9ET01fVElNRVJfVEhST1RUTElORykgJChFTkFC
TEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9TRVJWSUNFX0NPTlRST0xTKSAkKEVOQUJMRV9JTkRF
WEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlMpICQoRU5B
QkxFX0lORElFX1VJKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NPTE9SKSAkKEVOQUJMRV9JTlBVVF9U
WVBFX0NPTE9SX1BPUE9WRVIpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURSkgJChFTkFCTEVfSU5Q
VVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1F
TE9DQUwpICQoRU5BQkxFX0lOUFVUX1RZUEVfTU9OVEgpICQoRU5BQkxFX0lOUFVUX1RZUEVfVElN
RSkgJChFTkFCTEVfSU5QVVRfVFlQRV9XRUVLKSAkKEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19U
QVJHRVQpICQoRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUykgJChFTkFCTEVfSU9TX1RFWFRfQVVU
T1NJWklORykgJChFTkFCTEVfSU9TX1RPVUNIX0VWRU5UUykgJChFTkFCTEVfTEVHQUNZX0NTU19W
RU5ET1JfUFJFRklYRVMpICQoRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9M
RUdBQ1lfVkVORE9SX1BSRUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfV0VCX0FVRElPKSAkKEVOQUJM
RV9MRVRURVJQUkVTUykgJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfTUFUSE1MKSAk
KEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NPVVJDRSkgJChF
TkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVURVJfRUxFTUVOVCkgJChFTkFCTEVf
TUhUTUwpICQoRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRSkgJChFTkFCTEVfTkFWSUdBVE9SX0NP
TlRFTlRfVVRJTFMpICQoRU5BQkxFX05BVklHQVRPUl9IV0NPTkNVUlJFTkNZKSAkKEVOQUJMRV9O
T1RJRklDQVRJT05TKSAkKEVOQUJMRV9QREZLSVRfUExVR0lOKSAkKEVOQUJMRV9QT0lOVEVSX0xP
Q0spICQoRU5BQkxFX1BST01JU0VTKSAkKEVOQUJMRV9QUk9YSU1JVFlfRVZFTlRTKSAkKEVOQUJM
RV9QVUJMSUNfU1VGRklYX0xJU1QpICQoRU5BQkxFX1FVT1RBKSAkKEVOQUJMRV9SRVFVRVNUX0FO
SU1BVElPTl9GUkFNRSkgJChFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUpICQoRU5BQkxFX1JF
TU9URV9JTlNQRUNUT1IpICQoRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVFUlkpICQoRU5BQkxF
X1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9DU1NfU0NST0xMX1NOQVApICQoRU5BQkxFX1NQRUVD
SF9TWU5USEVTSVMpICQoRU5BQkxFX1NUUkVBTVNfQVBJKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRP
KSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19PVEZfQ09OVkVSVEVSKSAkKEVOQUJM
RV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJChFTkFCTEVfVEVNUExBVEVfRUxFTUVOVCkg
JChFTkFCTEVfVEVYVF9BVVRPU0laSU5HKSAkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICQoRU5BQkxF
X1RPVUNIX0lDT05fTE9BRElORykgJChFTkFCTEVfQ1NTX1RSQUlMSU5HX1dPUkQpICQoRU5BQkxF
X1VTRVJTRUxFQ1RfQUxMKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfVklERU9fVFJBQ0spICQo
RU5BQkxFX0RBVEFDVUVfVkFMVUUpICQoRU5BQkxFX1ZJRVdfTU9ERV9DU1NfTUVESUEpICQoRU5B
QkxFX1dFQkdMKSAkKEVOQUJMRV9XRUJfQVVESU8pICQoRU5BQkxFX1dFQl9SRVBMQVkpICQoRU5B
QkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9QSUNUVVJFX1NJWkVTKSAkKEVOQUJMRV9XRUJfVElN
SU5HKSAkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJChFTkFCTEVfWEhSX1RJTUVPVVQpICQoRU5B
QkxFX1hTTFQpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfU0FUVVJB
VEVEX0xBWU9VVF9BUklUSE1FVElDKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvUEFML0NvbmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZyBiL1Nv
dXJjZS9QQUwvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhNWUyYzRh
YzlhMmU0OTIwZmMyNDc1ZTJlM2JkNDMxNTk5YTNhOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvUEFML0NvbmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZwpAQCAtMCwwICsxLDMxIEBACisvLyBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8v
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNsdWRlICJG
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyIKKworRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CitJTlNU
QUxMX1BBVEhfQUNUVUFMID0gL3Vzci9sb2NhbC9saWI7CitQUk9EVUNUX05BTUUgPSBQQUw7CisK
K0dDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gWUVTOworU1RSSVBfSU5TVEFMTEVEX1BST0RV
Q1QgPSBOTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9QQUwvTWFrZWZpbGUgYi9Tb3VyY2UvUEFML01h
a2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNiNGMxMWE1N2M2NzM5YTE0MjZhNWJiOWQ4MTJiNzMwMDFlNjlk
OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUEFML01ha2VmaWxlCkBAIC0wLDAgKzEgQEAK
K2luY2x1ZGUgLi4vTWFrZWZpbGUuc2hhcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWZiNWQ3Mjg3NjJkMTJiODEzMWYwNjRjZGFlZDI3ODZm
ZWU0YmVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMCwwICsxLDMxOCBAQAorLy8gISQqVVRGOCokIQoreworCWFyY2hpdmVW
ZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDQ2OworCW9i
amVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTFDREU0M0ZE
MUFGOTkzQjIwMDExQzM5MCAvKiBGb28uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDREU0M0ZDMUFGOTkzQjIwMDExQzM5MCAvKiBGb28uaCAqLzsgfTsK
KwkJMUNERTQzRkYxQUY5OTY1NDAwMTFDMzkwIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNERTQzRkUxQUY5OTY1NDAwMTFDMzkwIC8q
IGNvbmZpZy5oICovOyB9OworCQkxQ0RFNDQwMjFBRjk5OThBMDAxMUMzOTAgLyogUEFMUHJlZml4
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0RFNDQw
MTFBRjk5OThBMDAxMUMzOTAgLyogUEFMUHJlZml4LmggKi87IH07CisJCUMyMTREOUYzMUFDRTM1
NzkwMDFDODBCQSAvKiBGb28uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzIxNEQ5RjIxQUNFMzU3OTAwMUM4MEJBIC8qIEZvby5jcHAgKi87IH07Cisv
KiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5j
ZSBzZWN0aW9uICovCisJCTFDREU0M0Y3MUFGOTkyMDkwMDExQzM5MCAvKiBQQUwueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBuYW1lID0gUEFMLnhjY29uZmlnOyBwYXRoID0gQ29u
ZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
Q0RFNDNGODFBRjk5MkJBMDAxMUMzOTAgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC54Y2NvbmZpZzsgbmFtZSA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgcGF0aCA9IENv
bmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUNERTQzRjkxQUY5OTJFNTAwMTFDMzkwIC8qIEJhc2UueGNjb25maWcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBuYW1lID0gQmFzZS54Y2NvbmZpZzsgcGF0aCA9IENvbmZpZ3Vy
YXRpb25zL0Jhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDREU0
M0ZDMUFGOTkzQjIwMDExQzM5MCAvKiBGb28uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRm9vLmg7IHBhdGggPSBncmFwaGljcy9Gb28uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUNERTQzRkUxQUY5OTY1NDAwMTFDMzkwIC8qIGNvbmZpZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUNERTQ0MDAxQUY5OTdBQjAwMTFDMzkwIC8qIEZlYXR1cmVEZWZpbmVzLnhjY29uZmln
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgbmFtZSA9IEZlYXR1cmVEZWZpbmVzLnhjY29uZmln
OyBwYXRoID0gQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDREU0NDAxMUFGOTk5OEEwMDExQzM5MCAvKiBQQUxQcmVm
aXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUEFMUHJlZml4Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMTREOUVBMUFDRTM0RDYwMDFDODBCQSAvKiBsaWJQ
QUwuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJj
aGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliUEFMLmE7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUMyMTREOUYyMUFDRTM1NzkwMDFDODBCQSAvKiBG
b28uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRm9vLmNwcDsgcGF0
aCA9IGdyYXBoaWNzL0Zvby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisvKiBFbmQg
UEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKwkJQzIxNEQ5RTcxQUNFMzRENjAwMUM4MEJBIC8qIEZyYW1ld29y
a3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJ
MUNERTQzRjYxQUY5OTE4NDAwMTFDMzkwIC8qIENvbmZpZ3VyYXRpb25zICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQ0RFNDNGNzFBRjk5MjA5MDAxMUMz
OTAgLyogUEFMLnhjY29uZmlnICovLAorCQkJCTFDREU0M0Y4MUFGOTkyQkEwMDExQzM5MCAvKiBE
ZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8sCisJCQkJMUNERTQzRjkxQUY5OTJFNTAwMTFDMzkwIC8q
IEJhc2UueGNjb25maWcgKi8sCisJCQkJMUNERTQ0MDAxQUY5OTdBQjAwMTFDMzkwIC8qIEZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnICovLAorCQkJKTsKKwkJCW5hbWUgPSBDb25maWd1cmF0aW9uczsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUMyMTREOUUxMUFDRTM0RDYwMDFD
ODBCQSA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUNERTQ0
MDExQUY5OTk4QTAwMTFDMzkwIC8qIFBBTFByZWZpeC5oICovLAorCQkJCTFDREU0M0ZFMUFGOTk2
NTQwMDExQzM5MCAvKiBjb25maWcuaCAqLywKKwkJCQkxQ0RFNDNGNjFBRjk5MTg0MDAxMUMzOTAg
LyogQ29uZmlndXJhdGlvbnMgKi8sCisJCQkJQzIxNEQ5RjExQUNFMzUzRjAwMUM4MEJBIC8qIGdy
YXBoaWNzICovLAorCQkJCUMyMTREOUVCMUFDRTM0RDYwMDFDODBCQSAvKiBQcm9kdWN0cyAqLywK
KwkJCSk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDMjE0RDlFQjFBQ0Uz
NEQ2MDAxQzgwQkEgLyogUHJvZHVjdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUMyMTREOUVBMUFDRTM0RDYwMDFDODBCQSAvKiBsaWJQQUwuYSAqLywK
KwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OworCQlDMjE0RDlGMTFBQ0UzNTNGMDAxQzgwQkEgLyogZ3JhcGhpY3MgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMyMTREOUYyMUFDRTM1NzkwMDFD
ODBCQSAvKiBGb28uY3BwICovLAorCQkJCTFDREU0M0ZDMUFGOTkzQjIwMDExQzM5MCAvKiBGb28u
aCAqLywKKwkJCSk7CisJCQluYW1lID0gZ3JhcGhpY3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYSGVh
ZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQlDMjE0RDlFODFBQ0UzNEQ2MDAxQzgwQkEgLyog
SGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTFDREU0M0ZGMUFGOTk2
NTQwMDExQzM5MCAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDREU0M0ZEMUFGOTkz
QjIwMDExQzM5MCAvKiBGb28uaCBpbiBIZWFkZXJzICovLAorCQkJCTFDREU0NDAyMUFGOTk5OEEw
MDExQzM5MCAvKiBQQUxQcmVmaXguaCBpbiBIZWFkZXJzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEhlYWRlcnNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24g
Ki8KKwkJQzIxNEQ5RTkxQUNFMzRENjAwMUM4MEJBIC8qIFBBTCAqLyA9IHsKKwkJCWlzYSA9IFBC
WE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBDMjE0RDlFRTFBQ0Uz
NEQ2MDAxQzgwQkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgIlBBTCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQlDMjE0RDlFNjFBQ0UzNEQ2MDAx
QzgwQkEgLyogU291cmNlcyAqLywKKwkJCQlDMjE0RDlFNzFBQ0UzNEQ2MDAxQzgwQkEgLyogRnJh
bWV3b3JrcyAqLywKKwkJCQlDMjE0RDlFODFBQ0UzNEQ2MDAxQzgwQkEgLyogSGVhZGVycyAqLywK
KwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJ
CSk7CisJCQluYW1lID0gUEFMOworCQkJcHJvZHVjdE5hbWUgPSBQQUw7CisJCQlwcm9kdWN0UmVm
ZXJlbmNlID0gQzIxNEQ5RUExQUNFMzRENjAwMUM4MEJBIC8qIGxpYlBBTC5hICovOworCQkJcHJv
ZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyI7CisJCX07
CisvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUHJvamVj
dCBzZWN0aW9uICovCisJCUMyMTREOUUyMUFDRTM0RDYwMDFDODBCQSAvKiBQcm9qZWN0IG9iamVj
dCAqLyA9IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJCUxh
c3RVcGdyYWRlQ2hlY2sgPSAwNjIwOworCQkJCU9SR0FOSVpBVElPTk5BTUUgPSBjb20uYXBwbGU7
CisJCQkJVGFyZ2V0QXR0cmlidXRlcyA9IHsKKwkJCQkJQzIxNEQ5RTkxQUNFMzRENjAwMUM4MEJB
ID0geworCQkJCQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9uID0gNi4yOworCQkJCQl9OworCQkJCX07
CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEMyMTREOUU1MUFDRTM0RDYwMDFD
ODBCQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIlBBTCIgKi87
CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRS
ZWdpb24gPSBFbmdsaXNoOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7CisJCQlrbm93
blJlZ2lvbnMgPSAoCisJCQkJZW4sCisJCQkpOworCQkJbWFpbkdyb3VwID0gQzIxNEQ5RTExQUNF
MzRENjAwMUM4MEJBOworCQkJcHJvZHVjdFJlZkdyb3VwID0gQzIxNEQ5RUIxQUNFMzRENjAwMUM4
MEJBIC8qIFByb2R1Y3RzICovOworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RS
b290ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCUMyMTREOUU5MUFDRTM0RDYwMDFDODBCQSAv
KiBQQUwgKi8sCisJCQkpOworCQl9OworLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCisv
KiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCUMyMTREOUU2MUFDRTM0
RDYwMDFDODBCQSAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJ
QzIxNEQ5RjMxQUNFMzU3OTAwMUM4MEJBIC8qIEZvby5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7
CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVu
ZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25m
aWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMUNERTQzRkExQUY5OTM1QTAwMTFDMzkwIC8qIFByb2R1
Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gMUNERTQzRjkxQUY5OTJFNTAwMTFDMzkwIC8qIEJhc2UueGNj
b25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9Q
QVRIUyA9IE5POworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzB4IjsK
KwkJCQlDTEFOR19DWFhfTElCUkFSWSA9ICJsaWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RV
TEVTID0gWUVTOworCQkJCUNMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19X
QVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZF
UlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9ESVJFQ1RfT0JKQ19JU0FfVVNBR0UgPSBZRVNf
RVJST1I7CisJCQkJQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5f
RU5VTV9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZ
RVM7CisJCQkJQ0xBTkdfV0FSTl9PQkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJCQkJQ0xB
TkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FU
RV9NRVRIT0RfTUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURF
QlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUVOQUJMRV9O
U19BU1NFUlRJT05TID0gTk87CisJCQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZRVM7
CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfV0FSTl82NF9U
T18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQ
RSA9IFlFU19FUlJPUjsKKwkJCQlHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOwor
CQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlH
Q0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklB
QkxFID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjEwOworCQkJCU1U
TF9FTkFCTEVfREVCVUdfSU5GTyA9IE5POworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQl9Owor
CQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTFDREU0M0ZCMUFGOTkzNUEwMDExQzM5MCAv
KiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDREU0M0Y3MUFGOTkyMDkwMDExQzM5MCAvKiBQ
QUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUVYRUNVVEFCTEVfUFJF
RklYID0gbGliOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQl9Owor
CQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCUMyMTREOUVDMUFDRTM0RDYwMDFDODBCQSAv
KiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQ0RFNDNGODFBRjk5MkJBMDAxMUMzOTAgLyogRGVidWdS
ZWxlYXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VB
UkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAi
Z251KysweCI7CisJCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAibGliYysrIjsKKwkJCQlDTEFOR19F
TkFCTEVfTU9EVUxFUyA9IFlFUzsKKwkJCQlDTEFOR19FTkFCTEVfT0JKQ19BUkMgPSBZRVM7CisJ
CQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT05T
VEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VT
QUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lOVF9DT05W
RVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19ST09UX0NMQVNTID0gWUVTX0VSUk9S
OworCQkJCUNMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IFlFUzsKKwkJCQlDTEFOR19XQVJO
X19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBO
TzsKKwkJCQlFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKKwkJCQlHQ0NfQ19MQU5H
VUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJ
CUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5J
VElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsK
KwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdDQ19XQVJOXzY0X1RP
XzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBF
ID0gWUVTX0VSUk9SOworCQkJCUdDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CisJ
CQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFU19BR0dSRVNTSVZFOworCQkJCUdD
Q19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFC
TEUgPSBZRVM7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuMTA7CisJCQkJTVRM
X0VOQUJMRV9ERUJVR19JTkZPID0gWUVTOworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJ
CQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCUMy
MTREOUVEMUFDRTM0RDYwMDFDODBCQSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDREU0M0Y4
MUFGOTkyQkEwMDExQzM5MCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi87CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUNMQU5H
X0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJnbnUrKzB4IjsKKwkJCQlDTEFOR19DWFhfTElCUkFS
WSA9ICJsaWJjKysiOworCQkJCUNMQU5HX0VOQUJMRV9NT0RVTEVTID0gWUVTOworCQkJCUNMQU5H
X0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xB
TkdfV0FSTl9ESVJFQ1RfT0JKQ19JU0FfVVNBR0UgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FS
Tl9FTVBUWV9CT0RZID0gWUVTOworCQkJCUNMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVT
OworCQkJCUNMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9P
QkpDX1JPT1RfQ0xBU1MgPSBZRVNfRVJST1I7CisJCQkJQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9D
T0RFID0gWUVTOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7
CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1B
VCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUVOQUJMRV9OU19BU1NFUlRJT05TID0gTk87CisJ
CQkJRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZRVM7CisJCQkJR0NDX0NfTEFOR1VBR0Vf
U1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9
IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKKwkJCQlH
Q0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElB
TElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJ
T04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCU1BQ09T
WF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjEwOworCQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9
IE5POworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJ
CX07CisJCUMyMTREOUVGMUFDRTM0RDYwMDFDODBCQSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAx
Q0RFNDNGNzFBRjk5MjA5MDAxMUMzOTAgLyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlFWEVDVVRBQkxFX1BSRUZJWCA9IGxpYjsKKwkJCQlQUk9EVUNUX05BTUUg
PSAiJChUQVJHRVRfTkFNRSkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJQzIx
NEQ5RjAxQUNFMzRENjAwMUM4MEJBIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUNERTQzRjcx
QUY5OTIwOTAwMTFDMzkwIC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFS
R0VUX05BTUUpIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1
aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxp
c3Qgc2VjdGlvbiAqLworCQlDMjE0RDlFNTFBQ0UzNEQ2MDAxQzgwQkEgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJQQUwiICovID0geworCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJQzIxNEQ5RUMx
QUNFMzRENjAwMUM4MEJBIC8qIERlYnVnICovLAorCQkJCUMyMTREOUVEMUFDRTM0RDYwMDFDODBC
QSAvKiBSZWxlYXNlICovLAorCQkJCTFDREU0M0ZBMUFGOTkzNUEwMDExQzM5MCAvKiBQcm9kdWN0
aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUMyMTREOUVFMUFD
RTM0RDYwMDFDODBCQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRh
cmdldCAiUEFMIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWls
ZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCUMyMTREOUVGMUFDRTM0RDYwMDFDODBCQSAvKiBEZWJ1
ZyAqLywKKwkJCQlDMjE0RDlGMDFBQ0UzNEQ2MDAxQzgwQkEgLyogUmVsZWFzZSAqLywKKwkJCQkx
Q0RFNDNGQjFBRjk5MzVBMDAxMUMzOTAgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5h
bWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAq
LworCX07CisJcm9vdE9iamVjdCA9IEMyMTREOUUyMUFDRTM0RDYwMDFDODBCQSAvKiBQcm9qZWN0
IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9QQUwvUEFMUHJlZml4LmggYi9Tb3Vy
Y2UvUEFML1BBTFByZWZpeC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4NzdhYWExNzRkOTdlZWY2NjQ4YzllODQz
OGVjMzE5ZGRkMDRmZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUEFML1BBTFByZWZpeC5o
CkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDEzIEFwcGxlIEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKy8qIFRoaXMgcHJlZml4IGZpbGUgc2hvdWxkIGNv
bnRhaW4gb25seTogCisgKiAgICAxKSBmaWxlcyB0byBwcmVjb21waWxlIGZvciBmYXN0ZXIgYnVp
bGRzCisgKiAgICAyKSBpbiBvbmUgY2FzZSBhdCBsZWFzdDogT1MtWC1zcGVjaWZpYyBwZXJmb3Jt
YW5jZSBidWcgd29ya2Fyb3VuZHMKKyAqICAgIDMpIHRoZSBzcGVjaWFsIHRyaWNrIHRvIGNhdGNo
IHVzIHVzaW5nIG5ldyBvciBkZWxldGUgd2l0aG91dCBpbmNsdWRpbmcgImNvbmZpZy5oIgorICog
VGhlIHByb2plY3Qgc2hvdWxkIGJlIGFibGUgdG8gYnVpbGQgd2l0aG91dCB0aGlzIGhlYWRlciwg
YWx0aG91Z2ggd2UgcmFyZWx5IHRlc3QgdGhhdC4KKyAqLworCisvKiBUaGluZ3MgdGhhdCBuZWVk
IHRvIGJlIGRlZmluZWQgZ2xvYmFsbHkgc2hvdWxkIGdvIGludG8gImNvbmZpZy5oIi4gKi8KKwor
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgZGVmaW5lZChfX0FQUExFX18pCisjaWZk
ZWYgX19jcGx1c3BsdXMKKyNkZWZpbmUgTlVMTCBfX251bGwKKyNlbHNlCisjZGVmaW5lIE5VTEwg
KCh2b2lkICopMCkKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBPUyhXSU5ET1dTKQorCisjaWZuZGVm
IF9XSU4zMl9XSU5OVAorI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgwNTAyCisjZW5kaWYKKworI2lm
bmRlZiBXSU5WRVIKKyNkZWZpbmUgV0lOVkVSIDB4MDUwMgorI2VuZGlmCisKKyNpZiAhVVNFKENV
UkwpCisjaWZuZGVmIF9XSU5TT0NLQVBJXworI2RlZmluZSBfV0lOU09DS0FQSV8gLy8gUHJldmVu
dCBpbmNsdXNpb24gb2Ygd2luc29jay5oIGluIHdpbmRvd3MuaAorI2VuZGlmCisjZW5kaWYKKwor
I3VuZGVmIFBBTF9FWFBPUlQKKyNkZWZpbmUgUEFMX0VYUE9SVCBXVEZfRVhQT1JUX0RFQ0xBUkFU
SU9OCisKKyNlbHNlCisKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisKKyNlbmRpZiAvLyBPUyhXSU5E
T1dTKQorCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpZiBk
ZWZpbmVkKF9fQVBQTEVfXykKKyNpbmNsdWRlIDxyZWdleC5oPgorI2VuZGlmCisKKyNpbmNsdWRl
IDxzZXRqbXAuaD4KKworI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgor
I2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGli
Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2lmIGRlZmluZWQo
X19BUFBMRV9fKQorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVz
cGx1cworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1ZGUg
PG5ldz4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0FQUExFX18pCisjaW5jbHVkZSA8c3lzL3Bh
cmFtLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lmIGRlZmluZWQoX19BUFBM
RV9fKQorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Cisj
ZW5kaWYKKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisKKyNp
ZiBPUyhXSU5ET1dTKQorI2lmbmRlZiBDRl9JTVBMSUNJVF9CUklER0lOR19FTkFCTEVECisjZGVm
aW5lIENGX0lNUExJQ0lUX0JSSURHSU5HX0VOQUJMRUQKKyNlbmRpZgorCisjaWZuZGVmIENGX0lN
UExJQ0lUX0JSSURHSU5HX0RJU0FCTEVECisjZGVmaW5lIENGX0lNUExJQ0lUX0JSSURHSU5HX0RJ
U0FCTEVECisjZW5kaWYKKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGQmFzZS5oPgorCisj
aWZuZGVmIENGX0VOVU0KKyNkZWZpbmUgQ0ZfRU5VTShfdHlwZSwgX25hbWUpIF90eXBlIF9uYW1l
OyBlbnVtCisjZW5kaWYKKyNpZm5kZWYgQ0ZfT1BUSU9OUworI2RlZmluZSBDRl9PUFRJT05TKF90
eXBlLCBfbmFtZSkgX3R5cGUgX25hbWU7IGVudW0KKyNlbmRpZgorI2lmbmRlZiBDRl9FTlVNX0RF
UFJFQ0FURUQKKyNkZWZpbmUgQ0ZfRU5VTV9ERVBSRUNBVEVEKF9tYWNJbnRybywgX21hY0RlcCwg
X2lvc0ludHJvLCBfaW9zRGVwKQorI2VuZGlmCisjaWZuZGVmIENGX0VOVU1fQVZBSUxBQkxFCisj
ZGVmaW5lIENGX0VOVU1fQVZBSUxBQkxFKF9tYWMsIF9pb3MpCisjZW5kaWYKKyNlbmRpZgorCisj
aWYgUExBVEZPUk0oV0lOX0NBSVJPKQorI2luY2x1ZGUgPENvbmRpdGlvbmFsTWFjcm9zLmg+Cisj
aW5jbHVkZSA8d2luZG93cy5oPgorI2Vsc2UKKworI2lmIE9TKFdJTkRPV1MpCisjaWYgVVNFKENH
KQorCisvLyBGSVhNRSA8cmRhcjovL3Byb2JsZW0vODIwODg2OD4gUmVtb3ZlIHN1cHBvcnQgZm9y
IG9ic29sZXRlIENvbG9yU3luYyBBUEksIENvcmVTZXJ2aWNlcyBoZWFkZXIgaW4gQ29yZUdyYXBo
aWNzCisvLyBXZSBjYW4gcmVtb3ZlIHRoaXMgb25jZSB0aGUgbmV3IENvbG9yU3luYyBBUElzIGFy
ZSBhdmFpbGFibGUgaW4gYW4gaW50ZXJuYWwgU2FmYXJpIFNESy4KKyNpbmNsdWRlIDxDb2xvclN5
bmMvQ29sb3JTeW5jLmg+CisjaWZkZWYgX19DT0xPUlNZTkNERVBSRUNBVEVEX18KKyNkZWZpbmUg
Q09SRUdSQVBISUNTX0lOQ0xVREVTX0NPUkVTRVJWSUNFU19IRUFERVIKKyNkZWZpbmUgT0JTT0xF
VEVfQ09MT1JTWU5DX0FQSQorI2VuZGlmCisjZW5kaWYKKyNpZiBVU0UoQ0ZORVRXT1JLKQorLyog
V2luZG93cyBkb2Vzbid0IGluY2x1ZGUgQ0ZOZXR3b3JrLmggdmlhIENvcmVTZXJ2aWNlcy5oLCBz
byB3ZSBkbworICAgaXQgZXhwbGljaXRseSBoZXJlIHRvIG1ha2UgV2luZG93cyBtb3JlIGNvbnNp
c3RlbnQgd2l0aCBNYWMuICovCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorLy8g
T24gV2luZG93cywgZGlzcGF0Y2guaCBuZWVkcyB0byBiZSBpbmNsdWRlZCBiZWZvcmUgY2VydGFp
biBDRk5ldHdvcmsgaGVhZGVycy4KKyNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgorI2Vu
ZGlmCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2Vsc2UKKyNpZiAhUExBVEZPUk0oSU9TKQorI2lu
Y2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KKyNlbmRpZiAvLyAhUExBVEZPUk0o
SU9TKQorI2VuZGlmIC8vIE9TKFdJTkRPV1MpCisKKyNlbmRpZgorCisjaWZkZWYgX19PQkpDX18K
KyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNl
bHNlCisjaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKyNl
bmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKKyNkZWZpbmUgbmV3ICgiaWYgeW91IHVzZSBuZXcv
ZGVsZXRlIG1ha2Ugc3VyZSB0byBpbmNsdWRlIGNvbmZpZy5oIGF0IHRoZSB0b3Agb2YgdGhlIGZp
bGUiKCkpIAorI2RlZmluZSBkZWxldGUgKCJpZiB5b3UgdXNlIG5ldy9kZWxldGUgbWFrZSBzdXJl
IHRvIGluY2x1ZGUgY29uZmlnLmggYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSIoKSkgCisjZW5kaWYK
KworLyogV2hlbiBDKysgZXhjZXB0aW9ucyBhcmUgZGlzYWJsZWQsIHRoZSBDKysgbGlicmFyeSBk
ZWZpbmVzIHx0cnl8IGFuZCB8Y2F0Y2h8CisgKiB0byBhbGxvdyBDKysgY29kZSB0aGF0IGV4cGVj
dHMgZXhjZXB0aW9ucyB0byBidWlsZC4gVGhlc2UgZGVmaW5pdGlvbnMKKyAqIGludGVyZmVyZSB3
aXRoIE9iamVjdGl2ZS1DKysgdXNlcyBvZiBPYmplY3RpdmUtQyBleGNlcHRpb24gaGFuZGxlcnMs
IHdoaWNoCisgKiB1c2UgfEB0cnl8IGFuZCB8QGNhdGNofC4gQXMgYSB3b3JrYXJvdW5kLCB1bmRl
ZmluZSB0aGVzZSBtYWNyb3MuICovCisjaWZkZWYgX19PQkpDX18KKyN1bmRlZiB0cnkKKyN1bmRl
ZiBjYXRjaAorI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9QQUwvY29uZmlnLmggYi9Tb3Vy
Y2UvUEFML2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3ODE4MTM0ZTcyMTI5ZTk1ZDY1OWQxYjY3YWUy
ZjQ4ZWE3NDUzM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUEFML2NvbmZpZy5oCkBAIC0w
LDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2lmIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgJiYgSEFWRV9DT05G
SUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCisjaW5jbHVkZSAiY21ha2Vjb25m
aWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3Rm
L0V4cG9ydE1hY3Jvcy5oPgorCisjaWYgT1MoV0lORE9XUykKKworI2lmbmRlZiBfV0lOMzJfV0lO
TlQKKyNpZiBkZWZpbmVkKF9NX1g2NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSAKKyNkZWZpbmUg
X1dJTjMyX1dJTk5UIDB4NjAwCisjZWxzZQorI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgwNTAyCisj
ZW5kaWYKKyNlbmRpZgorCisjaWZuZGVmIFdJTlZFUgorI2lmIGRlZmluZWQoX01fWDY0KSB8fCBk
ZWZpbmVkKF9feDg2XzY0X18pIAorI2RlZmluZSBXSU5WRVIgMHgwNjAwCisjZWxzZQorI2RlZmlu
ZSBXSU5WRVIgMHgwNTAyCisjZW5kaWYKKyNlbmRpZgorCisjaWYgIUNPTVBJTEVSKE1TVkM3X09S
X0xPV0VSKQorLy8gV2UgbmVlZCB0byBkZWZpbmUgdGhpcyBiZWZvcmUgdGhlIGZpcnN0ICNpbmNs
dWRlIG9mIHN0ZGxpYi5oIG9yIGl0IHdvbid0IGNvbnRhaW4gcmFuZF9zLgorI2lmbmRlZiBfQ1JU
X1JBTkRfUworI2RlZmluZSBfQ1JUX1JBTkRfUworI2VuZGlmCisjZW5kaWYKKworI2VuZGlmCisK
KyNpZmRlZiBfX2NwbHVzcGx1cworI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBl
Lmg+CisKKyNpZiBDT01QSUxFUihNU1ZDKQorI2RlZmluZSBTS0lQX1NUQVRJQ19DT05TVFJVQ1RP
UlNfT05fTVNWQyAxCisjZWxzZQorI2RlZmluZSBTS0lQX1NUQVRJQ19DT05TVFJVQ1RPUlNfT05f
R0NDIDEKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1BBTC9ncmFwaGljcy9Gb28uY3BwIGIv
U291cmNlL1BBTC9ncmFwaGljcy9Gb28uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNjkyNjgyZTFkY2ViYzgx
OTRmMTRjOGI5NTBmNDg4MmFmMmMwMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUEFML2dy
YXBoaWNzL0Zvby5jcHAKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJGb28uaCIKKworbmFtZXNwYWNlIFBBTCB7CisKK2ludCBmb28o
aW50LCBjaGFyKQoreworICAgIHJldHVybiAxNzsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1BBTC9ncmFwaGljcy9Gb28uaCBiL1NvdXJjZS9QQUwvZ3JhcGhpY3MvRm9vLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDRkODZhYzk1ODJiMjFmNjQ3Njg2MDYxOTdhYzc3OWMzMTU0YmEzMAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9QQUwvZ3JhcGhpY3MvRm9vLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGb29faAor
I2RlZmluZSBGb29faAorCituYW1lc3BhY2UgUEFMIHsKKworaW50IGZvbyhpbnQsIGNoYXIpOwor
Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCBmYzkwZjYxMTU2MjMxYTQxY2E5MTM3ZjE3Yzc5
NTVlOGQzNzNiMGVhLi4yODlhMzM5NDQ0MjRmOTQ1ZmZkNjFjMDY4ZTUxN2ZmMDFjMmIyMzk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZwpAQCAtMjMsNyArMjMsNyBAQAogLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogLy8gVGhlIGNv
bnRlbnRzIG9mIHRoaXMgZmlsZSBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIEZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnIGluIEphdmFTY3JpcHRDb3JlLAotLy8gV2ViQ29yZSwgV2ViS2l0IGFuZCBX
ZWJLaXQyLiAgQWxzbyB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIEVOQUJMRV9GRUFUVVJFX05B
TUUgbWFjcm9zIGluCisvLyBQQUwsIFdlYkNvcmUsIFdlYktpdCBhbmQgV2ViS2l0Mi4gIEFsc28g
dGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBFTkFCTEVfRkVBVFVSRV9OQU1FIG1hY3JvcyBpbgog
Ly8gYnVpbGQtd2Via2l0IHNob3VsZCBtYXRjaCB0aGUgdmFsdWVzIGJlbG93LCBidXQgdGhleSBk
byBub3QgbmVlZCB0byBiZSBpbiB0aGUgc2FtZSBvcmRlci4KIAogLy8gS2VlcCB0aGlzIGxpc3Qg
b2YgZmVhdHVyZXMgKG5vdCBlbmFibGVkL2Rpc2FibGVkIHN0YXRlKSBpbiBzeW5jIHdpdGggRmVh
dHVyZURlZmluZXMudnNwcm9wcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGFjZGM5OThjMDZhOTQwODhkYzQyMGJmZDIxN2NlNjdk
MWNhOTQ1ZTYuLmU3OWUxYjFhYWJlNzk3NDZlMzQ2YmQ2ZTI1NDBlNDQyMjYyN2ZmZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTU2MjYsNiArNTYyNiw3IEBACiAJCUMwRjJBNDQxMTM4NjlBQUIwMDY2QzUzNCAvKiBwcmVwcm9j
ZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxMDVEQTYyMEYzQUE2OEYwMDFE
RDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MTBGM0FBNjhGMDAxREQ0NEYgLyogVGV4
dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovOyB9OwogCQlDMTA1REE2NDBGM0FBNkI4MDAxREQ0
NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMxMDVEQTYzMEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2Rp
bmdEZXRlY3Rvci5oICovOyB9OworCQlDMjE0RDlGNTFBQ0UzNUI0MDAxQzgwQkEgLyogbGliUEFM
LmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjE0
RDlGNDFBQ0UzNUI0MDAxQzgwQkEgLyogbGliUEFMLmEgKi87IH07CiAJCUMzMzBBMjIzMTNFQzE5
NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMzMzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29z
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
MzNFRTVDNDE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzRUU1
QzIxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcCAq
LzsgfTsKIAkJQzMzRUU1QzUxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5
SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMzNFRTVDMzE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5
cGUuaCAqLzsgfTsKQEAgLTEzMTY3LDYgKzEzMTY4LDcgQEAKIAkJQzBGMkE0M0YxMzg2OUEyODAw
NjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBwcmVwcm9jZXNzb3Iu
cG07IHBhdGggPSBzY3JpcHRzL3ByZXByb2Nlc3Nvci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzEwNURBNjEwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9y
SUNVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRFbmNvZGlu
Z0RldGVjdG9ySUNVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjMw
RjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRFbmNvZGluZ0RldGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyMTREOUY0MUFDRTM1QjQwMDFDODBCQSAvKiBsaWJQQUwuYSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7
IHBhdGggPSBsaWJQQUwuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJ
QzI0Njg1MTMxQTE0OEUxODAwODExNzkyIC8qIENvcmVHcmFwaGljc1NQSS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBDb3JlR3JhcGhpY3NTUEkuaDsgcGF0aCA9IGNnL0NvcmVH
cmFwaGljc1NQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkM0Q0IxRDE2MUEx
MzEyMDBEMjE0REEgLyogV2ViU2FmZUluY3JlbWVudGFsU3dlZXBlcklPUy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVySU9TLmg7IHBh
dGggPSBpb3MvV2ViU2FmZUluY3JlbWVudGFsU3dlZXBlcklPUy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMzMwQTIyMTEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yQ2hvb3Nlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1MjIsNiArMTQ1MjQsNyBAQAogCQkJaXNhID0gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owog
CQkJZmlsZXMgPSAoCisJCQkJQzIxNEQ5RjUxQUNFMzVCNDAwMUM4MEJBIC8qIGxpYlBBTC5hIGlu
IEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTIxMkIwNDhBMzAwRUQ5OEM2IC8qIEFjY2VsZXJh
dGUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTMxMkIwNDhBMzAwRUQ5
OEM2IC8qIEF1ZGlvVG9vbGJveC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJE
QkYxNTEyQjA0OEEzMDBFRDk4QzYgLyogQ29yZUF1ZGlvLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovLApAQCAtMTQ5NTQsNiArMTQ5NTcsNyBAQAogCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcg
LyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJQzIxNEQ5RjQxQUNFMzVCNDAwMUM4MEJBIC8qIGxpYlBBTC5hICovLAogCQkJCUZEMkRC
RjBFMTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVyYXRlLmZyYW1ld29yayAqLywKIAkJCQlGRDJE
QkYwRjEyQjA0OEEzMDBFRDk4QzYgLyogQXVkaW9Ub29sYm94LmZyYW1ld29yayAqLywKIAkJCQlG
RDJEQkYxMTEyQjA0OEEzMDBFRDk4QzYgLyogQ29yZUF1ZGlvLmZyYW1ld29yayAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhj
Y29uZmlnIGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKaW5kZXggZmM5MGY2MTE1NjIzMWE0MWNhOTEzN2YxN2M3OTU1ZThkMzczYjBlYS4u
Mjg5YTMzOTQ0NDI0Zjk0NWZmZDYxYzA2OGU1MTdmZjAxYzJiMjM5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKQEAgLTIzLDcgKzIzLDcgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIFRoZSBjb250ZW50cyBv
ZiB0aGlzIGZpbGUgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBGZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZyBpbiBKYXZhU2NyaXB0Q29yZSwKLS8vIFdlYkNvcmUsIFdlYktpdCBhbmQgV2ViS2l0Mi4g
IEFsc28gdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBFTkFCTEVfRkVBVFVSRV9OQU1FIG1hY3Jv
cyBpbgorLy8gUEFMLCBXZWJDb3JlLCBXZWJLaXQgYW5kIFdlYktpdDIuICBBbHNvIHRoZSBkZWZh
dWx0IHZhbHVlcyBvZiB0aGUgRU5BQkxFX0ZFQVRVUkVfTkFNRSBtYWNyb3MgaW4KIC8vIGJ1aWxk
LXdlYmtpdCBzaG91bGQgbWF0Y2ggdGhlIHZhbHVlcyBiZWxvdywgYnV0IHRoZXkgZG8gbm90IG5l
ZWQgdG8gYmUgaW4gdGhlIHNhbWUgb3JkZXIuCiAKIC8vIEtlZXAgdGhpcyBsaXN0IG9mIGZlYXR1
cmVzIChub3QgZW5hYmxlZC9kaXNhYmxlZCBzdGF0ZSkgaW4gc3luYyB3aXRoIEZlYXR1cmVEZWZp
bmVzLnZzcHJvcHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKaW5kZXggZmM5MGY2MTE1NjIzMWE0MWNhOTEzN2YxN2M3OTU1
ZThkMzczYjBlYS4uMjg5YTMzOTQ0NDI0Zjk0NWZmZDYxYzA2OGU1MTdmZjAxYzJiMjM5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcKQEAgLTIzLDcgKzIzLDcgQEAKIC8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIC8vIFRoZSBjb250
ZW50cyBvZiB0aGlzIGZpbGUgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBGZWF0dXJlRGVmaW5l
cy54Y2NvbmZpZyBpbiBKYXZhU2NyaXB0Q29yZSwKLS8vIFdlYkNvcmUsIFdlYktpdCBhbmQgV2Vi
S2l0Mi4gIEFsc28gdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBFTkFCTEVfRkVBVFVSRV9OQU1F
IG1hY3JvcyBpbgorLy8gUEFMLCBXZWJDb3JlLCBXZWJLaXQgYW5kIFdlYktpdDIuICBBbHNvIHRo
ZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgRU5BQkxFX0ZFQVRVUkVfTkFNRSBtYWNyb3MgaW4KIC8v
IGJ1aWxkLXdlYmtpdCBzaG91bGQgbWF0Y2ggdGhlIHZhbHVlcyBiZWxvdywgYnV0IHRoZXkgZG8g
bm90IG5lZWQgdG8gYmUgaW4gdGhlIHNhbWUgb3JkZXIuCiAKIC8vIEtlZXAgdGhpcyBsaXN0IG9m
IGZlYXR1cmVzIChub3QgZW5hYmxlZC9kaXNhYmxlZCBzdGF0ZSkgaW4gc3luYyB3aXRoIEZlYXR1
cmVEZWZpbmVzLnZzcHJvcHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA2MWJmNGI1M2NmZjFjNjAxOTM3YjcxNDYwZjk0ODY3ZGE5MjZjYTBmLi44
NjgxM2U4YThkM2ExNTMzMGEyMWU5Yjg1NmU2YWIwNmI0ZmZhZjdlIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTUt
MDUtMDUgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9idWls
ZC13ZWJraXQ6IEFkZCBpdCB0byBidWlsZC13ZWJraXQuCisKIDIwMTUtMDUtMDUgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0ZXN0IGZp
eCBhZnRlciByMTgzNzk4LgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQg
Yi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCA2NGQ1ZWZjMjZiNmI4YWFkNDYyYjhi
MzM4ZWQ2Yjk0OWZjYzU4MWZlLi5iYTg5Y2M1YjhkZWU3MmQ0NWM2YTM5MjE1MzU2MjVlMThmMDlh
MmY2IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAorKysgYi9Ub29scy9T
Y3JpcHRzL2J1aWxkLXdlYmtpdApAQCAtMTQzLDcgKzE0Myw3IEBAIHNldENvbmZpZ3VyYXRpb24o
KTsKIG15ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwogCiAjIENoZWNrIHRoYXQgYWxsIHRo
ZSBwcm9qZWN0IGRpcmVjdG9yaWVzIGFyZSB0aGVyZS4KLW15IEBwcm9qZWN0cyA9ICgiU291cmNl
L0phdmFTY3JpcHRDb3JlIiwgIlNvdXJjZS9XZWJDb3JlIiwgIlNvdXJjZS9XZWJLaXQiKTsKK215
IEBwcm9qZWN0cyA9ICgiU291cmNlL0phdmFTY3JpcHRDb3JlIiwgIlNvdXJjZS9QQUwiLCAiU291
cmNlL1dlYkNvcmUiLCAiU291cmNlL1dlYktpdCIpOwogCiAjIEJ1aWxkIFdURiBhcyBhIHNlcGFy
YXRlIHN0YXRpYyBsaWJyYXJ5IG9uIHBvcnRzIHdoaWNoIHN1cHBvcnQgaXQuCiBzcGxpY2UgQHBy
b2plY3RzLCAwLCAwLCAiU291cmNlL1dURiIgaWYgaXNBcHBsZU1hY1dlYktpdCgpIG9yIGlzQXBw
bGVXaW5XZWJLaXQoKSBvciBpc1dpbkNhaXJvKCk7CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9D
aGFuZ2VMb2cKaW5kZXggMzUwOGRkNzM2YTQ3NTZiNWIxNTM1M2RjNTVlZWU0OTA1ZjhmNGVhZS4u
OWNkMjQyOWM5YzlhZjk4ZDM4Y2Q4NzcwMTRkZmM5NzJkMDdkN2U4MyAxMDA2NDQKLS0tIGEvQ2hh
bmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTA1LTA1ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC54Y3dvcmtzcGFjZS9jb250
ZW50cy54Y3dvcmtzcGFjZWRhdGE6IEFkZCBpdCB0byB0aGUgd29ya3NwYWNlLgorCiAyMDE1LTA1
LTA0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2Nt
YWtlXSBEaXNhYmxlIEdOVSBHb2xkIGxpbmtlciBvbiBDb3J0ZXggQTUzCmRpZmYgLS1naXQgYS9X
ZWJLaXQueGN3b3Jrc3BhY2UvY29udGVudHMueGN3b3Jrc3BhY2VkYXRhIGIvV2ViS2l0Lnhjd29y
a3NwYWNlL2NvbnRlbnRzLnhjd29ya3NwYWNlZGF0YQppbmRleCA1MzUzZWMzYWZiN2NmNDY1ZDI1
ZDY3NTczMGJiOTkyNDc2ZDg0MTE2Li4xMjRmZTg1NzAxMmZjN2VkODM1NDE0OTUxYWVlNTU5ZTlm
MTFiNDJhIDEwMDY0NAotLS0gYS9XZWJLaXQueGN3b3Jrc3BhY2UvY29udGVudHMueGN3b3Jrc3Bh
Y2VkYXRhCisrKyBiL1dlYktpdC54Y3dvcmtzcGFjZS9jb250ZW50cy54Y3dvcmtzcGFjZWRhdGEK
QEAgLTIsNiArMiw5IEBACiA8V29ya3NwYWNlCiAgICB2ZXJzaW9uID0gIjEuMCI+CiAgICA8Rmls
ZVJlZgorICAgICAgbG9jYXRpb24gPSAiZ3JvdXA6U291cmNlL1BBTC9QQUwueGNvZGVwcm9qIj4K
KyAgIDwvRmlsZVJlZj4KKyAgIDxGaWxlUmVmCiAgICAgICBsb2NhdGlvbiA9ICJncm91cDpTb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvaiI+CiAgICA8L0ZpbGVSZWY+CiAgICA8RmlsZVJl
Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252658</attachid>
            <date>2015-05-07 17:21:11 -0700</date>
            <delta_ts>2015-05-07 18:06:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20150507171953.patch</filename>
            <type>text/plain</type>
            <size>20182</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWFlZTY1MTVjMGQ5MGUy
OTcwOGI4OTc3M2U2OTE0ODA1YTVhMWZiOC4uMzIzN2MyMmU3ZWJiNmU3YjlkYjY1ZThkMDk2NmZj
ZjBmNmY0NjE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA1LTA3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgV2ViQ29yZSB0
YXJnZXQgYW5kIHN0YXRpYyBsaWJyYXJ5LiBUaGlzIGlzIGludGVuZGVkIHRvIGJlCisgICAgICAg
IHRoZSBkZXN0aW5hdGlvbiB0YXJnZXQgdG8gYnVpbGQgY29kZSB0aGF0IGN1cnJlbnRseSByZXNp
ZGVzIGluCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0uIEZpbGVzIHdpbGwgYmUgbW92ZWQgaW50
byB0aGF0IHRhcmdldCBmaWxlIGJ5IGZpbGUuCisgICAgICAgIFNlcGFyYXRpbmcgdGhpcyBwbGF0
Zm9ybSBjb2RlIGludG8gaXRzIG93biBzdGF0aWMgbGlicmFyeSBlbmZvcmNlcworICAgICAgICBs
YXllcmluZywgYXMgd2VsbCBhcyBlbmNvdXJhZ2VzL2FpZHMgdW5pdCB0ZXN0aW5nIG9mIHRoaXMg
cGxhdGZvcm0gY29kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9QQUwueGNjb25m
aWc6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QQUxQbGFjZWhvbGRlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UEFMZm9vKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Q
QUxQbGFjZWhvbGRlci5oOiBBZGRlZC4KKwogMjAxNS0wNS0wNiAgRGVhbiBKYWNrc29uICA8ZGlu
b0BhcHBsZS5jb20+CiAKICAgICAgICAgSGFuZGxlIGJhY2tkcm9wIHZpZXdzIHRoYXQgaGF2ZSB0
byB0aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNj
b25maWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmRjY2JlNmYzODY1YzA3YjVhYTEwMTdjMDU3ODNjMThlNWVlZjcyYgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZwpAQCAt
MCwwICsxLDI5IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0Ogor
Ly8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
Ly8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNs
dWRlICJGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyIKKyNpbmNsdWRlICJWZXJzaW9uLnhjY29uZmln
IgorCitIRUFERVJfU0VBUkNIX1BBVEhTID0gRm9yd2FyZGluZ0hlYWRlcnMgaWN1ICQoSEVBREVS
X1NFQVJDSF9QQVRIUyk7CitQUk9EVUNUX05BTUUgPSBQQUw7CisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhY2RmOTA1NjMzODU5
NmI4MTM0ODYzMDRmNjcxZDJkY2U1YzkwZWM2Li4wNjY2YjgzNDY1OTJmYThhODkyZTQwZTJiNjRk
OWZjOTZkMDgxNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC05NDEsNiArOTQxLDcgQEAKIAkJMUMyNDE3QkExOTkyQzA0MTAw
RUY5OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNDE3QjkxOTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxsaW5n
RG90QDN4LnBuZyAqLzsgfTsKIAkJMUMyNjQ5N0EwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50
TG9hZGVyTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi87
IH07CiAJCTFDMjY0OTdDMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjY0OTdCMEQ3RTI0RUMwMEJE
MTBGMiAvKiBQYWdlTWFjLmNwcCAqLzsgfTsKKwkJMUMyOUVDMkQxQUZDMTMxRDAwOUUwQTgyIC8q
IGxpYlBBTC5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUMyOUVDMjgxQUZDMTJGNTAwOUUwQTgyIC8qIGxpYlBBTC5hICovOyB9OwogCQkxQzY0NjYy
NTFBMTJDMzhFMDA5NDYwM0MgLyogQ29yZVRleHRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUU5ODBGMUEwMkNFRkEwMDJEQjU1RiAvKiBDb3Jl
VGV4dFNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTFDNjQ2NjI4MUExMkM0MjAwMDk0NjAzQyAvKiBOU0ZvbnRTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNjQ2NjI3MUExMkMzRjkwMDk0NjAz
QyAvKiBOU0ZvbnRTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxQzgxQjk1QTBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5
NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTU4LDYgKzk1OSw4IEBACiAJ
CTFDQ0E3MzIyMTBBREQ0NEEwMEZENDQwRCAvKiBET01IVE1MSW5wdXRFbGVtZW50UHJpdmF0ZS5o
IGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNDQTczMjExMEFERDQzRTAwRkQ0NDBEIC8qIERPTUhUTUxJbnB1dEVsZW1lbnRQcml2
YXRlLmggKi87IH07CiAJCTFDQ0RGNUJEMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRD
b252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDQ0RGNUJCMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNw
cCAqLzsgfTsKIAkJMUNDREY1QkUxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZl
cnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
Q0RGNUJDMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmggKi87IH07
CisJCTFDRUZCQTEwMUFGQzEzQzQwMDY5RjJBNyAvKiBQQUxQbGFjZWhvbGRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFRkJBMEYxQUZDMTNDNDAw
NjlGMkE3IC8qIFBBTFBsYWNlaG9sZGVyLmggKi87IH07CisJCTFDRUZCQTEyMUFGQzEzRDIwMDY5
RjJBNyAvKiBQQUxQbGFjZWhvbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQ0VGQkExMTFBRkMxM0QyMDA2OUYyQTcgLyogUEFMUGxhY2Vob2xk
ZXIuY3BwICovOyB9OwogCQkxQ0Y2QkRGQTBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
RjZCREY4MEU5QkIyNkEwMDI1RTFDRCAvKiBPYmpDRXZlbnRMaXN0ZW5lci5oICovOyB9OwogCQkx
Q0Y2QkRGQjBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0Y2QkRGOTBFOUJCMjZBMDAy
NUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIubW0gKi87IH07CiAJCTFDRjZCRTE0MEU5QkI0Njcw
MDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZCRTEyMEU5QkI0NjcwMDI1RTFDRCAvKiBP
YmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSAqLzsgfTsKQEAgLTY4MDksNiArNjgxMiwxMyBAQAog
LyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSBzZWN0aW9uICovCisJCTFDRUZCQTEzMUFGQzE0NUUwMDY5RjJBNyAvKiBQQlhDb250
YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJ
CQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBv
YmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAx
QzI5RUMyNzFBRkMxMkY1MDA5RTBBODI7CisJCQlyZW1vdGVJbmZvID0gUEFMOworCQl9OwogCQk0
MTdEQTZENDEzNzM0RTBEMDA3QzU3RkIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewog
CQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2
N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtODA0NCw2ICs4
MDU0LDcgQEAKIAkJMUMyNDE3QjkxOTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBu
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdl
LnBuZzsgcGF0aCA9ICJTcGVsbGluZ0RvdEAzeC5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRMb2FkZXJNYWMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzI2NDk3QjBEN0UyNEVDMDBCRDEw
RjIgLyogUGFnZU1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
YWdlTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMyOUVDMjgxQUZDMTJG
NTAwOUUwQTgyIC8qIGxpYlBBTC5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJQ
QUwuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUM1RTk4MEYxQTAy
Q0VGQTAwMkRCNTVGIC8qIENvcmVUZXh0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVUZXh0U1BJ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDNjQ2NjI3MUExMkMzRjkwMDk0NjAz
QyAvKiBOU0ZvbnRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNGb250U1BJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JD
b250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgwNjIsMTEgKzgwNzMs
MTQgQEAKIAkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0NUU1MEJBOUM4NDYwMEY5MDE0NyAv
KiBXZWJDb3JlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYkNv
cmUueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDREQ0NUU2MEJBOUM4
NDYwMEY5MDE0NyAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDRUZCQTBG
MUFGQzEzQzQwMDY5RjJBNyAvKiBQQUxQbGFjZWhvbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQQUxQbGFjZWhvbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQ0VGQkExMTFBRkMxM0QyMDA2OUYyQTcgLyogUEFMUGxhY2Vob2xkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUEFMUGxhY2Vob2xkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0Y2QkRGODBFOUJCMjZBMDAyNUUxQ0QgLyogT2Jq
Q0V2ZW50TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqQ0V2
ZW50TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGNkJERjkwRTlC
QjI2QTAwMjVFMUNEIC8qIE9iakNFdmVudExpc3RlbmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gT2JqQ0V2ZW50TGlzdGVuZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDRjZCRTEyMEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRl
ckNvbmRpdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE9i
akNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0Y2QkUxMzBFOUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8q
IGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBh
dGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9
OworCQkxQ0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEgLyogUEFMLnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IFBBTC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzQzNCRTgx
MzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFGM0MzQkU5MTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUY3MkJGMDgxODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250
cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1MuY3BwOyBwYXRoID0gaW9zL1Rp
bGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNDUwOCw2ICsxNDUyMiwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJ
CTFDMjlFQzI1MUFGQzEyRjUwMDlFMEE4MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0g
UEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCX07CiAJCTQxN0RBNkNFMTM3MzRFMDIwMDdDNTdGQiAvKiBGcmFtZXdvcmtz
ICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTQ1MjIsNiArMTQ1NDMsNyBAQAogCQkJaXNhID0gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owog
CQkJZmlsZXMgPSAoCisJCQkJMUMyOUVDMkQxQUZDMTMxRDAwOUUwQTgyIC8qIGxpYlBBTC5hIGlu
IEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTIxMkIwNDhBMzAwRUQ5OEM2IC8qIEFjY2VsZXJh
dGUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTMxMkIwNDhBMzAwRUQ5
OEM2IC8qIEF1ZGlvVG9vbGJveC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJE
QkYxNTEyQjA0OEEzMDBFRDk4QzYgLyogQ29yZUF1ZGlvLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovLApAQCAtMTQ1NjcsNiArMTQ1ODksNyBAQAogCQkJCUUxQkE2NzE2MTc0MkJERTAwMEMyMDI1
MSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8sCiAJCQkJNDE3REE2RDAxMzczNEUwMjAw
N0M1N0ZCIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQk5M0YxOUIxQTA4
MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi8sCisJCQkJMUMyOUVDMjgxQUZD
MTJGNTAwOUUwQTgyIC8qIGxpYlBBTC5hICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsK
IAkJCXNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsKQEAgLTE1NTUxLDYgKzE1NTc0LDcgQEAKIAkJ
CQkxQ0RENDVFNTBCQTlDODQ2MDBGOTAxNDcgLyogV2ViQ29yZS54Y2NvbmZpZyAqLywKIAkJCQlF
MUJBNjZGMjE3NDJCRENDMDBDMjAyNTEgLyogV2ViQ29yZVRlc3RTaGltLnhjY29uZmlnICovLAog
CQkJCTQxODE3MDdEMTM4NkVERjIwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1cHBvcnQueGNjb25m
aWcgKi8sCisJCQkJMUNGREI1NEIxQUZDMTc3RTAwOTRFRjIxIC8qIFBBTC54Y2NvbmZpZyAqLywK
IAkJCSk7CiAJCQlwYXRoID0gQ29uZmlndXJhdGlvbnM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMjA3NTcsNiArMjA3ODEsOCBAQAogCQkJCUZCQzIyMEREMTIzN0ZCRUIwMEJDRjc4
OCAvKiBvcGVuZ2wgKi8sCiAJCQkJMzcyMTQ5MzMxOEYwQjZENjAwMTU2RURDIC8qIG9wZW50eXBl
ICovLAogCQkJCTQ5RTkxMUIyMEVGODZEMjcwMDlEMENBRiAvKiB0cmFuc2Zvcm1zICovLAorCQkJ
CTFDRUZCQTBGMUFGQzEzQzQwMDY5RjJBNyAvKiBQQUxQbGFjZWhvbGRlci5oICovLAorCQkJCTFD
RUZCQTExMUFGQzEzRDIwMDY5RjJBNyAvKiBQQUxQbGFjZWhvbGRlci5jcHAgKi8sCiAJCQkJMDdF
M0RGRDAxQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlhUGxheWJhY2tUYXJnZXQuaCAqLywKIAkJCQk0
OTA3MDdFNDEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICovLAogCQkJ
CTQ5MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oICovLApAQCAt
MjM2NzAsNiArMjM2OTYsMTQgQEAKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMUMyOUVDMjYxQUZDMTJGNTAw
OUUwQTgyIC8qIEhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxQ0VG
QkExMDFBRkMxM0M0MDA2OUYyQTcgLyogUEFMUGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9Owog
CQk0MTdEQTZDQzEzNzM0RTAyMDA3QzU3RkIgLyogSGVhZGVycyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAg
LTI3MjQzLDYgKzI3Mjc3LDIzIEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkxQzI5RUMyNzFB
RkMxMkY1MDA5RTBBODIgLyogUEFMICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0Owor
CQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFDMjlFQzJDMUFGQzEyRjYwMDlFMEE4MiAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUEFMIiAqLzsKKwkJ
CWJ1aWxkUGhhc2VzID0gKAorCQkJCTFDMjlFQzI2MUFGQzEyRjUwMDlFMEE4MiAvKiBIZWFkZXJz
ICovLAorCQkJCTFDMjlFQzI0MUFGQzEyRjUwMDlFMEE4MiAvKiBTb3VyY2VzICovLAorCQkJCTFD
MjlFQzI1MUFGQzEyRjUwMDlFMEE4MiAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxk
UnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBQ
QUw7CisJCQlwcm9kdWN0TmFtZSA9IFBBTDsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxQzI5RUMy
ODFBRkMxMkY1MDA5RTBBODIgLyogbGliUEFMLmEgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20u
YXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKIAkJNDE3REE2Q0YxMzcz
NEUwMjAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydCAqLyA9IHsKIAkJCWlzYSA9IFBCWE5h
dGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA0MTdEQTZEODEzNzM0RTQ3
MDA3QzU3RkIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
IldlYkNvcmVUZXN0U3VwcG9ydCIgKi87CkBAIC0yNzI4MSw2ICsyNzMzMiw3IEBACiAJCQlidWls
ZFJ1bGVzID0gKAogCQkJKTsKIAkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkxQ0VGQkExNDFBRkMx
NDVFMDA2OUYyQTcgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQlERDA0MUZGMTA5RDlF
MzI1MDAxMEFGMkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCSk7CiAJCQluYW1lID0g
V2ViQ29yZTsKQEAgLTI3MzM5LDYgKzI3MzkxLDcgQEAKIAkJCQlERDA0MUZCRTA5RDlEREJFMDAx
MEFGMkEgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTQxN0RBNkNGMTM3MzRFMDIwMDdDNTdG
QiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi8sCiAJCQkJRTFCQTY2RjMxNzQyQkRFMDAwQzIwMjUx
IC8qIFdlYkNvcmVUZXN0U2hpbSAqLywKKwkJCQkxQzI5RUMyNzFBRkMxMkY1MDA5RTBBODIgLyog
UEFMICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KQEAgLTI3
NDY0LDYgKzI3NTE3LDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzI5
RUMyNDFBRkMxMkY1MDA5RTBBODIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJj
ZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVz
ID0gKAorCQkJCTFDRUZCQTEyMUFGQzEzRDIwMDY5RjJBNyAvKiBQQUxQbGFjZWhvbGRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJfTsKIAkJNDE3REE2Q0QxMzczNEUwMjAwN0M1N0ZCIC8qIFNvdXJjZXMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CkBAIC0zMDUyMyw2ICszMDU4NCwxMSBAQAogLyogRW5kIFBCWFNvdXJjZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0
aW9uICovCisJCTFDRUZCQTE0MUFGQzE0NUUwMDY5RjJBNyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDFDMjlF
QzI3MUFGQzEyRjUwMDlFMEE4MiAvKiBQQUwgKi87CisJCQl0YXJnZXRQcm94eSA9IDFDRUZCQTEz
MUFGQzE0NUUwMDY5RjJBNyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTQx
N0RBNkQ1MTM3MzRFMEQwMDdDNTdGQiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJ
aXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdldCA9IDkzRjE5OEE1MDgyNDVFNTkw
MDFFOUFCQyAvKiBXZWJDb3JlICovOwpAQCAtMzA2MjMsNiArMzA2ODksMjcgQEAKIAkJCX07CiAJ
CQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJMUMyOUVDMjkxQUZDMTJGNjAwOUUwQTgyIC8q
IERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29u
ZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDRkRCNTRCMUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwueGNj
b25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsK
KwkJfTsKKwkJMUMyOUVDMkExQUZDMTJGNjAwOUUwQTgyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gMUNGREI1NEIxQUZDMTc3RTAwOTRFRjIxIC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTFDMjlFQzJC
MUFGQzEyRjYwMDlFMEE4MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDRkRCNTRCMUFG
QzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQk0MTdEQTZEMTEzNzM0RTAyMDA3
QzU3RkIgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDE4MTcwN0QxMzg2RURGMjAwNTdBQUE0IC8q
IFdlYkNvcmVUZXN0U3VwcG9ydC54Y2NvbmZpZyAqLzsKQEAgLTMwNzMzLDYgKzMwODIwLDE2IEBA
CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OworCQkxQzI5RUMyQzFBRkMxMkY2MDA5RTBB
ODIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIg
Ki8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0
aW9ucyA9ICgKKwkJCQkxQzI5RUMyOTFBRkMxMkY2MDA5RTBBODIgLyogRGVidWcgKi8sCisJCQkJ
MUMyOUVDMkExQUZDMTJGNjAwOUUwQTgyIC8qIFJlbGVhc2UgKi8sCisJCQkJMUMyOUVDMkIxQUZD
MTJGNjAwOUUwQTgyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVj
dGlvbjsKKwkJfTsKIAkJNDE3REE2RDgxMzczNEU0NzAwN0M1N0ZCIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJDb3JlVGVzdFN1cHBvcnQiICovID0g
ewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QQUxQbGFj
ZWhvbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QQUxQbGFjZWhv
bGRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNmOWRiOTgxMDkwMWFkZTFkMTQ4YTEwZDQwNWZmNzZlZjhh
NDc5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BBTFBsYWNlaG9sZGVyLmNwcApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAg
ICAgICAgIDIwMTAgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUEFMUGxhY2Vob2xkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbnQgUEFM
Zm9vKGludCwgY2hhcikKK3sKKyAgICByZXR1cm4gMTc7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BBTFBsYWNlaG9sZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QQUxQbGFjZWhvbGRlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEx
ZDQyOWExNzQwZDQ1ODBlYzQxMjI3MTRhODNjMzRmNjNkYjk5NmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QQUxQbGFjZWhvbGRlci5oCkBAIC0w
LDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBQQUxQbGFjZWhvbGRlcl9oCisjZGVmaW5lIFBBTFBsYWNlaG9sZGVyX2gKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitpbnQgUEFMZm9vKGludCwgY2hhcik7CisKK30KKworI2Vu
ZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252667</attachid>
            <date>2015-05-07 18:06:34 -0700</date>
            <delta_ts>2015-05-07 18:08:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20150507180517.patch</filename>
            <type>text/plain</type>
            <size>20323</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzkyOGQwYWUyM2MyZGZj
MjBiODUzYjM5NDIxMTBlMmUyOTY4MmNmYi4uY2NkMjY4YjIxZWUyZTI0YTgyZjUzNDQ2YWY0MTVk
YzM3MWFmNzM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA1LTA3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgV2ViQ29yZSB0
YXJnZXQgYW5kIHN0YXRpYyBsaWJyYXJ5LiBUaGlzIGlzIGludGVuZGVkIHRvIGJlCisgICAgICAg
IHRoZSBkZXN0aW5hdGlvbiB0YXJnZXQgdG8gYnVpbGQgY29kZSB0aGF0IGN1cnJlbnRseSByZXNp
ZGVzIGluCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0uIEZpbGVzIHdpbGwgYmUgbW92ZWQgaW50
byB0aGF0IHRhcmdldCBmaWxlIGJ5IGZpbGUuCisgICAgICAgIFNlcGFyYXRpbmcgdGhpcyBwbGF0
Zm9ybSBjb2RlIGludG8gaXRzIG93biBzdGF0aWMgbGlicmFyeSBlbmZvcmNlcworICAgICAgICBs
YXllcmluZywgYXMgd2VsbCBhcyBlbmNvdXJhZ2VzL2FpZHMgdW5pdCB0ZXN0aW5nIG9mIHRoaXMg
cGxhdGZvcm0gY29kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9QQUwueGNjb25m
aWc6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QQUxQbGFjZWhvbGRlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UEFMZm9vKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Q
QUxQbGFjZWhvbGRlci5oOiBBZGRlZC4KKwogMjAxNS0wNS0wNyAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFwcGx5aW5nIGEgZmlsdGVyIG9u
IGFuIFNWRyBlbGVtZW50LCB3aGljaCBpcyBsYXJnZXIgdGhhbiA0MDk2IHBpeGVscywgY2F1c2Vz
IHRoaXMgZWxlbWVudCB0byBiZSByZW5kZXJlZCBzaGlmdGVkIHRvIHRoZSBsZWZ0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcgYi9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAwYmI2YmIy
NDRjMGNkNzU5ODZhYjMzZjVjNmExN2I4YzIzZGQ5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZwpAQCAtMCwwICsxLDI5IEBACisv
LyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNsdWRlICJGZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZyIKKyNpbmNsdWRlICJWZXJzaW9uLnhjY29uZmlnIgorCitIRUFERVJfU0VB
UkNIX1BBVEhTID0gRm9yd2FyZGluZ0hlYWRlcnMgaWN1ICIkKEJVSUxUX1BST0RVQ1RTX0RJUikv
dXNyL2xvY2FsL2luY2x1ZGUiICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CitQUk9EVUNUX05BTUUg
PSBQQUw7CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhY2RmOTA1NjMzODU5NmI4MTM0ODYzMDRmNjcxZDJkY2U1YzkwZWM2Li4w
NjY2YjgzNDY1OTJmYThhODkyZTQwZTJiNjRkOWZjOTZkMDgxNWFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NDEsNiArOTQx
LDcgQEAKIAkJMUMyNDE3QkExOTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNDE3Qjkx
OTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyAqLzsgfTsKIAkJMUMyNjQ5N0Ew
RDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAv
KiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi87IH07CiAJCTFDMjY0OTdDMEQ3RTI0RUMwMEJEMTBG
MiAvKiBQYWdlTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCAqLzsgfTsKKwkJ
MUMyOUVDMkQxQUZDMTMxRDAwOUUwQTgyIC8qIGxpYlBBTC5hIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyOUVDMjgxQUZDMTJGNTAwOUUwQTgyIC8q
IGxpYlBBTC5hICovOyB9OwogCQkxQzY0NjYyNTFBMTJDMzhFMDA5NDYwM0MgLyogQ29yZVRleHRT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUU5
ODBGMUEwMkNFRkEwMDJEQjU1RiAvKiBDb3JlVGV4dFNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDNjQ2NjI4MUExMkM0MjAwMDk0NjAzQyAv
KiBOU0ZvbnRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDNjQ2NjI3MUExMkMzRjkwMDk0NjAzQyAvKiBOU0ZvbnRTUEkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1QTBFOTczMzA4MDAy
NjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3Rv
ckNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtOTU4LDYgKzk1OSw4IEBACiAJCTFDQ0E3MzIyMTBBREQ0NEEwMEZENDQwRCAvKiBE
T01IVE1MSW5wdXRFbGVtZW50UHJpdmF0ZS5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDQTczMjExMEFERDQzRTAwRkQ0NDBE
IC8qIERPTUhUTUxJbnB1dEVsZW1lbnRQcml2YXRlLmggKi87IH07CiAJCTFDQ0RGNUJEMTk5MDMz
MjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQ0RGNUJCMTk5MDMzMjQwMEJDRUJBRCAv
KiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCAqLzsgfTsKIAkJMUNDREY1QkUxOTkwMzMyNDAw
QkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdU
b09URkZvbnRDb252ZXJzaW9uLmggKi87IH07CisJCTFDRUZCQTEwMUFGQzEzQzQwMDY5RjJBNyAv
KiBQQUxQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNFRkJBMEYxQUZDMTNDNDAwNjlGMkE3IC8qIFBBTFBsYWNlaG9sZGVyLmggKi87
IH07CisJCTFDRUZCQTEyMUFGQzEzRDIwMDY5RjJBNyAvKiBQQUxQbGFjZWhvbGRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0VGQkExMTFBRkMx
M0QyMDA2OUYyQTcgLyogUEFMUGxhY2Vob2xkZXIuY3BwICovOyB9OwogCQkxQ0Y2QkRGQTBFOUJC
MjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZCREY4MEU5QkIyNkEwMDI1RTFDRCAvKiBPYmpD
RXZlbnRMaXN0ZW5lci5oICovOyB9OwogCQkxQ0Y2QkRGQjBFOUJCMjZBMDAyNUUxQ0QgLyogT2Jq
Q0V2ZW50TGlzdGVuZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQ0Y2QkRGOTBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIubW0g
Ki87IH07CiAJCTFDRjZCRTE0MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRp
dGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
RjZCRTEyMEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSAqLzsg
fTsKQEAgLTY4MDksNiArNjgxMiwxMyBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTFDRUZCQTEz
MUFGQzE0NUUwMDY5RjJBNyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2Eg
PSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZF
ODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOwor
CQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxQzI5RUMyNzFBRkMxMkY1MDA5RTBBODI7CisJCQly
ZW1vdGVJbmZvID0gUEFMOworCQl9OwogCQk0MTdEQTZENDEzNzM0RTBEMDA3QzU3RkIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5
OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2pl
Y3Qgb2JqZWN0ICovOwpAQCAtODA0NCw2ICs4MDU0LDcgQEAKIAkJMUMyNDE3QjkxOTkyQzA0MTAw
RUY5OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJTcGVsbGluZ0RvdEAzeC5w
bmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzI2NDk3OTBEN0UyNDhBMDBCRDEw
RjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRG9jdW1lbnRMb2FkZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzI2NDk3QjBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUMyOUVDMjgxQUZDMTJGNTAwOUUwQTgyIC8qIGxpYlBBTC5hICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJQQUwuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMUM1RTk4MEYxQTAyQ0VGQTAwMkRCNTVGIC8qIENvcmVUZXh0U1BJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvcmVUZXh0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDNjQ2NjI3MUExMkMzRjkwMDk0NjAzQyAvKiBOU0ZvbnRTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTlNGb250U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU2MEU5
NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTgwNjIsMTEgKzgwNzMsMTQgQEAKIAkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkw
MTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDREQ0NUU1MEJBOUM4NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYkNvcmUueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDREQ0NUU2MEJBOUM4NDYwMEY5MDE0NyAvKiBCYXNlLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDRUZCQTBGMUFGQzEzQzQwMDY5RjJBNyAvKiBQQUxQbGFjZWhv
bGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQQUxQbGFjZWhvbGRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0VGQkExMTFBRkMxM0QyMDA2OUYyQTcg
LyogUEFMUGxhY2Vob2xkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUEFMUGxhY2Vob2xkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0Y2
QkRGODBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqQ0V2ZW50TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNGNkJERjkwRTlCQjI2QTAwMjVFMUNEIC8qIE9iakNFdmVudExpc3Rl
bmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gT2JqQ0V2ZW50
TGlzdGVuZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjZCRTEyMEU5QkI0
NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0Y2QkUxMzBFOUJCNDY3MDAyNUUxQ0QgLyogT2Jq
Q05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGli
IjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGliOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxQ0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEg
LyogUEFMLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFBBTC54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUYzQzNCRTgxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJv
bHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9s
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGM0MzQkU5MTM1Q0FGM0MwMEI4
QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhQ29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUY3MkJGMDgx
ODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUaWxlQ29udHJvbGxlck1lbW9yeUhh
bmRsZXJJT1MuY3BwOyBwYXRoID0gaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDUwOCw2ICsxNDUyMiwxMyBAQAog
LyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTFDMjlFQzI1MUFGQzEyRjUwMDlFMEE4MiAvKiBG
cmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTQxN0RBNkNFMTM3
MzRFMDIwMDdDNTdGQiAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTQ1MjIs
NiArMTQ1NDMsNyBAQAogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMUMyOUVDMkQxQUZD
MTMxRDAwOUUwQTgyIC8qIGxpYlBBTC5hIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTIx
MkIwNDhBMzAwRUQ5OEM2IC8qIEFjY2VsZXJhdGUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8s
CiAJCQkJRkQyREJGMTMxMkIwNDhBMzAwRUQ5OEM2IC8qIEF1ZGlvVG9vbGJveC5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxNTEyQjA0OEEzMDBFRDk4QzYgLyogQ29yZUF1
ZGlvLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLApAQCAtMTQ1NjcsNiArMTQ1ODksNyBAQAog
CQkJCUUxQkE2NzE2MTc0MkJERTAwMEMyMDI1MSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIg
Ki8sCiAJCQkJNDE3REE2RDAxMzczNEUwMjAwN0M1N0ZCIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9y
dC5keWxpYiAqLywKIAkJCQk5M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFt
ZXdvcmsgKi8sCisJCQkJMUMyOUVDMjgxQUZDMTJGNTAwOUUwQTgyIC8qIGxpYlBBTC5hICovLAog
CQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsK
QEAgLTE1NTUxLDYgKzE1NTc0LDcgQEAKIAkJCQkxQ0RENDVFNTBCQTlDODQ2MDBGOTAxNDcgLyog
V2ViQ29yZS54Y2NvbmZpZyAqLywKIAkJCQlFMUJBNjZGMjE3NDJCRENDMDBDMjAyNTEgLyogV2Vi
Q29yZVRlc3RTaGltLnhjY29uZmlnICovLAogCQkJCTQxODE3MDdEMTM4NkVERjIwMDU3QUFBNCAv
KiBXZWJDb3JlVGVzdFN1cHBvcnQueGNjb25maWcgKi8sCisJCQkJMUNGREI1NEIxQUZDMTc3RTAw
OTRFRjIxIC8qIFBBTC54Y2NvbmZpZyAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29uZmlndXJhdGlv
bnM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjA3NTcsNiArMjA3ODEsOCBAQAog
CQkJCUZCQzIyMEREMTIzN0ZCRUIwMEJDRjc4OCAvKiBvcGVuZ2wgKi8sCiAJCQkJMzcyMTQ5MzMx
OEYwQjZENjAwMTU2RURDIC8qIG9wZW50eXBlICovLAogCQkJCTQ5RTkxMUIyMEVGODZEMjcwMDlE
MENBRiAvKiB0cmFuc2Zvcm1zICovLAorCQkJCTFDRUZCQTBGMUFGQzEzQzQwMDY5RjJBNyAvKiBQ
QUxQbGFjZWhvbGRlci5oICovLAorCQkJCTFDRUZCQTExMUFGQzEzRDIwMDY5RjJBNyAvKiBQQUxQ
bGFjZWhvbGRlci5jcHAgKi8sCiAJCQkJMDdFM0RGRDAxQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXQuaCAqLywKIAkJCQk0OTA3MDdFNDEyMTlDMDQzMDBEOTBFNTEgLyogQU5H
TEVXZWJLaXRCcmlkZ2UuY3BwICovLAogCQkJCTQ5MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBB
TkdMRVdlYktpdEJyaWRnZS5oICovLApAQCAtMjM2NzAsNiArMjM2OTYsMTQgQEAKIC8qIEVuZCBQ
QlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKwkJMUMyOUVDMjYxQUZDMTJGNTAwOUUwQTgyIC8qIEhlYWRlcnMgKi8gPSB7CisJCQlp
c2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxQ0VGQkExMDFBRkMxM0M0MDA2OUYyQTcgLyogUEFMUGxh
Y2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQk0MTdEQTZDQzEzNzM0RTAyMDA3QzU3RkIgLyog
SGVhZGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTI3MjQzLDYgKzI3Mjc3LDIzIEBACiAvKiBFbmQg
UEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJn
ZXQgc2VjdGlvbiAqLworCQkxQzI5RUMyNzFBRkMxMkY1MDA5RTBBODIgLyogUEFMICovID0gewor
CQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFD
MjlFQzJDMUFGQzEyRjYwMDlFMEE4MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WE5hdGl2ZVRhcmdldCAiUEFMIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTFDMjlFQzI2
MUFGQzEyRjUwMDlFMEE4MiAvKiBIZWFkZXJzICovLAorCQkJCTFDMjlFQzI0MUFGQzEyRjUwMDlF
MEE4MiAvKiBTb3VyY2VzICovLAorCQkJCTFDMjlFQzI1MUFGQzEyRjUwMDlFMEE4MiAvKiBGcmFt
ZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5j
aWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBQQUw7CisJCQlwcm9kdWN0TmFtZSA9IFBBTDsKKwkJ
CXByb2R1Y3RSZWZlcmVuY2UgPSAxQzI5RUMyODFBRkMxMkY1MDA5RTBBODIgLyogbGliUEFMLmEg
Ki87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3Rh
dGljIjsKKwkJfTsKIAkJNDE3REE2Q0YxMzczNEUwMjAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3Vw
cG9ydCAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJh
dGlvbkxpc3QgPSA0MTdEQTZEODEzNzM0RTQ3MDA3QzU3RkIgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIldlYkNvcmVUZXN0U3VwcG9ydCIgKi87CkBAIC0y
NzI4MSw2ICsyNzMzMiw3IEBACiAJCQlidWlsZFJ1bGVzID0gKAogCQkJKTsKIAkJCWRlcGVuZGVu
Y2llcyA9ICgKKwkJCQkxQ0VGQkExNDFBRkMxNDVFMDA2OUYyQTcgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLywKIAkJCQlERDA0MUZGMTA5RDlFMzI1MDAxMEFGMkEgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLywKIAkJCSk7CiAJCQluYW1lID0gV2ViQ29yZTsKQEAgLTI3MzM5LDYgKzI3MzkxLDcg
QEAKIAkJCQlERDA0MUZCRTA5RDlEREJFMDAxMEFGMkEgLyogRGVyaXZlZCBTb3VyY2VzICovLAog
CQkJCTQxN0RBNkNGMTM3MzRFMDIwMDdDNTdGQiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi8sCiAJ
CQkJRTFCQTY2RjMxNzQyQkRFMDAwQzIwMjUxIC8qIFdlYkNvcmVUZXN0U2hpbSAqLywKKwkJCQkx
QzI5RUMyNzFBRkMxMkY1MDA5RTBBODIgLyogUEFMICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQ
QlhQcm9qZWN0IHNlY3Rpb24gKi8KQEAgLTI3NDY0LDYgKzI3NTE3LDE0IEBACiAvKiBFbmQgUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzI5RUMyNDFBRkMxMkY1MDA5RTBBODIgLyogU291cmNl
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTFDRUZCQTEyMUFGQzEzRDIwMDY5
RjJBNyAvKiBQQUxQbGFjZWhvbGRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJNDE3REE2Q0QxMzcz
NEUwMjAwN0M1N0ZCIC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQ
aGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zMDUyMyw2ICszMDU4
NCwxMSBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTFDRUZCQTE0MUFGQzE0NUUwMDY5
RjJBNyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKKwkJCXRhcmdldCA9IDFDMjlFQzI3MUFGQzEyRjUwMDlFMEE4MiAvKiBQQUwgKi87
CisJCQl0YXJnZXRQcm94eSA9IDFDRUZCQTEzMUFGQzE0NUUwMDY5RjJBNyAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTQxN0RBNkQ1MTM3MzRFMEQwMDdDNTdGQiAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJ
CXRhcmdldCA9IDkzRjE5OEE1MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlICovOwpAQCAtMzA2
MjMsNiArMzA2ODksMjcgQEAKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJ
MUMyOUVDMjkxQUZDMTJGNjAwOUUwQTgyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDRkRCNTRC
MUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMUMyOUVDMkExQUZDMTJGNjAwOUUw
QTgyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUNGREI1NEIxQUZDMTc3RTAwOTRFRjIxIC8q
IFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9
IFJlbGVhc2U7CisJCX07CisJCTFDMjlFQzJCMUFGQzEyRjYwMDlFMEE4MiAvKiBQcm9kdWN0aW9u
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDRkRCNTRCMUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcg
Ki87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOwor
CQl9OwogCQk0MTdEQTZEMTEzNzM0RTAyMDA3QzU3RkIgLyogRGVidWcgKi8gPSB7CiAJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
NDE4MTcwN0QxMzg2RURGMjAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC54Y2NvbmZpZyAq
LzsKQEAgLTMwNzMzLDYgKzMwODIwLDE2IEBACiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9
OworCQkxQzI5RUMyQzFBRkMxMkY2MDA5RTBBODIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxQzI5RUMyOTFBRkMxMkY2
MDA5RTBBODIgLyogRGVidWcgKi8sCisJCQkJMUMyOUVDMkExQUZDMTJGNjAwOUUwQTgyIC8qIFJl
bGVhc2UgKi8sCisJCQkJMUMyOUVDMkIxQUZDMTJGNjAwOUUwQTgyIC8qIFByb2R1Y3Rpb24gKi8s
CisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJNDE3REE2RDgxMzczNEU0
NzAwN0M1N0ZCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJXZWJDb3JlVGVzdFN1cHBvcnQiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlz
dDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QQUxQbGFjZWhvbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QQUxQbGFjZWhvbGRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNmOWRiOTgx
MDkwMWFkZTFkMTQ4YTEwZDQwNWZmNzZlZjhhNDc5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BBTFBsYWNlaG9sZGVyLmNwcApAQCAtMCwwICsx
LDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiAgICAgICAgICAgICAgIDIwMTAgRGlyayBTY2h1bHplIDxrcml0
QHdlYmtpdC5vcmc+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEFMUGxhY2Vob2xkZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitpbnQgUEFMZm9vKGludCwgY2hhcikKK3sKKyAgICByZXR1cm4g
MTc7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BBTFBsYWNlaG9sZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QQUxQ
bGFjZWhvbGRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExZDQyOWExNzQwZDQ1ODBlYzQxMjI3MTRhODNjMzRm
NjNkYjk5NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QQUxQbGFjZWhvbGRlci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQQUxQbGFjZWhvbGRlcl9oCisj
ZGVmaW5lIFBBTFBsYWNlaG9sZGVyX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbnQgUEFM
Zm9vKGludCwgY2hhcik7CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252668</attachid>
            <date>2015-05-07 18:08:52 -0700</date>
            <delta_ts>2015-05-10 23:54:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20150507180735.patch</filename>
            <type>text/plain</type>
            <size>20263</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzkyOGQwYWUyM2MyZGZj
MjBiODUzYjM5NDIxMTBlMmUyOTY4MmNmYi4uY2NkMjY4YjIxZWUyZTI0YTgyZjUzNDQ2YWY0MTVk
YzM3MWFmNzM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA1LTA3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgV2ViQ29yZSB0
YXJnZXQgYW5kIHN0YXRpYyBsaWJyYXJ5LiBUaGlzIGlzIGludGVuZGVkIHRvIGJlCisgICAgICAg
IHRoZSBkZXN0aW5hdGlvbiB0YXJnZXQgdG8gYnVpbGQgY29kZSB0aGF0IGN1cnJlbnRseSByZXNp
ZGVzIGluCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0uIEZpbGVzIHdpbGwgYmUgbW92ZWQgaW50
byB0aGF0IHRhcmdldCBmaWxlIGJ5IGZpbGUuCisgICAgICAgIFNlcGFyYXRpbmcgdGhpcyBwbGF0
Zm9ybSBjb2RlIGludG8gaXRzIG93biBzdGF0aWMgbGlicmFyeSBlbmZvcmNlcworICAgICAgICBs
YXllcmluZywgYXMgd2VsbCBhcyBlbmNvdXJhZ2VzL2FpZHMgdW5pdCB0ZXN0aW5nIG9mIHRoaXMg
cGxhdGZvcm0gY29kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBu
byBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9QQUwueGNjb25m
aWc6IEFkZGVkLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QQUxQbGFjZWhvbGRlci5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6UEFMZm9vKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Q
QUxQbGFjZWhvbGRlci5oOiBBZGRlZC4KKwogMjAxNS0wNS0wNyAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFwcGx5aW5nIGEgZmlsdGVyIG9u
IGFuIFNWRyBlbGVtZW50LCB3aGljaCBpcyBsYXJnZXIgdGhhbiA0MDk2IHBpeGVscywgY2F1c2Vz
IHRoaXMgZWxlbWVudCB0byBiZSByZW5kZXJlZCBzaGlmdGVkIHRvIHRoZSBsZWZ0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcgYi9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzAwYmI2YmIy
NDRjMGNkNzU5ODZhYjMzZjVjNmExN2I4YzIzZGQ5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZwpAQCAtMCwwICsxLDI5IEBACisv
LyBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNsdWRlICJGZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZyIKKyNpbmNsdWRlICJWZXJzaW9uLnhjY29uZmlnIgorCitIRUFERVJfU0VB
UkNIX1BBVEhTID0gRm9yd2FyZGluZ0hlYWRlcnMgaWN1ICIkKEJVSUxUX1BST0RVQ1RTX0RJUikv
dXNyL2xvY2FsL2luY2x1ZGUiICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CitQUk9EVUNUX05BTUUg
PSBQQUw7CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhY2RmOTA1NjMzODU5NmI4MTM0ODYzMDRmNjcxZDJkY2U1YzkwZWM2Li4w
NjY2YjgzNDY1OTJmYThhODkyZTQwZTJiNjRkOWZjOTZkMDgxNWFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NDEsNiArOTQx
LDcgQEAKIAkJMUMyNDE3QkExOTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNDE3Qjkx
OTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyAqLzsgfTsKIAkJMUMyNjQ5N0Ew
RDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAv
KiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi87IH07CiAJCTFDMjY0OTdDMEQ3RTI0RUMwMEJEMTBG
MiAvKiBQYWdlTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCAqLzsgfTsKKwkJ
MUMyOUVDMkQxQUZDMTMxRDAwOUUwQTgyIC8qIGxpYlBBTC5hIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyOUVDMjgxQUZDMTJGNTAwOUUwQTgyIC8q
IGxpYlBBTC5hICovOyB9OwogCQkxQzY0NjYyNTFBMTJDMzhFMDA5NDYwM0MgLyogQ29yZVRleHRT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUU5
ODBGMUEwMkNFRkEwMDJEQjU1RiAvKiBDb3JlVGV4dFNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDNjQ2NjI4MUExMkM0MjAwMDk0NjAzQyAv
KiBOU0ZvbnRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDNjQ2NjI3MUExMkMzRjkwMDk0NjAzQyAvKiBOU0ZvbnRTUEkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1QTBFOTczMzA4MDAy
NjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3Rv
ckNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtOTU4LDYgKzk1OSw4IEBACiAJCTFDQ0E3MzIyMTBBREQ0NEEwMEZENDQwRCAvKiBE
T01IVE1MSW5wdXRFbGVtZW50UHJpdmF0ZS5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNDQTczMjExMEFERDQzRTAwRkQ0NDBE
IC8qIERPTUhUTUxJbnB1dEVsZW1lbnRQcml2YXRlLmggKi87IH07CiAJCTFDQ0RGNUJEMTk5MDMz
MjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQ0RGNUJCMTk5MDMzMjQwMEJDRUJBRCAv
KiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcCAqLzsgfTsKIAkJMUNDREY1QkUxOTkwMzMyNDAw
QkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdU
b09URkZvbnRDb252ZXJzaW9uLmggKi87IH07CisJCTFDRUZCQTEwMUFGQzEzQzQwMDY5RjJBNyAv
KiBQQUxQbGFjZWhvbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNFRkJBMEYxQUZDMTNDNDAwNjlGMkE3IC8qIFBBTFBsYWNlaG9sZGVyLmggKi87
IH07CisJCTFDRUZCQTEyMUFGQzEzRDIwMDY5RjJBNyAvKiBQQUxQbGFjZWhvbGRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0VGQkExMTFBRkMx
M0QyMDA2OUYyQTcgLyogUEFMUGxhY2Vob2xkZXIuY3BwICovOyB9OwogCQkxQ0Y2QkRGQTBFOUJC
MjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZCREY4MEU5QkIyNkEwMDI1RTFDRCAvKiBPYmpD
RXZlbnRMaXN0ZW5lci5oICovOyB9OwogCQkxQ0Y2QkRGQjBFOUJCMjZBMDAyNUUxQ0QgLyogT2Jq
Q0V2ZW50TGlzdGVuZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQ0Y2QkRGOTBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIubW0g
Ki87IH07CiAJCTFDRjZCRTE0MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRp
dGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
RjZCRTEyMEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSAqLzsg
fTsKQEAgLTY4MDksNiArNjgxMiwxMyBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTFDRUZCQTEz
MUFGQzE0NUUwMDY5RjJBNyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2Eg
PSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZF
ODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOwor
CQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxQzI5RUMyNzFBRkMxMkY1MDA5RTBBODI7CisJCQly
ZW1vdGVJbmZvID0gUEFMOworCQl9OwogCQk0MTdEQTZENDEzNzM0RTBEMDA3QzU3RkIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5
OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2pl
Y3Qgb2JqZWN0ICovOwpAQCAtODA0NCw2ICs4MDU0LDcgQEAKIAkJMUMyNDE3QjkxOTkyQzA0MTAw
RUY5OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJTcGVsbGluZ0RvdEAzeC5w
bmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzI2NDk3OTBEN0UyNDhBMDBCRDEw
RjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRG9jdW1lbnRMb2FkZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzI2NDk3QjBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUMyOUVDMjgxQUZDMTJGNTAwOUUwQTgyIC8qIGxpYlBBTC5hICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJQQUwuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMUM1RTk4MEYxQTAyQ0VGQTAwMkRCNTVGIC8qIENvcmVUZXh0U1BJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvcmVUZXh0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDNjQ2NjI3MUExMkMzRjkwMDk0NjAzQyAvKiBOU0ZvbnRTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTlNGb250U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU2MEU5
NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTgwNjIsMTEgKzgwNzMsMTQgQEAKIAkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkw
MTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDREQ0NUU1MEJBOUM4NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYkNvcmUueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDREQ0NUU2MEJBOUM4NDYwMEY5MDE0NyAvKiBCYXNlLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDRUZCQTBGMUFGQzEzQzQwMDY5RjJBNyAvKiBQQUxQbGFjZWhv
bGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQQUxQbGFjZWhvbGRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0VGQkExMTFBRkMxM0QyMDA2OUYyQTcg
LyogUEFMUGxhY2Vob2xkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUEFMUGxhY2Vob2xkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0Y2
QkRGODBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqQ0V2ZW50TGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNGNkJERjkwRTlCQjI2QTAwMjVFMUNEIC8qIE9iakNFdmVudExpc3Rl
bmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gT2JqQ0V2ZW50
TGlzdGVuZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjZCRTEyMEU5QkI0
NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0Y2QkUxMzBFOUJCNDY3MDAyNUUxQ0QgLyogT2Jq
Q05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGli
IjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGliOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxQ0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEg
LyogUEFMLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFBBTC54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUYzQzNCRTgxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJv
bHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9s
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGM0MzQkU5MTM1Q0FGM0MwMEI4
QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhQ29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUY3MkJGMDgx
ODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUaWxlQ29udHJvbGxlck1lbW9yeUhh
bmRsZXJJT1MuY3BwOyBwYXRoID0gaW9zL1RpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDUwOCw2ICsxNDUyMiwxMyBAQAog
LyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTFDMjlFQzI1MUFGQzEyRjUwMDlFMEE4MiAvKiBG
cmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTQxN0RBNkNFMTM3
MzRFMDIwMDdDNTdGQiAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTQ1MjIs
NiArMTQ1NDMsNyBAQAogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMUMyOUVDMkQxQUZD
MTMxRDAwOUUwQTgyIC8qIGxpYlBBTC5hIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTIx
MkIwNDhBMzAwRUQ5OEM2IC8qIEFjY2VsZXJhdGUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8s
CiAJCQkJRkQyREJGMTMxMkIwNDhBMzAwRUQ5OEM2IC8qIEF1ZGlvVG9vbGJveC5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxNTEyQjA0OEEzMDBFRDk4QzYgLyogQ29yZUF1
ZGlvLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLApAQCAtMTQ1NjcsNiArMTQ1ODksNyBAQAog
CQkJCUUxQkE2NzE2MTc0MkJERTAwMEMyMDI1MSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIg
Ki8sCiAJCQkJNDE3REE2RDAxMzczNEUwMjAwN0M1N0ZCIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9y
dC5keWxpYiAqLywKIAkJCQk5M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFt
ZXdvcmsgKi8sCisJCQkJMUMyOUVDMjgxQUZDMTJGNTAwOUUwQTgyIC8qIGxpYlBBTC5hICovLAog
CQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsK
QEAgLTE1NTUxLDYgKzE1NTc0LDcgQEAKIAkJCQkxQ0RENDVFNTBCQTlDODQ2MDBGOTAxNDcgLyog
V2ViQ29yZS54Y2NvbmZpZyAqLywKIAkJCQlFMUJBNjZGMjE3NDJCRENDMDBDMjAyNTEgLyogV2Vi
Q29yZVRlc3RTaGltLnhjY29uZmlnICovLAogCQkJCTQxODE3MDdEMTM4NkVERjIwMDU3QUFBNCAv
KiBXZWJDb3JlVGVzdFN1cHBvcnQueGNjb25maWcgKi8sCisJCQkJMUNGREI1NEIxQUZDMTc3RTAw
OTRFRjIxIC8qIFBBTC54Y2NvbmZpZyAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29uZmlndXJhdGlv
bnM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjA3NTcsNiArMjA3ODEsOCBAQAog
CQkJCUZCQzIyMEREMTIzN0ZCRUIwMEJDRjc4OCAvKiBvcGVuZ2wgKi8sCiAJCQkJMzcyMTQ5MzMx
OEYwQjZENjAwMTU2RURDIC8qIG9wZW50eXBlICovLAogCQkJCTQ5RTkxMUIyMEVGODZEMjcwMDlE
MENBRiAvKiB0cmFuc2Zvcm1zICovLAorCQkJCTFDRUZCQTBGMUFGQzEzQzQwMDY5RjJBNyAvKiBQ
QUxQbGFjZWhvbGRlci5oICovLAorCQkJCTFDRUZCQTExMUFGQzEzRDIwMDY5RjJBNyAvKiBQQUxQ
bGFjZWhvbGRlci5jcHAgKi8sCiAJCQkJMDdFM0RGRDAxQTlFNzg2NTAwNzY0Q0E4IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXQuaCAqLywKIAkJCQk0OTA3MDdFNDEyMTlDMDQzMDBEOTBFNTEgLyogQU5H
TEVXZWJLaXRCcmlkZ2UuY3BwICovLAogCQkJCTQ5MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBB
TkdMRVdlYktpdEJyaWRnZS5oICovLApAQCAtMjM2NzAsNiArMjM2OTYsMTQgQEAKIC8qIEVuZCBQ
QlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKwkJMUMyOUVDMjYxQUZDMTJGNTAwOUUwQTgyIC8qIEhlYWRlcnMgKi8gPSB7CisJCQlp
c2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxQ0VGQkExMDFBRkMxM0M0MDA2OUYyQTcgLyogUEFMUGxh
Y2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQk0MTdEQTZDQzEzNzM0RTAyMDA3QzU3RkIgLyog
SGVhZGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTI3MjQzLDYgKzI3Mjc3LDIzIEBACiAvKiBFbmQg
UEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJn
ZXQgc2VjdGlvbiAqLworCQkxQzI5RUMyNzFBRkMxMkY1MDA5RTBBODIgLyogUEFMICovID0gewor
CQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFD
MjlFQzJDMUFGQzEyRjYwMDlFMEE4MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WE5hdGl2ZVRhcmdldCAiUEFMIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTFDMjlFQzI2
MUFGQzEyRjUwMDlFMEE4MiAvKiBIZWFkZXJzICovLAorCQkJCTFDMjlFQzI0MUFGQzEyRjUwMDlF
MEE4MiAvKiBTb3VyY2VzICovLAorCQkJCTFDMjlFQzI1MUFGQzEyRjUwMDlFMEE4MiAvKiBGcmFt
ZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5j
aWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBQQUw7CisJCQlwcm9kdWN0TmFtZSA9IFBBTDsKKwkJ
CXByb2R1Y3RSZWZlcmVuY2UgPSAxQzI5RUMyODFBRkMxMkY1MDA5RTBBODIgLyogbGliUEFMLmEg
Ki87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3Rh
dGljIjsKKwkJfTsKIAkJNDE3REE2Q0YxMzczNEUwMjAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3Vw
cG9ydCAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJh
dGlvbkxpc3QgPSA0MTdEQTZEODEzNzM0RTQ3MDA3QzU3RkIgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIldlYkNvcmVUZXN0U3VwcG9ydCIgKi87CkBAIC0y
NzI4MSw2ICsyNzMzMiw3IEBACiAJCQlidWlsZFJ1bGVzID0gKAogCQkJKTsKIAkJCWRlcGVuZGVu
Y2llcyA9ICgKKwkJCQkxQ0VGQkExNDFBRkMxNDVFMDA2OUYyQTcgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLywKIAkJCQlERDA0MUZGMTA5RDlFMzI1MDAxMEFGMkEgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLywKIAkJCSk7CiAJCQluYW1lID0gV2ViQ29yZTsKQEAgLTI3MzM5LDYgKzI3MzkxLDcg
QEAKIAkJCQlERDA0MUZCRTA5RDlEREJFMDAxMEFGMkEgLyogRGVyaXZlZCBTb3VyY2VzICovLAog
CQkJCTQxN0RBNkNGMTM3MzRFMDIwMDdDNTdGQiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi8sCiAJ
CQkJRTFCQTY2RjMxNzQyQkRFMDAwQzIwMjUxIC8qIFdlYkNvcmVUZXN0U2hpbSAqLywKKwkJCQkx
QzI5RUMyNzFBRkMxMkY1MDA5RTBBODIgLyogUEFMICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQ
QlhQcm9qZWN0IHNlY3Rpb24gKi8KQEAgLTI3NDY0LDYgKzI3NTE3LDE0IEBACiAvKiBFbmQgUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzI5RUMyNDFBRkMxMkY1MDA5RTBBODIgLyogU291cmNl
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTFDRUZCQTEyMUFGQzEzRDIwMDY5
RjJBNyAvKiBQQUxQbGFjZWhvbGRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJNDE3REE2Q0QxMzcz
NEUwMjAwN0M1N0ZCIC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQ
aGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zMDUyMyw2ICszMDU4
NCwxMSBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTFDRUZCQTE0MUFGQzE0NUUwMDY5
RjJBNyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKKwkJCXRhcmdldCA9IDFDMjlFQzI3MUFGQzEyRjUwMDlFMEE4MiAvKiBQQUwgKi87
CisJCQl0YXJnZXRQcm94eSA9IDFDRUZCQTEzMUFGQzE0NUUwMDY5RjJBNyAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTQxN0RBNkQ1MTM3MzRFMEQwMDdDNTdGQiAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJ
CXRhcmdldCA9IDkzRjE5OEE1MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlICovOwpAQCAtMzA2
MjMsNiArMzA2ODksMjcgQEAKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJ
MUMyOUVDMjkxQUZDMTJGNjAwOUUwQTgyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDRkRCNTRC
MUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMUMyOUVDMkExQUZDMTJGNjAwOUUw
QTgyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUNGREI1NEIxQUZDMTc3RTAwOTRFRjIxIC8q
IFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9
IFJlbGVhc2U7CisJCX07CisJCTFDMjlFQzJCMUFGQzEyRjYwMDlFMEE4MiAvKiBQcm9kdWN0aW9u
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDRkRCNTRCMUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcg
Ki87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOwor
CQl9OwogCQk0MTdEQTZEMTEzNzM0RTAyMDA3QzU3RkIgLyogRGVidWcgKi8gPSB7CiAJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
NDE4MTcwN0QxMzg2RURGMjAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC54Y2NvbmZpZyAq
LzsKQEAgLTMwNzMzLDYgKzMwODIwLDE2IEBACiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9
OworCQkxQzI5RUMyQzFBRkMxMkY2MDA5RTBBODIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxQzI5RUMyOTFBRkMxMkY2
MDA5RTBBODIgLyogRGVidWcgKi8sCisJCQkJMUMyOUVDMkExQUZDMTJGNjAwOUUwQTgyIC8qIFJl
bGVhc2UgKi8sCisJCQkJMUMyOUVDMkIxQUZDMTJGNjAwOUUwQTgyIC8qIFByb2R1Y3Rpb24gKi8s
CisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJNDE3REE2RDgxMzczNEU0
NzAwN0M1N0ZCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJXZWJDb3JlVGVzdFN1cHBvcnQiICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlz
dDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QQUxQbGFjZWhvbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QQUxQbGFjZWhvbGRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE4MjFhYWQx
ZTFlYjY0ZGYwMjE5MWE0MGZiYTkwMjEzYzcyYjI2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BBTFBsYWNlaG9sZGVyLmNwcApAQCAtMCwwICsx
LDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUEFMUGxhY2Vob2xkZXIuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitpbnQgUEFMZm9vKGludCwgY2hhcikKK3sKKyAgICByZXR1cm4gMTc7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BB
TFBsYWNlaG9sZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QQUxQbGFj
ZWhvbGRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjExZDQyOWExNzQwZDQ1ODBlYzQxMjI3MTRhODNjMzRmNjNk
Yjk5NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QQUxQbGFjZWhvbGRlci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQQUxQbGFjZWhvbGRlcl9oCisjZGVm
aW5lIFBBTFBsYWNlaG9sZGVyX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbnQgUEFMZm9v
KGludCwgY2hhcik7CisKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252843</attachid>
            <date>2015-05-10 23:54:42 -0700</date>
            <delta_ts>2015-05-17 13:15:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20150510235322.patch</filename>
            <type>text/plain</type>
            <size>212375</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThmNmNiNGZlMzQ0YWE4
NzQxODk5ZmZhYzcxNjNjZjVmNjgzOWIzMC4uZGEwYTM3ZjNiOGZmODQxZWU0NzM1MTA2ZmFkZmU0
NGU2ODhhMWNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA1LTEwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgV2ViQ29yZSB0
YXJnZXQgYW5kIHN0YXRpYyBsaWJyYXJ5LiBUaGlzIGlzIGludGVuZGVkIHRvIGJlCisgICAgICAg
IHRoZSBkZXN0aW5hdGlvbiB0YXJnZXQgdG8gYnVpbGQgY29kZSB0aGF0IGN1cnJlbnRseSByZXNp
ZGVzIGluCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0uIEZpbGVzIHdpbGwgYmUgbW92ZWQgaW50
byB0aGF0IHRhcmdldCBmaWxlIGJ5IGZpbGUuCisgICAgICAgIFNlcGFyYXRpbmcgdGhpcyBwbGF0
Zm9ybSBjb2RlIGludG8gaXRzIG93biBzdGF0aWMgbGlicmFyeSBlbmZvcmNlcworICAgICAgICBs
YXllcmluZywgYXMgd2VsbCBhcyBlbmNvdXJhZ2VzL2FpZHMgdW5pdCB0ZXN0aW5nIG9mIHRoaXMg
cGxhdGZvcm0gY29kZS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIGEgc21hbGwgZGVwZW5k
ZW5jeSB0cmVlLCBjb25zaXN0aW5nIG9mIHRoZSBDbG9jayBjbGFzcworICAgICAgICBhbmQgaXRz
IGRlcGVuZGVudHMsIGludG8gUEFMLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1BB
TC54Y2NvbmZpZzogQWRkZWQuCisgICAgICAgICogUEFMLyo6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS8KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXIuaDogVXBkYXRlIGZvcndhcmQg
ZGVjbGFyYXRpb24uCisKIDIwMTUtMDUtMTAgIFN1bmdtYW5uIENobyAgPHN1bmdtYW5uLmNob0Bu
YXZlcmNvcnAuY29tPgogCiAgICAgICAgIEdldCByaWQgb2YgdGhlIHB1YmxpYyBpdGVtIGFjY2Vz
c29ycyBpbiBCYWNrRm9yd2FyZENsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMv
UEFMLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1Yzc0OTZkOTYwMzI3NGRmMjlmNjRkYjc1OWY5OTkw
NGExYmYwNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9QQUwueGNjb25maWcKQEAgLTAsMCArMSwzNCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8v
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorCisjaW5jbHVkZSAiRmVhdHVyZURlZmluZXMueGNjb25maWciCisjaW5jbHVk
ZSAiVmVyc2lvbi54Y2NvbmZpZyIKKworSEVBREVSX1NFQVJDSF9QQVRIUyA9IEZvcndhcmRpbmdI
ZWFkZXJzICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoaW5oZXJp
dGVkKTsKK1BST0RVQ1RfTkFNRSA9IFBBTDsKK1NLSVBfSU5TVEFMTCA9IFlFUzsKKworLy8gRklY
TUU6IFVzZSBhIGhlYWRlcm1hcCBvbmNlIHdlIGNhbiBnZXQgSEVBREVSTUFQX0lOQ0xVREVTX1BS
T0pFQ1RfSEVBREVSUyB0byB3b3JrLgorSEVBREVSTUFQX0lOQ0xVREVTX1BST0pFQ1RfSEVBREVS
UyA9IE5POworVVNFX0hFQURFUk1BUCA9IE5POworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2xvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML0Nsb2NrLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMzRmYTllN2IwZTliMGNiNTVkMjkzNmZlNTdmZjEwZGQwM2Q5Y2QxCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML0Nsb2NrLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQ2xvY2suaCIKKworI2lmIFVTRShDT1JFTUVESUEpCisjaW5jbHVk
ZSAiUGxhdGZvcm1DbG9ja0NNLmgiCisjZWxpZiBVU0UoQ09SRUFVRElPKQorI2luY2x1ZGUgIlBs
YXRmb3JtQ2xvY2tDQS5oIgorI2Vsc2UKKyNpbmNsdWRlICJDbG9ja0dlbmVyaWMuaCIKKyNlbmRp
ZgorCituYW1lc3BhY2UgUEFMIHsKKworc3RkOjp1bmlxdWVfcHRyPENsb2NrPiBDbG9jazo6Y3Jl
YXRlKCkKK3sKKyNpZiBVU0UoQ09SRU1FRElBKQorICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFBsYXRmb3JtQ2xvY2tDTT4oKTsKKyNlbGlmIFVTRShDT1JFQVVESU8pCisgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1DbG9ja0NBPigpOworI2Vsc2UKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxDbG9ja0dlbmVyaWM+KCk7CisjZW5kaWYKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML0Nsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2xvY2su
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43ZDYzYjc1ZmYxODJmYmYwMjEyODg0YjdjNGU4ODk5YjFiZmJhMDBiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0Nsb2NrLmgKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBDbG9ja19oCisjZGVmaW5lIENsb2NrX2gKKworI2luY2x1ZGUgPG1lbW9yeT4KKworbmFt
ZXNwYWNlIFBBTCB7CisKK2NsYXNzIENsb2NrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPENsb2NrPiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5DbG9jaygpIHsgfQorCisg
ICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSkgPSAwOworICAgIHZpcnR1YWwg
ZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFBs
YXlSYXRlKGRvdWJsZSkgPSAwOworICAgIHZpcnR1YWwgZG91YmxlIHBsYXlSYXRlKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
dG9wKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCA9IDA7CisKK3By
b3RlY3RlZDoKKyAgICBDbG9jaygpIHsgfQorfTsKKworfQorCit1c2luZyBQQUw6OkNsb2NrOwor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUV4cG9ydE1h
Y3Jvcy5oIGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtRXhwb3J0TWFjcm9zLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGMxZjdjMTY5MmViYzQ0YjVmNDk1MWQxMmIzMGZjYWUzOGE3MTcyNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoK
KyAqIFRoaXMgZmlsZSBoYW5kbGVzIHNoYXJlZCBsaWJyYXJ5IHN5bWJvbCBleHBvcnQgZGVjb3Jh
dGlvbnMuIEl0IGlzIHJlY29tbWVuZGVkCisgKiB0aGF0IGFsbCBXZWJLaXQgcHJvamVjdHMgdXNl
IHRoZXNlIGRlZmluaXRpb25zIHNvIHRoYXQgc3ltYm9sIGV4cG9ydHMgd29yaworICogcHJvcGVy
bHkgb24gYWxsIHBsYXRmb3JtcyBhbmQgY29tcGlsZXJzIHRoYXQgV2ViS2l0IGJ1aWxkcyB1bmRl
ci4KKyAqLworI2lmbmRlZiBQbGF0Zm9ybUV4cG9ydE1hY3Jvc19oCisjZGVmaW5lIFBsYXRmb3Jt
RXhwb3J0TWFjcm9zX2gKKworI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKyNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KKworLy8gU2VlIG5vdGUgaW4gd3RmL1BsYXRmb3JtLmggZm9yIG1v
cmUgaW5mbyBvbiBFWFBPUlRfTUFDUk9TLgorI2lmIFVTRShFWFBPUlRfTUFDUk9TKQorCisjaWYg
IVBMQVRGT1JNKFdJTikKKyNkZWZpbmUgV0VCQ09SRV9FWFBPUlQgV1RGX0VYUE9SVAorI2RlZmlu
ZSBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBXVEZfRVhQT1JUCisjZWxzZQorLy8gV2luZG93
cyBtdXN0IHNldCB0aGlzIHBlci1wcm9qZWN0CisjZW5kaWYKKworI2Vsc2UgLy8gIVVTRShFWFBP
UlRfTUFDUk9TKQorI2RlZmluZSBXRUJDT1JFX0VYUE9SVAorI2RlZmluZSBXRUJDT1JFX1RFU1RT
VVBQT1JUX0VYUE9SVAorCisjZW5kaWYgLy8gVVNFKEVYUE9SVF9NQUNST1MpCisKKyNlbmRpZiAv
LyBQbGF0Zm9ybUV4cG9ydE1hY3Jvc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Y2YvQ29yZU1lZGlhU29mdExpbmsuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML2NmL0NvcmVNZWRp
YVNvZnRMaW5rLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmMxZTczNzZhNjYwNGU2MTdlYmVmNTE4YmI4MjUy
MWRjY2IzMzI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML2NmL0NvcmVN
ZWRpYVNvZnRMaW5rLmNwcApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorLy8gRklYTUU6IFNob3VsZCBi
ZSBVU0UoQ09SRU1FRElBKSwgYnV0IHRoaXMgaXNuJ3QgY3VycmVudGx5IGRlZmluZWQgb24gV2lu
ZG93cy4KKworI2luY2x1ZGUgIkNvcmVNZWRpYVNQSS5oIgorI2luY2x1ZGUgIlNvZnRMaW5raW5n
LmgiCisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSkKKwor
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNQmxvY2tCdWZm
ZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXR1cywgKENNQmxvY2tCdWZmZXJSZWYgdGhlU291cmNlQnVm
ZmVyLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgdm9pZCogZGVzdGlu
YXRpb24pLCAodGhlU291cmNlQnVmZmVyLCBvZmZzZXRUb0RhdGEsIGRhdGFMZW5ndGgsIGRlc3Rp
bmF0aW9uKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBD
TUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aCwgc2l6ZV90LCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVC
dWZmZXIpLCAodGhlQnVmZmVyKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwg
Q29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZEaWN0aW9uYXJ5
UmVmLCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQorU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1
ZmZlciwgQ01CbG9ja0J1ZmZlclJlZiwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1Zikp
CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVC
dWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbiwgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiwgKENNU2Ft
cGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvLCBPU1N0
YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUluZGV4IHNhbXBsZUluZGV4LCBD
TVNhbXBsZVRpbWluZ0luZm8qIHRpbWluZ0luZm9PdXQpLCAoc2J1Ziwgc2FtcGxlSW5kZXgsIHRp
bWluZ0luZm9PdXQpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVk
aWEsIENNVGltZUNvbXBhcmUsIGludDMyX3QsIChDTVRpbWUgdGltZTEsIENNVGltZSB0aW1lMiks
ICh0aW1lMSwgdGltZTIpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3Jl
TWVkaWEsIENNVGltZUdldFNlY29uZHMsIEZsb2F0NjQsIChDTVRpbWUgdGltZSksICh0aW1lKSkK
K1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVRpbWVNYWtl
LCBDTVRpbWUsIChpbnQ2NF90IHZhbHVlLCBpbnQzMl90IHRpbWVzY2FsZSksICh2YWx1ZSwgdGlt
ZXNjYWxlKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBD
TVRpbWVNYWtlV2l0aFNlY29uZHMsIENNVGltZSwgKEZsb2F0NjQgc2Vjb25kcywgaW50MzJfdCBw
cmVmZXJyZWRUaW1lU2NhbGUpLCAoc2Vjb25kcywgcHJlZmVycmVkVGltZVNjYWxlKSkKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVRpbWVSYW5nZUdldEVu
ZCwgQ01UaW1lLCAoQ01UaW1lUmFuZ2UgcmFuZ2UpLCAocmFuZ2UpKQorCitTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRl
bnNpb25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcywgQ0ZTdHJpbmdSZWYpCitTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEFs
aWdubWVudFR5cGVfRW5kLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9NaWRkbGUsIENG
U3RyaW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEs
IGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0LCBDRlN0cmluZ1JlZikKK1NPRlRfTElO
S19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmli
dXRlX0FsaWdubWVudCwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJD
RShQQUwsIENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYWNrZ3JvdW5kQ29sb3JB
UkdCLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29y
ZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0Jhc2VGb250U2l6ZVBlcmNlbnRhZ2VSZWxh
dGl2ZVRvVmlkZW9IZWlnaHQsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9T
T1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQm9sZFN0eWxlLCBD
RlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlh
LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0NoYXJhY3RlckJhY2tncm91bmRDb2xvckFSR0IsIENG
U3RyaW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEs
IGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9udEZhbWlseU5hbWUsIENGU3RyaW5nUmVmKQorU09G
VF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBB
dHRyaWJ1dGVfRm9yZWdyb3VuZENvbG9yQVJHQiwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9J
dGFsaWNTdHlsZSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQ
QUwsIENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9PcnRob2dvbmFsTGluZVBvc2l0
aW9uUGVyY2VudGFnZVJlbGF0aXZlVG9Xcml0aW5nRGlyZWN0aW9uLCBDRlN0cmluZ1JlZikKK1NP
RlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3Vw
QXR0cmlidXRlX1JlbGF0aXZlRm9udFNpemUsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVGV4
dFBvc2l0aW9uUGVyY2VudGFnZVJlbGF0aXZlVG9Xcml0aW5nRGlyZWN0aW9uLCBDRlN0cmluZ1Jl
ZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0
TWFya3VwQXR0cmlidXRlX1VuZGVybGluZVN0eWxlLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19D
T05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRl
X1ZlcnRpY2FsTGF5b3V0LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1dyaXRpbmdEaXJlY3Rp
b25TaXplUGVyY2VudGFnZSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRShQQUwsIENvcmVNZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0X0xlZnRUb1JpZ2h0LCBD
RlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlh
LCBrQ01UZXh0VmVydGljYWxMYXlvdXRfUmlnaHRUb0xlZnQsIENGU3RyaW5nUmVmKQorU09GVF9M
SU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVRpbWVJbnZhbGlkLCBD
TVRpbWUpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwga0NN
VGltZVplcm8sIENNVGltZSkKKworI2lmIFBMQVRGT1JNKENPQ09BKQorU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRp
YVN1YlR5cGUsIEZvdXJDaGFyQ29kZSwgKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChk
ZXNjKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUZv
cm1hdERlc2NyaXB0aW9uR2V0TWVkaWFUeXBlLCBDTU1lZGlhVHlwZSwgKENNRm9ybWF0RGVzY3Jp
cHRpb25SZWYgZGVzYyksIChkZXNjKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBB
TCwgQ29yZU1lZGlhLCBDTU5vdGlmaWNhdGlvbkNlbnRlckdldERlZmF1bHRMb2NhbENlbnRlciwg
Q01Ob3RpZmljYXRpb25DZW50ZXJSZWYsICh2b2lkKSwgKCkpCitTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01Ob3RpZmljYXRpb25DZW50ZXJBZGRMaXN0ZW5l
ciwgT1NTdGF0dXMsIChDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiBjZW50ZXIsIGNvbnN0IHZvaWQq
IGxpc3RlbmVyLCBDTU5vdGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCBDRlN0cmluZ1JlZiBu
b3RpZmljYXRpb24sIGNvbnN0IHZvaWQqIG9iamVjdCwgVUludDMyIGZsYWdzKSwgKGNlbnRlciwg
bGlzdGVuZXIsIGNhbGxiYWNrLCBub3RpZmljYXRpb24sIG9iamVjdCwgZmxhZ3MpKQorU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNTm90aWZpY2F0aW9uQ2Vu
dGVyUmVtb3ZlTGlzdGVuZXIsIE9TU3RhdHVzLCAoQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYgY2Vu
dGVyLCBjb25zdCB2b2lkKiBsaXN0ZW5lciwgQ01Ob3RpZmljYXRpb25DYWxsYmFjayBjYWxsYmFj
aywgQ0ZTdHJpbmdSZWYgbm90aWZpY2F0aW9uLCBjb25zdCB2b2lkKiBvYmplY3QpLCAoY2VudGVy
LCBsaXN0ZW5lciwgY2FsbGJhY2ssIG5vdGlmaWNhdGlvbiwgb2JqZWN0KSkKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNhbGxGb3JF
YWNoU2FtcGxlLCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIE9TU3RhdHVzICgq
Y2FsbGJhY2spKCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIENNSXRlbUNvdW50IGlu
ZGV4LCB2b2lkICpyZWZjb24pLCB2b2lkICpyZWZjb24pLCAoc2J1ZiwgY2FsbGJhY2ssIHJlZmNv
bikpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1w
bGVCdWZmZXJDcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDTUJs
b2NrQnVmZmVyUmVmIGRhdGFCdWZmZXIsIEJvb2xlYW4gZGF0YVJlYWR5LCBDTVNhbXBsZUJ1ZmZl
ck1ha2VEYXRhUmVhZHlDYWxsYmFjayBtYWtlRGF0YVJlYWR5Q2FsbGJhY2ssIHZvaWQgKm1ha2VE
YXRhUmVhZHlSZWZjb24sIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb24s
IENNSXRlbUNvdW50IG51bVNhbXBsZXMsIENNSXRlbUNvdW50IG51bVNhbXBsZVRpbWluZ0VudHJp
ZXMsIGNvbnN0IENNU2FtcGxlVGltaW5nSW5mbyAqc2FtcGxlVGltaW5nQXJyYXksIENNSXRlbUNv
dW50IG51bVNhbXBsZVNpemVFbnRyaWVzLCBjb25zdCBzaXplX3QgKnNhbXBsZVNpemVBcnJheSwg
Q01TYW1wbGVCdWZmZXJSZWYgKnNCdWZPdXQpLCAoYWxsb2NhdG9yLCBkYXRhQnVmZmVyLCBkYXRh
UmVhZHksIG1ha2VEYXRhUmVhZHlDYWxsYmFjaywgbWFrZURhdGFSZWFkeVJlZmNvbiwgZm9ybWF0
RGVzY3JpcHRpb24sIG51bVNhbXBsZXMsIG51bVNhbXBsZVRpbWluZ0VudHJpZXMsIHNhbXBsZVRp
bWluZ0FycmF5LCBudW1TYW1wbGVTaXplRW50cmllcywgc2FtcGxlU2l6ZUFycmF5LCBzQnVmT3V0
KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBs
ZUJ1ZmZlckNyZWF0ZUNvcHksIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBD
TVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDTVNhbXBsZUJ1ZmZlclJlZiAqc2J1ZkNvcHlPdXQpLCAo
YWxsb2NhdG9yLCBzYnVmLCBzYnVmQ29weU91dCkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWlu
ZywgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNU2FtcGxlQnVmZmVyUmVm
IG9yaWdpbmFsU0J1ZiwgQ01JdGVtQ291bnQgbnVtU2FtcGxlVGltaW5nRW50cmllcywgY29uc3Qg
Q01TYW1wbGVUaW1pbmdJbmZvICpzYW1wbGVUaW1pbmdBcnJheSwgQ01TYW1wbGVCdWZmZXJSZWYg
KnNCdWZDb3B5T3V0KSwgKGFsbG9jYXRvciwgb3JpZ2luYWxTQnVmLCBudW1TYW1wbGVUaW1pbmdF
bnRyaWVzLCBzYW1wbGVUaW1pbmdBcnJheSwgc0J1ZkNvcHlPdXQpKQorU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0RGVjb2RlVGlt
ZVN0YW1wLCBDTVRpbWUsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQorU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0
RHVyYXRpb24sIENNVGltZSwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCitTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJH
ZXRQcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYp
LCAoc2J1ZikpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwg
Q01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5LCBDRkFycmF5UmVmLCAoQ01T
YW1wbGVCdWZmZXJSZWYgc2J1ZiwgQm9vbGVhbiBjcmVhdGVJZk5lY2Vzc2FyeSksIChzYnVmLCBj
cmVhdGVJZk5lY2Vzc2FyeSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENv
cmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXksIE9TU3RhdHVz
LCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ01JdGVtQ291bnQgdGltaW5nQXJyYXlFbnRyaWVz
LCBDTVNhbXBsZVRpbWluZ0luZm8gKnRpbWluZ0FycmF5T3V0LCBDTUl0ZW1Db3VudCAqdGltaW5n
QXJyYXlFbnRyaWVzTmVlZGVkT3V0KSwgKHNidWYsIHRpbWluZ0FycmF5RW50cmllcywgdGltaW5n
QXJyYXlPdXQsIHRpbWluZ0FycmF5RW50cmllc05lZWRlZE91dCkpCitTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRUb3RhbFNhbXBs
ZVNpemUsIHNpemVfdCwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01TZXRBdHRhY2htZW50LCB2
b2lkLCAoQ01BdHRhY2htZW50QmVhcmVyUmVmIHRhcmdldCwgQ0ZTdHJpbmdSZWYga2V5LCBDRlR5
cGVSZWYgdmFsdWUsIENNQXR0YWNobWVudE1vZGUgYXR0YWNobWVudE1vZGUpLCAodGFyZ2V0LCBr
ZXksIHZhbHVlLCBhdHRhY2htZW50TW9kZSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJD
RShQQUwsIENvcmVNZWRpYSwgQ01UaW1lYmFzZUNyZWF0ZVdpdGhNYXN0ZXJDbG9jaywgT1NTdGF0
dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNQ2xvY2tSZWYgbWFzdGVyQ2xvY2ssIENN
VGltZWJhc2VSZWYgKnRpbWViYXNlT3V0KSwgKGFsbG9jYXRvciwgbWFzdGVyQ2xvY2ssIHRpbWVi
YXNlT3V0KSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBD
TVRpbWViYXNlR2V0VGltZSwgQ01UaW1lLCAoQ01UaW1lYmFzZVJlZiB0aW1lYmFzZSksICh0aW1l
YmFzZSkpCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01U
aW1lYmFzZVNldFJhdGUsIE9TU3RhdHVzLCAoQ01UaW1lYmFzZVJlZiB0aW1lYmFzZSwgRmxvYXQ2
NCByYXRlKSwgKHRpbWViYXNlLCByYXRlKSkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFBBTCwgQ29yZU1lZGlhLCBDTVRpbWViYXNlU2V0VGltZSwgT1NTdGF0dXMsIChDTVRpbWViYXNl
UmVmIHRpbWViYXNlLCBDTVRpbWUgdGltZSksICh0aW1lYmFzZSwgdGltZSkpCitTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01UaW1lQ29weUFzRGljdGlvbmFy
eSwgQ0ZEaWN0aW9uYXJ5UmVmLCAoQ01UaW1lIHRpbWUsIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRv
ciksICh0aW1lLCBhbGxvY2F0b3IpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFM
LCBDb3JlTWVkaWEsIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldERpbWVuc2lvbnMsIENNVmlk
ZW9EaW1lbnNpb25zLCAoQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIHZpZGVvRGVzYyksICh2
aWRlb0Rlc2MpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEs
IENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldFByZXNlbnRhdGlvbkRpbWVuc2lvbnMsIENHU2l6
ZSwgKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiB2aWRlb0Rlc2MsIEJvb2xlYW4gdXNlUGl4
ZWxBc3BlY3RSYXRpbywgQm9vbGVhbiB1c2VDbGVhbkFwZXJ0dXJlKSwgKHZpZGVvRGVzYywgdXNl
UGl4ZWxBc3BlY3RSYXRpbywgdXNlQ2xlYW5BcGVydHVyZSkpCisKK1NPRlRfTElOS19DT05TVEFO
VF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90
RGlzcGxheSwgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShQQUws
IENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Ob3RTeW5jLCBDRlN0cmluZ1JlZikK
K1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVC
dWZmZXJBdHRhY2htZW50S2V5X0Rpc3BsYXlFbXB0eU1lZGlhSW1tZWRpYXRlbHksIENGU3RyaW5n
UmVmKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVNh
bXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRHJhaW5BZnRlckRlY29kaW5nLCBDRlN0cmluZ1JlZikK
K1NPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVC
dWZmZXJBdHRhY2htZW50S2V5X0VtcHR5TWVkaWEsIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1l
bnRLZXlfUmVzZXREZWNvZGVyQmVmb3JlRGVjb2RpbmcsIENGU3RyaW5nUmVmKQorU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIGtDTVRpbWViYXNlTm90aWZpY2F0
aW9uX0VmZmVjdGl2ZVJhdGVDaGFuZ2VkLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFO
VF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1l
SnVtcGVkLCBDRlN0cmluZ1JlZikKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKworI2lmIFBM
QVRGT1JNKElPUykKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlh
LCBDTUF1ZGlvQ2xvY2tDcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9y
LCBDTUNsb2NrUmVmICpjbG9ja091dCksIChhbGxvY2F0b3IsIGNsb2NrT3V0KSkKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTVRpbWVNYXhpbXVtLCBDTVRp
bWUsIChDTVRpbWUgdGltZTEsIENNVGltZSB0aW1lMiksICh0aW1lMSwgdGltZTIpKQorU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNVGltZU1pbmltdW0sIENN
VGltZSwgKENNVGltZSB0aW1lMSwgQ01UaW1lIHRpbWUyKSwgKHRpbWUxLCB0aW1lMikpCitTT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShQQUwsIENvcmVNZWRpYSwgQ01UaW1lUmFuZ2VDb250
YWluc1RpbWUsIEJvb2xlYW4sIChDTVRpbWVSYW5nZSByYW5nZSwgQ01UaW1lIHRpbWUpLCAocmFu
Z2UsIHRpbWUpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEs
IENNVGltZVJhbmdlTWFrZSwgQ01UaW1lUmFuZ2UsIChDTVRpbWUgc3RhcnQsIENNVGltZSBkdXJh
dGlvbiksIChzdGFydCwgZHVyYXRpb24pKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uo
UEFMLCBDb3JlTWVkaWEsIENNVGltZVN1YnRyYWN0LCBDTVRpbWUsIChDTVRpbWUgbWludWVuZCwg
Q01UaW1lIHN1YnRyYWhlbmQpLCAobWludWVuZCwgc3VidHJhaGVuZCkpCisKK1NPRlRfTElOS19D
T05TVEFOVF9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lSW5kZWZpbml0ZSwgQ01U
aW1lKQorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKworI2lmIFBMQVRGT1JNKE1BQykKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfU09VUkNFKFBBTCwgQ29yZU1lZGlhLCBDTUF1ZGlvRGV2aWNlQ2xv
Y2tDcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1Jl
ZiBkZXZpY2VVSUQsIENNQ2xvY2tSZWYgKmNsb2NrT3V0KSwgKGFsbG9jYXRvciwgZGV2aWNlVUlE
LCBjbG9ja091dCkpCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCisjaWYgUExBVEZPUk0oV0lO
KQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENNVGltZUFk
ZCwgQ01UaW1lLCAoQ01UaW1lIGFkZGVuZDEsIENNVGltZSBhZGRlbmQyKSwgKGFkZGVuZDEsIGFk
ZGVuZDIpKQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoUEFMLCBDb3JlTWVkaWEsIENN
VGltZU1ha2VGcm9tRGljdGlvbmFyeSwgQ01UaW1lLCAoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QpLCAo
ZGljdCkpCisjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQorCisjZW5kaWYgLy8gVVNFKEFWRk9VTkRB
VElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oIGIvU291cmNlL1dlYkNvcmUvUEFML2NmL0NvcmVNZWRpYVNvZnRMaW5rLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzAwZDhkMDE1NmJjZjQ4Mzk1YmZiYzQ4MDYzYzI4ZmIyOTMwMWU1MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oCkBAIC0wLDAg
KzEsMjEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29yZU1lZGlhU29mdExpbmtfaAorI2Rl
ZmluZSBDb3JlTWVkaWFTb2Z0TGlua19oCisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorLy8gRklY
TUU6IFNob3VsZCBiZSBVU0UoQ09SRU1FRElBKSwgYnV0IHRoaXMgaXNuJ3QgY3VycmVudGx5IGRl
ZmluZWQgb24gV2luZG93cy4KKworI2luY2x1ZGUgIkNvcmVNZWRpYVNQSS5oIgorI2luY2x1ZGUg
IlNvZnRMaW5raW5nLmgiCisKK1NPRlRfTElOS19GUkFNRVdPUktfRk9SX0hFQURFUihQQUwsIENv
cmVNZWRpYSkKKworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEs
IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzLCBPU1N0YXR1cywgKENNQmxvY2tCdWZmZXJSZWYg
dGhlU291cmNlQnVmZmVyLCBzaXplX3Qgb2Zmc2V0VG9EYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwg
dm9pZCogZGVzdGluYXRpb24pLCAodGhlU291cmNlQnVmZmVyLCBvZmZzZXRUb0RhdGEsIGRhdGFM
ZW5ndGgsIGRlc3RpbmF0aW9uKSkKKyNkZWZpbmUgQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMg
c29mdExpbmtfQ29yZU1lZGlhX0NNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzCitTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdldERhdGFM
ZW5ndGgsIHNpemVfdCwgKENNQmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1ZmZlcikp
CisjZGVmaW5lIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoIHNvZnRMaW5rX0NvcmVNZWRpYV9D
TUJsb2NrQnVmZmVyR2V0RGF0YUxlbmd0aAorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIo
UEFMLCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zLCBDRkRpY3Rp
b25hcnlSZWYsIChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCisjZGVmaW5l
IENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb25zIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUZv
cm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciwgQ01CbG9ja0J1
ZmZlclJlZiwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCisjZGVmaW5lIENNU2Ft
cGxlQnVmZmVyR2V0RGF0YUJ1ZmZlciBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJH
ZXREYXRhQnVmZmVyCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRp
YSwgQ01TYW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbiwgQ01Gb3JtYXREZXNjcmlwdGlv
blJlZiwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCisjZGVmaW5lIENNU2FtcGxl
QnVmZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24gc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVm
ZmVyR2V0Rm9ybWF0RGVzY3JpcHRpb24KK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm8sIE9TU3RhdHVz
LCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ01JdGVtSW5kZXggc2FtcGxlSW5kZXgsIENNU2Ft
cGxlVGltaW5nSW5mbyogdGltaW5nSW5mb091dCksIChzYnVmLCBzYW1wbGVJbmRleCwgdGltaW5n
SW5mb091dCkpCisjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mbyBzb2Z0
TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01UaW1lQ29tcGFyZSwgaW50
MzJfdCwgKENNVGltZSB0aW1lMSwgQ01UaW1lIHRpbWUyKSwgKHRpbWUxLCB0aW1lMikpCisjZGVm
aW5lIENNVGltZUNvbXBhcmUgc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZUNvbXBhcmUKK1NPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVRpbWVHZXRTZWNvbmRz
LCBGbG9hdDY0LCAoQ01UaW1lIHRpbWUpLCAodGltZSkpCisjZGVmaW5lIENNVGltZUdldFNlY29u
ZHMgc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZUdldFNlY29uZHMKK1NPRlRfTElOS19GVU5DVElP
Tl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVRpbWVNYWtlLCBDTVRpbWUsIChpbnQ2NF90
IHZhbHVlLCBpbnQzMl90IHRpbWVzY2FsZSksICh2YWx1ZSwgdGltZXNjYWxlKSkKKyNkZWZpbmUg
Q01UaW1lTWFrZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01UaW1lTWFrZQorU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNVGltZU1ha2VXaXRoU2Vjb25kcywgQ01U
aW1lLCAoRmxvYXQ2NCBzZWNvbmRzLCBpbnQzMl90IHByZWZlcnJlZFRpbWVTY2FsZSksIChzZWNv
bmRzLCBwcmVmZXJyZWRUaW1lU2NhbGUpKQorI2RlZmluZSBDTVRpbWVNYWtlV2l0aFNlY29uZHMg
c29mdExpbmtfQ29yZU1lZGlhX0NNVGltZU1ha2VXaXRoU2Vjb25kcworU09GVF9MSU5LX0ZVTkNU
SU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNVGltZVJhbmdlR2V0RW5kLCBDTVRpbWUs
IChDTVRpbWVSYW5nZSByYW5nZSksIChyYW5nZSkpCisjZGVmaW5lIENNVGltZVJhbmdlR2V0RW5k
IHNvZnRMaW5rX0NvcmVNZWRpYV9DTVRpbWVSYW5nZUdldEVuZAorCitTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNp
b25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcywgQ0ZTdHJpbmdSZWYpCisjZGVmaW5l
IGtDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9u
QXRvbXMgZ2V0X0NvcmVNZWRpYV9rQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1wbGVE
ZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQsIENGU3RyaW5n
UmVmKQorI2RlZmluZSBrQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQgZ2V0X0NvcmVNZWRp
YV9rQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9FbmQoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRs
ZSwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRs
ZSBnZXRfQ29yZU1lZGlhX2tDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSgpCitTT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEFs
aWdubWVudFR5cGVfU3RhcnQsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01UZXh0TWFya3VwQWxp
Z25tZW50VHlwZV9TdGFydCBnZXRfQ29yZU1lZGlhX2tDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBl
X1N0YXJ0KCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBr
Q01UZXh0TWFya3VwQXR0cmlidXRlX0FsaWdubWVudCwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtD
TVRleHRNYXJrdXBBdHRyaWJ1dGVfQWxpZ25tZW50IGdldF9Db3JlTWVkaWFfa0NNVGV4dE1hcmt1
cEF0dHJpYnV0ZV9BbGlnbm1lbnQoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENvbG9yQVJHQiwg
Q0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENv
bG9yQVJHQiBnZXRfQ29yZU1lZGlhX2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENv
bG9yQVJHQigpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwg
a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYXNlRm9udFNpemVQZXJjZW50YWdlUmVsYXRpdmVUb1Zp
ZGVvSGVpZ2h0LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9C
YXNlRm9udFNpemVQZXJjZW50YWdlUmVsYXRpdmVUb1ZpZGVvSGVpZ2h0IGdldF9Db3JlTWVkaWFf
a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYXNlRm9udFNpemVQZXJjZW50YWdlUmVsYXRpdmVUb1Zp
ZGVvSGVpZ2h0KCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlh
LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0JvbGRTdHlsZSwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5l
IGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQm9sZFN0eWxlIGdldF9Db3JlTWVkaWFfa0NNVGV4dE1h
cmt1cEF0dHJpYnV0ZV9Cb2xkU3R5bGUoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIo
UEFMLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQ2hhcmFjdGVyQmFja2dyb3Vu
ZENvbG9yQVJHQiwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVf
Q2hhcmFjdGVyQmFja2dyb3VuZENvbG9yQVJHQiBnZXRfQ29yZU1lZGlhX2tDTVRleHRNYXJrdXBB
dHRyaWJ1dGVfQ2hhcmFjdGVyQmFja2dyb3VuZENvbG9yQVJHQigpCitTT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb250
RmFtaWx5TmFtZSwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVf
Rm9udEZhbWlseU5hbWUgZ2V0X0NvcmVNZWRpYV9rQ01UZXh0TWFya3VwQXR0cmlidXRlX0ZvbnRG
YW1pbHlOYW1lKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlh
LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0ZvcmVncm91bmRDb2xvckFSR0IsIENGU3RyaW5nUmVm
KQorI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0ZvcmVncm91bmRDb2xvckFSR0IgZ2V0
X0NvcmVNZWRpYV9rQ01UZXh0TWFya3VwQXR0cmlidXRlX0ZvcmVncm91bmRDb2xvckFSR0IoKQor
U09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJr
dXBBdHRyaWJ1dGVfSXRhbGljU3R5bGUsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01UZXh0TWFy
a3VwQXR0cmlidXRlX0l0YWxpY1N0eWxlIGdldF9Db3JlTWVkaWFfa0NNVGV4dE1hcmt1cEF0dHJp
YnV0ZV9JdGFsaWNTdHlsZSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENv
cmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9PcnRob2dvbmFsTGluZVBvc2l0aW9uUGVy
Y2VudGFnZVJlbGF0aXZlVG9Xcml0aW5nRGlyZWN0aW9uLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUg
a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9PcnRob2dvbmFsTGluZVBvc2l0aW9uUGVyY2VudGFnZVJl
bGF0aXZlVG9Xcml0aW5nRGlyZWN0aW9uIGdldF9Db3JlTWVkaWFfa0NNVGV4dE1hcmt1cEF0dHJp
YnV0ZV9PcnRob2dvbmFsTGluZVBvc2l0aW9uUGVyY2VudGFnZVJlbGF0aXZlVG9Xcml0aW5nRGly
ZWN0aW9uKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBr
Q01UZXh0TWFya3VwQXR0cmlidXRlX1JlbGF0aXZlRm9udFNpemUsIENGU3RyaW5nUmVmKQorI2Rl
ZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1JlbGF0aXZlRm9udFNpemUgZ2V0X0NvcmVNZWRp
YV9rQ01UZXh0TWFya3VwQXR0cmlidXRlX1JlbGF0aXZlRm9udFNpemUoKQorU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVf
VGV4dFBvc2l0aW9uUGVyY2VudGFnZVJlbGF0aXZlVG9Xcml0aW5nRGlyZWN0aW9uLCBDRlN0cmlu
Z1JlZikKKyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9UZXh0UG9zaXRpb25QZXJjZW50
YWdlUmVsYXRpdmVUb1dyaXRpbmdEaXJlY3Rpb24gZ2V0X0NvcmVNZWRpYV9rQ01UZXh0TWFya3Vw
QXR0cmlidXRlX1RleHRQb3NpdGlvblBlcmNlbnRhZ2VSZWxhdGl2ZVRvV3JpdGluZ0RpcmVjdGlv
bigpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwga0NNVGV4
dE1hcmt1cEF0dHJpYnV0ZV9VbmRlcmxpbmVTdHlsZSwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtD
TVRleHRNYXJrdXBBdHRyaWJ1dGVfVW5kZXJsaW5lU3R5bGUgZ2V0X0NvcmVNZWRpYV9rQ01UZXh0
TWFya3VwQXR0cmlidXRlX1VuZGVybGluZVN0eWxlKCkKK1NPRlRfTElOS19DT05TVEFOVF9GT1Jf
SEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1ZlcnRpY2FsTGF5
b3V0LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9WZXJ0aWNh
bExheW91dCBnZXRfQ29yZU1lZGlhX2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVmVydGljYWxMYXlv
dXQoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfV3JpdGluZ0RpcmVjdGlvblNpemVQZXJjZW50YWdlLCBDRlN0cmlu
Z1JlZikKKyNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Xcml0aW5nRGlyZWN0aW9uU2l6
ZVBlcmNlbnRhZ2UgZ2V0X0NvcmVNZWRpYV9rQ01UZXh0TWFya3VwQXR0cmlidXRlX1dyaXRpbmdE
aXJlY3Rpb25TaXplUGVyY2VudGFnZSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQ
QUwsIENvcmVNZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0X0xlZnRUb1JpZ2h0LCBDRlN0cmlu
Z1JlZikKKyNkZWZpbmUga0NNVGV4dFZlcnRpY2FsTGF5b3V0X0xlZnRUb1JpZ2h0IGdldF9Db3Jl
TWVkaWFfa0NNVGV4dFZlcnRpY2FsTGF5b3V0X0xlZnRUb1JpZ2h0KCkKK1NPRlRfTElOS19DT05T
VEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01UZXh0VmVydGljYWxMYXlvdXRfUmln
aHRUb0xlZnQsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01UZXh0VmVydGljYWxMYXlvdXRfUmln
aHRUb0xlZnQgZ2V0X0NvcmVNZWRpYV9rQ01UZXh0VmVydGljYWxMYXlvdXRfUmlnaHRUb0xlZnQo
KQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVRpbWVJ
bnZhbGlkLCBDTVRpbWUpCisjZGVmaW5lIGtDTVRpbWVJbnZhbGlkIGdldF9Db3JlTWVkaWFfa0NN
VGltZUludmFsaWQoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVk
aWEsIGtDTVRpbWVaZXJvLCBDTVRpbWUpCisjZGVmaW5lIGtDTVRpbWVaZXJvIGdldF9Db3JlTWVk
aWFfa0NNVGltZVplcm8oKQorCisjaWYgUExBVEZPUk0oQ09DT0EpCisKK1NPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0TWVk
aWFTdWJUeXBlLCBGb3VyQ2hhckNvZGUsIChDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGRlc2MpLCAo
ZGVzYykpCisjZGVmaW5lIENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUgc29mdExp
bmtfQ29yZU1lZGlhX0NNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUKK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9u
R2V0TWVkaWFUeXBlLCBDTU1lZGlhVHlwZSwgKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyks
IChkZXNjKSkKKyNkZWZpbmUgQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhVHlwZSBzb2Z0TGlu
a19Db3JlTWVkaWFfQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhVHlwZQorU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNTm90aWZpY2F0aW9uQ2VudGVyR2V0
RGVmYXVsdExvY2FsQ2VudGVyLCBDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiwgKHZvaWQpLCAoKSkK
KyNkZWZpbmUgQ01Ob3RpZmljYXRpb25DZW50ZXJHZXREZWZhdWx0TG9jYWxDZW50ZXIgc29mdExp
bmtfQ29yZU1lZGlhX0NNTm90aWZpY2F0aW9uQ2VudGVyR2V0RGVmYXVsdExvY2FsQ2VudGVyCitT
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01Ob3RpZmljYXRp
b25DZW50ZXJBZGRMaXN0ZW5lciwgT1NTdGF0dXMsIChDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiBj
ZW50ZXIsIGNvbnN0IHZvaWQqIGxpc3RlbmVyLCBDTU5vdGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxi
YWNrLCBDRlN0cmluZ1JlZiBub3RpZmljYXRpb24sIGNvbnN0IHZvaWQqIG9iamVjdCwgVUludDMy
IGZsYWdzKSwgKGNlbnRlciwgbGlzdGVuZXIsIGNhbGxiYWNrLCBub3RpZmljYXRpb24sIG9iamVj
dCwgZmxhZ3MpKQorI2RlZmluZSBDTU5vdGlmaWNhdGlvbkNlbnRlckFkZExpc3RlbmVyIHNvZnRM
aW5rX0NvcmVNZWRpYV9DTU5vdGlmaWNhdGlvbkNlbnRlckFkZExpc3RlbmVyCitTT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01Ob3RpZmljYXRpb25DZW50ZXJS
ZW1vdmVMaXN0ZW5lciwgT1NTdGF0dXMsIChDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiBjZW50ZXIs
IGNvbnN0IHZvaWQqIGxpc3RlbmVyLCBDTU5vdGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCBD
RlN0cmluZ1JlZiBub3RpZmljYXRpb24sIGNvbnN0IHZvaWQqIG9iamVjdCksIChjZW50ZXIsIGxp
c3RlbmVyLCBjYWxsYmFjaywgbm90aWZpY2F0aW9uLCBvYmplY3QpKQorI2RlZmluZSBDTU5vdGlm
aWNhdGlvbkNlbnRlclJlbW92ZUxpc3RlbmVyIHNvZnRMaW5rX0NvcmVNZWRpYV9DTU5vdGlmaWNh
dGlvbkNlbnRlclJlbW92ZUxpc3RlbmVyCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQ
QUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJDYWxsRm9yRWFjaFNhbXBsZSwgT1NTdGF0dXMs
IChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBPU1N0YXR1cyAoKmNhbGxiYWNrKSggQ01TYW1wbGVC
dWZmZXJSZWYgc2FtcGxlQnVmZmVyLCBDTUl0ZW1Db3VudCBpbmRleCwgdm9pZCAqcmVmY29uKSwg
dm9pZCAqcmVmY29uKSwgKHNidWYsIGNhbGxiYWNrLCByZWZjb24pKQorI2RlZmluZSBDTVNhbXBs
ZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZl
ckNhbGxGb3JFYWNoU2FtcGxlCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENv
cmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJDcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYg
YWxsb2NhdG9yLCBDTUJsb2NrQnVmZmVyUmVmIGRhdGFCdWZmZXIsIEJvb2xlYW4gZGF0YVJlYWR5
LCBDTVNhbXBsZUJ1ZmZlck1ha2VEYXRhUmVhZHlDYWxsYmFjayBtYWtlRGF0YVJlYWR5Q2FsbGJh
Y2ssIHZvaWQgKm1ha2VEYXRhUmVhZHlSZWZjb24sIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9y
bWF0RGVzY3JpcHRpb24sIENNSXRlbUNvdW50IG51bVNhbXBsZXMsIENNSXRlbUNvdW50IG51bVNh
bXBsZVRpbWluZ0VudHJpZXMsIGNvbnN0IENNU2FtcGxlVGltaW5nSW5mbyAqc2FtcGxlVGltaW5n
QXJyYXksIENNSXRlbUNvdW50IG51bVNhbXBsZVNpemVFbnRyaWVzLCBjb25zdCBzaXplX3QgKnNh
bXBsZVNpemVBcnJheSwgQ01TYW1wbGVCdWZmZXJSZWYgKnNCdWZPdXQpLCAoYWxsb2NhdG9yLCBk
YXRhQnVmZmVyLCBkYXRhUmVhZHksIG1ha2VEYXRhUmVhZHlDYWxsYmFjaywgbWFrZURhdGFSZWFk
eVJlZmNvbiwgZm9ybWF0RGVzY3JpcHRpb24sIG51bVNhbXBsZXMsIG51bVNhbXBsZVRpbWluZ0Vu
dHJpZXMsIHNhbXBsZVRpbWluZ0FycmF5LCBudW1TYW1wbGVTaXplRW50cmllcywgc2FtcGxlU2l6
ZUFycmF5LCBzQnVmT3V0KSkKKyNkZWZpbmUgQ01TYW1wbGVCdWZmZXJDcmVhdGUgc29mdExpbmtf
Q29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyQ3JlYXRlCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hF
QURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5LCBPU1N0YXR1cywg
KENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQ01TYW1w
bGVCdWZmZXJSZWYgKnNidWZDb3B5T3V0KSwgKGFsbG9jYXRvciwgc2J1Ziwgc2J1ZkNvcHlPdXQp
KQorI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNvcHkgc29mdExpbmtfQ29yZU1lZGlhX0NN
U2FtcGxlQnVmZmVyQ3JlYXRlQ29weQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcsIE9TU3Rh
dHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDTVNhbXBsZUJ1ZmZlclJlZiBvcmlnaW5h
bFNCdWYsIENNSXRlbUNvdW50IG51bVNhbXBsZVRpbWluZ0VudHJpZXMsIGNvbnN0IENNU2FtcGxl
VGltaW5nSW5mbyAqc2FtcGxlVGltaW5nQXJyYXksIENNU2FtcGxlQnVmZmVyUmVmICpzQnVmQ29w
eU91dCksIChhbGxvY2F0b3IsIG9yaWdpbmFsU0J1ZiwgbnVtU2FtcGxlVGltaW5nRW50cmllcywg
c2FtcGxlVGltaW5nQXJyYXksIHNCdWZDb3B5T3V0KSkKKyNkZWZpbmUgQ01TYW1wbGVCdWZmZXJD
cmVhdGVDb3B5V2l0aE5ld1RpbWluZyBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJD
cmVhdGVDb3B5V2l0aE5ld1RpbWluZworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFM
LCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0RGVjb2RlVGltZVN0YW1wLCBDTVRpbWUsIChD
TVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQorI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdl
dERlY29kZVRpbWVTdGFtcCBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXREZWNv
ZGVUaW1lU3RhbXAKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlh
LCBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uLCBDTVRpbWUsIChDTVNhbXBsZUJ1ZmZlclJlZiBz
YnVmKSwgKHNidWYpKQorI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uCitTT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25U
aW1lU3RhbXAsIENNVGltZSwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCisjZGVm
aW5lIENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wIHNvZnRMaW5rX0NvcmVN
ZWRpYV9DTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcAorU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxl
QXR0YWNobWVudHNBcnJheSwgQ0ZBcnJheVJlZiwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIEJv
b2xlYW4gY3JlYXRlSWZOZWNlc3NhcnkpLCAoc2J1ZiwgY3JlYXRlSWZOZWNlc3NhcnkpKQorI2Rl
ZmluZSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZUF0dGFjaG1lbnRzQXJyYXkgc29mdExpbmtfQ29y
ZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheQorU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2Ft
cGxlVGltaW5nSW5mb0FycmF5LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENN
SXRlbUNvdW50IHRpbWluZ0FycmF5RW50cmllcywgQ01TYW1wbGVUaW1pbmdJbmZvICp0aW1pbmdB
cnJheU91dCwgQ01JdGVtQ291bnQgKnRpbWluZ0FycmF5RW50cmllc05lZWRlZE91dCksIChzYnVm
LCB0aW1pbmdBcnJheUVudHJpZXMsIHRpbWluZ0FycmF5T3V0LCB0aW1pbmdBcnJheUVudHJpZXNO
ZWVkZWRPdXQpKQorI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJh
eSBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJy
YXkKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVNhbXBs
ZUJ1ZmZlckdldFRvdGFsU2FtcGxlU2l6ZSwgc2l6ZV90LCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1
ZiksIChzYnVmKSkKKyNkZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXRUb3RhbFNhbXBsZVNpemUgc29m
dExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0VG90YWxTYW1wbGVTaXplCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01TZXRBdHRhY2htZW50LCB2
b2lkLCAoQ01BdHRhY2htZW50QmVhcmVyUmVmIHRhcmdldCwgQ0ZTdHJpbmdSZWYga2V5LCBDRlR5
cGVSZWYgdmFsdWUsIENNQXR0YWNobWVudE1vZGUgYXR0YWNobWVudE1vZGUpLCAodGFyZ2V0LCBr
ZXksIHZhbHVlLCBhdHRhY2htZW50TW9kZSkpCisjZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0VG90
YWxTYW1wbGVTaXplIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldFRvdGFsU2Ft
cGxlU2l6ZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENN
VGltZWJhc2VDcmVhdGVXaXRoTWFzdGVyQ2xvY2ssIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYg
YWxsb2NhdG9yLCBDTUNsb2NrUmVmIG1hc3RlckNsb2NrLCBDTVRpbWViYXNlUmVmICp0aW1lYmFz
ZU91dCksIChhbGxvY2F0b3IsIG1hc3RlckNsb2NrLCB0aW1lYmFzZU91dCkpCisjZGVmaW5lIENN
VGltZWJhc2VDcmVhdGVXaXRoTWFzdGVyQ2xvY2sgc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZWJh
c2VDcmVhdGVXaXRoTWFzdGVyQ2xvY2sKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBB
TCwgQ29yZU1lZGlhLCBDTVRpbWViYXNlR2V0VGltZSwgQ01UaW1lLCAoQ01UaW1lYmFzZVJlZiB0
aW1lYmFzZSksICh0aW1lYmFzZSkpCisjZGVmaW5lIENNVGltZWJhc2VHZXRUaW1lIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTVRpbWViYXNlR2V0VGltZQorU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFE
RVIoUEFMLCBDb3JlTWVkaWEsIENNVGltZWJhc2VTZXRSYXRlLCBPU1N0YXR1cywgKENNVGltZWJh
c2VSZWYgdGltZWJhc2UsIEZsb2F0NjQgcmF0ZSksICh0aW1lYmFzZSwgcmF0ZSkpCisjZGVmaW5l
IENNVGltZWJhc2VTZXRSYXRlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVRpbWViYXNlU2V0UmF0ZQor
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNVGltZWJhc2VT
ZXRUaW1lLCBPU1N0YXR1cywgKENNVGltZWJhc2VSZWYgdGltZWJhc2UsIENNVGltZSB0aW1lKSwg
KHRpbWViYXNlLCB0aW1lKSkKKyNkZWZpbmUgQ01UaW1lYmFzZVNldFRpbWUgc29mdExpbmtfQ29y
ZU1lZGlhX0NNVGltZWJhc2VTZXRUaW1lCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQ
QUwsIENvcmVNZWRpYSwgQ01UaW1lQ29weUFzRGljdGlvbmFyeSwgQ0ZEaWN0aW9uYXJ5UmVmLCAo
Q01UaW1lIHRpbWUsIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciksICh0aW1lLCBhbGxvY2F0b3Ip
KQorI2RlZmluZSBDTVRpbWVDb3B5QXNEaWN0aW9uYXJ5IHNvZnRMaW5rX0NvcmVNZWRpYV9DTVRp
bWVDb3B5QXNEaWN0aW9uYXJ5CitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENv
cmVNZWRpYSwgQ01WaWRlb0Zvcm1hdERlc2NyaXB0aW9uR2V0RGltZW5zaW9ucywgQ01WaWRlb0Rp
bWVuc2lvbnMsIChDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgdmlkZW9EZXNjKSwgKHZpZGVv
RGVzYykpCisjZGVmaW5lIENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldERpbWVuc2lvbnMgc29m
dExpbmtfQ29yZU1lZGlhX0NNVmlkZW9Gb3JtYXREZXNjcmlwdGlvbkdldERpbWVuc2lvbnMKK1NP
RlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVZpZGVvRm9ybWF0
RGVzY3JpcHRpb25HZXRQcmVzZW50YXRpb25EaW1lbnNpb25zLCBDR1NpemUsIChDTVZpZGVvRm9y
bWF0RGVzY3JpcHRpb25SZWYgdmlkZW9EZXNjLCBCb29sZWFuIHVzZVBpeGVsQXNwZWN0UmF0aW8s
IEJvb2xlYW4gdXNlQ2xlYW5BcGVydHVyZSksICh2aWRlb0Rlc2MsIHVzZVBpeGVsQXNwZWN0UmF0
aW8sIHVzZUNsZWFuQXBlcnR1cmUpKQorI2RlZmluZSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25H
ZXRQcmVzZW50YXRpb25EaW1lbnNpb25zIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVZpZGVvRm9ybWF0
RGVzY3JpcHRpb25HZXRQcmVzZW50YXRpb25EaW1lbnNpb25zCisKK1NPRlRfTElOS19DT05TVEFO
VF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90
RGlzcGxheSwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9O
b3REaXNwbGF5IGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERpc3Bs
YXkoKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVNh
bXBsZUF0dGFjaG1lbnRLZXlfTm90U3luYywgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTVNhbXBs
ZUF0dGFjaG1lbnRLZXlfTm90U3luYyBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUF0dGFjaG1lbnRL
ZXlfTm90U3luYygpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIENvcmVNZWRp
YSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9EaXNwbGF5RW1wdHlNZWRpYUltbWVkaWF0
ZWx5LCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9E
aXNwbGF5RW1wdHlNZWRpYUltbWVkaWF0ZWx5IGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVy
QXR0YWNobWVudEtleV9EaXNwbGF5RW1wdHlNZWRpYUltbWVkaWF0ZWx5KCkKK1NPRlRfTElOS19D
T05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01TYW1wbGVCdWZmZXJBdHRhY2ht
ZW50S2V5X0RyYWluQWZ0ZXJEZWNvZGluZywgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTVNhbXBs
ZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRHJhaW5BZnRlckRlY29kaW5nIGdldF9Db3JlTWVkaWFfa0NN
U2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9EcmFpbkFmdGVyRGVjb2RpbmcoKQorU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVNhbXBsZUJ1ZmZlckF0dGFj
aG1lbnRLZXlfRW1wdHlNZWRpYSwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTVNhbXBsZUJ1ZmZl
ckF0dGFjaG1lbnRLZXlfRW1wdHlNZWRpYSBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1ZmZlckF0
dGFjaG1lbnRLZXlfRW1wdHlNZWRpYSgpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQ
QUwsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9SZXNldERlY29kZXJC
ZWZvcmVEZWNvZGluZywgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckF0dGFj
aG1lbnRLZXlfUmVzZXREZWNvZGVyQmVmb3JlRGVjb2RpbmcgZ2V0X0NvcmVNZWRpYV9rQ01TYW1w
bGVCdWZmZXJBdHRhY2htZW50S2V5X1Jlc2V0RGVjb2RlckJlZm9yZURlY29kaW5nKCkKK1NPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBrQ01UaW1lYmFzZU5vdGlm
aWNhdGlvbl9FZmZlY3RpdmVSYXRlQ2hhbmdlZCwgQ0ZTdHJpbmdSZWYpCisjZGVmaW5lIGtDTVRp
bWViYXNlTm90aWZpY2F0aW9uX0VmZmVjdGl2ZVJhdGVDaGFuZ2VkIGdldF9Db3JlTWVkaWFfa0NN
VGltZWJhc2VOb3RpZmljYXRpb25fRWZmZWN0aXZlUmF0ZUNoYW5nZWQoKQorU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtDTVRpbWViYXNlTm90aWZpY2F0aW9u
X1RpbWVKdW1wZWQsIENGU3RyaW5nUmVmKQorI2RlZmluZSBrQ01UaW1lYmFzZU5vdGlmaWNhdGlv
bl9UaW1lSnVtcGVkIGdldF9Db3JlTWVkaWFfa0NNVGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1
bXBlZCgpCisKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKworI2lmIFBMQVRGT1JNKElPUykK
KworU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNQXVkaW9D
bG9ja0NyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNQ2xvY2tS
ZWYgKmNsb2NrT3V0KSwgKGFsbG9jYXRvciwgY2xvY2tPdXQpKQorI2RlZmluZSBDTUF1ZGlvQ2xv
Y2tDcmVhdGUgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9DbG9ja0NyZWF0ZQorU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNVGltZU1heGltdW0sIENNVGlt
ZSwgKENNVGltZSB0aW1lMSwgQ01UaW1lIHRpbWUyKSwgKHRpbWUxLCB0aW1lMikpCisjZGVmaW5l
IENNVGltZU1heGltdW0gc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZU1heGltdW0KK1NPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVRpbWVNaW5pbXVtLCBDTVRp
bWUsIChDTVRpbWUgdGltZTEsIENNVGltZSB0aW1lMiksICh0aW1lMSwgdGltZTIpKQorI2RlZmlu
ZSBDTVRpbWVNaW5pbXVtIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVRpbWVNaW5pbXVtCitTT0ZUX0xJ
TktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIENvcmVNZWRpYSwgQ01UaW1lUmFuZ2VDb250YWlu
c1RpbWUsIEJvb2xlYW4sIChDTVRpbWVSYW5nZSByYW5nZSwgQ01UaW1lIHRpbWUpLCAocmFuZ2Us
IHRpbWUpKQorI2RlZmluZSBDTVRpbWVSYW5nZUNvbnRhaW5zVGltZSBzb2Z0TGlua19Db3JlTWVk
aWFfQ01UaW1lUmFuZ2VDb250YWluc1RpbWUKK1NPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFBBTCwgQ29yZU1lZGlhLCBDTVRpbWVSYW5nZU1ha2UsIENNVGltZVJhbmdlLCAoQ01UaW1lIHN0
YXJ0LCBDTVRpbWUgZHVyYXRpb24pLCAoc3RhcnQsIGR1cmF0aW9uKSkKKyNkZWZpbmUgQ01UaW1l
UmFuZ2VNYWtlIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVRpbWVSYW5nZU1ha2UKK1NPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFBBTCwgQ29yZU1lZGlhLCBDTVRpbWVTdWJ0cmFjdCwgQ01UaW1l
LCAoQ01UaW1lIG1pbnVlbmQsIENNVGltZSBzdWJ0cmFoZW5kKSwgKG1pbnVlbmQsIHN1YnRyYWhl
bmQpKQorI2RlZmluZSBDTVRpbWVTdWJ0cmFjdCBzb2Z0TGlua19Db3JlTWVkaWFfQ01UaW1lU3Vi
dHJhY3QKKworU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIGtD
TVRpbWVJbmRlZmluaXRlLCBDTVRpbWUpCisjZGVmaW5lIGtDTVRpbWVJbmRlZmluaXRlIGdldF9D
b3JlTWVkaWFfa0NNVGltZUluZGVmaW5pdGUoKQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQor
CisjaWYgUExBVEZPUk0oTUFDKQorCitTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUws
IENvcmVNZWRpYSwgQ01BdWRpb0RldmljZUNsb2NrQ3JlYXRlLCBPU1N0YXR1cywgKENGQWxsb2Nh
dG9yUmVmIGFsbG9jYXRvciwgQ0ZTdHJpbmdSZWYgZGV2aWNlVUlELCBDTUNsb2NrUmVmICpjbG9j
a091dCksIChhbGxvY2F0b3IsIGRldmljZVVJRCwgY2xvY2tPdXQpKQorI2RlZmluZSBDTUF1ZGlv
RGV2aWNlQ2xvY2tDcmVhdGUgIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUF1ZGlvRGV2aWNlQ2xvY2tD
cmVhdGUKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworI2lmIFBMQVRGT1JNKFdJTikKKwor
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNVGltZUFkZCwg
Q01UaW1lLCAoQ01UaW1lIGFkZGVuZDEsIENNVGltZSBhZGRlbmQyKSwgKGFkZGVuZDEsIGFkZGVu
ZDIpKQorI2RlZmluZSBDTVRpbWVBZGQgc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZUFkZAorU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBDb3JlTWVkaWEsIENNVGltZU1ha2VGcm9t
RGljdGlvbmFyeSwgQ01UaW1lLCAoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QpLCAoZGljdCkpCisjZGVm
aW5lIENNVGltZU1ha2VGcm9tRGljdGlvbmFyeSBzb2Z0TGlua19Db3JlTWVkaWFfQ01UaW1lTWFr
ZUZyb21EaWN0aW9uYXJ5CisKKyNlbmRpZiAvLyBQTEFURk9STShXSU4pCisKKyNlbmRpZiAvLyBV
U0UoQVZGT1VOREFUSU9OKQorCisjZW5kaWYgLy8gQ29yZU1lZGlhU29mdExpbmtfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oIGIvU291cmNlL1dlYkNvcmUvUEFML2Nv
bmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjliOWUwZWIxY2Q0YmEwYjZiMThhODIzMjQ5NmY4ZjVlZWRmN2E1
NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmgKQEAgLTAs
MCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWYgZGVmaW5lZChIQVZF
X0NPTkZJR19IKSAmJiBIQVZFX0NPTkZJR19IICYmIGRlZmluZWQoQlVJTERJTkdfV0lUSF9DTUFL
RSkKKyNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2RlZmluZSBVU0VfRklMRV9MT0NLIDEK
KyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSAmJiAhVVNFKFdJTkdESSkKKyNpbmNsdWRlIDxX
ZWJDb3JlL1dlYkNvcmVIZWFkZXJEZXRlY3Rpb24uaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8d3Rm
L0V4cG9ydE1hY3Jvcy5oPgorI2luY2x1ZGUgIlBsYXRmb3JtRXhwb3J0TWFjcm9zLmgiCisKKyNp
bmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+CisKKyNpZmRlZiBfX0FQUExFX18KKyNk
ZWZpbmUgSEFWRV9GVU5DX1VTTEVFUCAxCisjZW5kaWYgLyogX19BUFBMRV9fICovCisKKyNpZiBP
UyhXSU5ET1dTKQorCisjaWZuZGVmIF9XSU4zMl9XSU5OVAorI2RlZmluZSBfV0lOMzJfV0lOTlQg
MHgwNTAyCisjZW5kaWYKKworI2lmbmRlZiBXSU5WRVIKKyNkZWZpbmUgV0lOVkVSIDB4MDUwMgor
I2VuZGlmCisKKy8vIENVUkwgbmVlZHMgd2luc29jaywgc28gZG9uJ3QgcHJldmVudCBpbmNsdXNp
b24gb2YgaXQKKyNpZiAhVVNFKENVUkwpCisjaWZuZGVmIF9XSU5TT0NLQVBJXworI2RlZmluZSBf
V0lOU09DS0FQSV8gLy8gUHJldmVudCBpbmNsdXNpb24gb2Ygd2luc29jay5oIGluIHdpbmRvd3Mu
aAorI2VuZGlmCisjZW5kaWYKKworI2VuZGlmIC8qIE9TKFdJTkRPV1MpICovCisKKy8vIFVzaW5n
IENNYWtlIHdpdGggVW5peCBtYWtlZmlsZXMgZG9lcyBub3QgdXNlIHByZWZpeCBoZWFkZXJzLgor
I2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQorI2luY2x1
ZGUgIldlYkNvcmVQcmVmaXguaCIKKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKKworLy8g
VGhlc2UgdW5kZWZzIG1hdGNoIHVwIHdpdGggZGVmaW5lcyBpbiBXZWJDb3JlUHJlZml4LmggZm9y
IE1hYyBPUyBYLgorLy8gSGVscHMgdXMgY2F0Y2ggaWYgYW55b25lIHVzZXMgbmV3IG9yIGRlbGV0
ZSBieSBhY2NpZGVudCBpbiBjb2RlIGFuZCBkb2Vzbid0IGluY2x1ZGUgImNvbmZpZy5oIi4KKyN1
bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCisj
aW5jbHVkZSA8Y2lzbzY0Nj4KKworI2VuZGlmCisKKyNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlw
ZS5oPgorCisjaWYgQ09NUElMRVIoTVNWQykKKyNkZWZpbmUgU0tJUF9TVEFUSUNfQ09OU1RSVUNU
T1JTX09OX01TVkMgMQorI2Vsc2UKKyNkZWZpbmUgU0tJUF9TVEFUSUNfQ09OU1RSVUNUT1JTX09O
X0dDQyAxCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBQTEFURk9STShXSU5fQ0FJ
Uk8pCisjdW5kZWYgVVNFX0NHCisjZGVmaW5lIFVTRV9DQUlSTyAxCisjZGVmaW5lIFVTRV9DVVJM
IDEKKyNpZm5kZWYgX1dJTlNPQ0tBUElfCisjZGVmaW5lIF9XSU5TT0NLQVBJXyAvLyBQcmV2ZW50
IGluY2x1c2lvbiBvZiB3aW5zb2NrLmggaW4gd2luZG93cy5oCisjZW5kaWYKKyNlbGlmICFVU0Uo
V0lOR0RJKQorI2RlZmluZSBVU0VfQ0cgMQorI3VuZGVmIFVTRV9DQUlSTworI3VuZGVmIFVTRV9D
VVJMCisjZW5kaWYKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorI2RlZmluZSBVU0VfTkVX
X1RIRU1FIDEKKyNlbmRpZgorCisjaWYgVVNFKENHKQorI2lmbmRlZiBDR0ZMT0FUX0RFRklORUQK
KyNpZiAoZGVmaW5lZChfX0xQNjRfXykgJiYgX19MUDY0X18pIHx8IChkZWZpbmVkKF9feDg2XzY0
X18pICYmIF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKF9fYW1kNjRf
XykKK3R5cGVkZWYgZG91YmxlIENHRmxvYXQ7CisjZWxzZQordHlwZWRlZiBmbG9hdCBDR0Zsb2F0
OworI2VuZGlmCisjZGVmaW5lIENHRkxPQVRfREVGSU5FRCAxCisjZW5kaWYKKyNlbmRpZiAvKiBV
U0UoQ0cpICovCisKKyNpZiBQTEFURk9STShJT1MpCisjZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9S
X1BMQVRGT1JNIHdrR2V0UGxhdGZvcm1OYW1lRm9yTmF2aWdhdG9yKCk7CisjZGVmaW5lIFdFQkNP
UkVfTkFWSUdBVE9SX1ZFTkRPUiB3a0dldFZlbmRvck5hbWVGb3JOYXZpZ2F0b3IoKTsKKyNlbmRp
ZgorCisvLyBGSVhNRTogTW92ZSB0aGlzIHRvIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5o
LCB3aGljaCBpcyB3aGVyZSB3ZSBkZWZpbmUgVVNFX0FWRk9VTkRBVElPTiBvbiB0aGUgTWFjLgor
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MzM0CisjaWYgUExB
VEZPUk0oV0lOKSAmJiBVU0UoQ0cpICYmIEhBVkUoQVZDRikKKyNkZWZpbmUgVVNFX0FWRk9VTkRB
VElPTiAxCisKKyNpZiBIQVZFKEFWQ0ZfTEVHSUJMRV9PVVRQVVQpCisjZGVmaW5lIFVTRV9BVkZP
VU5EQVRJT04gMQorI2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JP
VVAgMQorI2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUIDEK
KyNkZWZpbmUgSEFWRV9NRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSyAxCisjZW5kaWYKKwor
I2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9ncmFwaGljcy9hdmZvdW5k
YXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NjU5ODQwNjg5ZTRhYmI1MjIwZTViZGQ4MDUyM2Q3NDAyZjRhY2UyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZv
dW5kYXRpb24uY3BwCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgiCisKKyNpZiBVU0UoQVZGT1VOREFUSU9OKQorCisjaW5j
bHVkZSAiQ29yZU1lZGlhU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFBBTCB7CisKK3N0YXRpYyBi
b29sIENNVGltZUhhc0ZsYWdzKGNvbnN0IENNVGltZSYgY21UaW1lLCB1aW50MzJfdCBmbGFncykK
K3sKKyAgICByZXR1cm4gKGNtVGltZS5mbGFncyAmIGZsYWdzKSA9PSBmbGFnczsKK30KKworTWVk
aWFUaW1lIHRvTWVkaWFUaW1lKGNvbnN0IENNVGltZSYgY21UaW1lKQoreworICAgIHVpbnQzMl90
IGZsYWdzID0gMDsKKyAgICBpZiAoQ01UaW1lSGFzRmxhZ3MoY21UaW1lLCBrQ01UaW1lRmxhZ3Nf
VmFsaWQpKQorICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6OlZhbGlkOworICAgIGlmIChDTVRp
bWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19IYXNC
ZWVuUm91bmRlZCkpCisgICAgICAgIGZsYWdzIHw9IE1lZGlhVGltZTo6SGFzQmVlblJvdW5kZWQ7
CisgICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NN
VGltZUZsYWdzX1Bvc2l0aXZlSW5maW5pdHkpKQorICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6
OlBvc2l0aXZlSW5maW5pdGU7CisgICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGlt
ZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX05lZ2F0aXZlSW5maW5pdHkpKQorICAgICAgICBm
bGFncyB8PSBNZWRpYVRpbWU6Ok5lZ2F0aXZlSW5maW5pdGU7CisgICAgaWYgKENNVGltZUhhc0Zs
YWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkIHwga0NNVGltZUZsYWdzX0luZGVmaW5pdGUp
KQorICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6OkluZGVmaW5pdGU7CisKKyAgICByZXR1cm4g
TWVkaWFUaW1lKGNtVGltZS52YWx1ZSwgY21UaW1lLnRpbWVzY2FsZSwgZmxhZ3MpOworfQorCitD
TVRpbWUgdG9DTVRpbWUoY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUpCit7CisgICAgQ01UaW1l
IHRpbWU7CisKKyAgICBpZiAobWVkaWFUaW1lLmhhc0RvdWJsZVZhbHVlKCkpCisgICAgICAgIHRp
bWUgPSBDTVRpbWVNYWtlV2l0aFNlY29uZHMobWVkaWFUaW1lLnRvRG91YmxlKCksIG1lZGlhVGlt
ZS50aW1lU2NhbGUoKSk7CisgICAgZWxzZQorICAgICAgICB0aW1lID0gQ01UaW1lTWFrZShtZWRp
YVRpbWUudGltZVZhbHVlKCksIG1lZGlhVGltZS50aW1lU2NhbGUoKSk7CisKKyAgICBpZiAobWVk
aWFUaW1lLmlzVmFsaWQoKSkKKyAgICAgICAgdGltZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfVmFs
aWQ7CisgICAgaWYgKG1lZGlhVGltZS5oYXNCZWVuUm91bmRlZCgpKQorICAgICAgICB0aW1lLmZs
YWdzIHw9IGtDTVRpbWVGbGFnc19IYXNCZWVuUm91bmRlZDsKKyAgICBpZiAobWVkaWFUaW1lLmlz
UG9zaXRpdmVJbmZpbml0ZSgpKQorICAgICAgICB0aW1lLmZsYWdzIHw9IGtDTVRpbWVGbGFnc19Q
b3NpdGl2ZUluZmluaXR5OworICAgIGlmIChtZWRpYVRpbWUuaXNOZWdhdGl2ZUluZmluaXRlKCkp
CisgICAgICAgIHRpbWUuZmxhZ3MgfD0ga0NNVGltZUZsYWdzX05lZ2F0aXZlSW5maW5pdHk7CisK
KyAgICByZXR1cm4gdGltZTsKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91
bmRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMmM5NWQwMDJhZjM4MmY3N2Q4NzcwZjdlMjY4ZTA1OTAw
NzIzMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYVRp
bWVBVkZvdW5kYXRpb25faAorI2RlZmluZSBNZWRpYVRpbWVBVkZvdW5kYXRpb25faAorCisjaWYg
VVNFKEFWRk9VTkRBVElPTikKKworI2luY2x1ZGUgPENvcmVNZWRpYS9DTVRpbWUuaD4KKyNpbmNs
dWRlIDx3dGYvTWVkaWFUaW1lLmg+CisKK25hbWVzcGFjZSBQQUwgeworCitDTVRpbWUgdG9DTVRp
bWUoY29uc3QgTWVkaWFUaW1lJik7CitNZWRpYVRpbWUgdG9NZWRpYVRpbWUoY29uc3QgQ01UaW1l
Jik7CisKK30KKwordXNpbmcgUEFMOjp0b0NNVGltZTsKK3VzaW5nIFBBTDo6dG9NZWRpYVRpbWU7
CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9tYWMv
UGxhdGZvcm1DbG9ja0NBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9tYWMvUGxhdGZvcm1DbG9j
a0NBLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MGFlYzQ4OWIzYWU1MTI1Y2U0MWUyYjc5NzE3NGQ4MWUxMzc3
M2NmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML21hYy9QbGF0Zm9ybUNs
b2NrQ0EuY3BwCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShDT1JFQVVE
SU8pCisKKyNpbmNsdWRlICJQbGF0Zm9ybUNsb2NrQ0EuaCIKKworI2luY2x1ZGUgPEF1ZGlvVG9v
bGJveC9Db3JlQXVkaW9DbG9jay5oPgorI2luY2x1ZGUgPENvcmVBdWRpby9BdWRpb0hhcmR3YXJl
Lmg+CisKK25hbWVzcGFjZSBQQUwgeworCitQbGF0Zm9ybUNsb2NrQ0E6OlBsYXRmb3JtQ2xvY2tD
QSgpCisgICAgOiBtX2Nsb2NrKDApCisgICAgLCBtX3J1bm5pbmcoZmFsc2UpCit7CisgICAgQ0FD
bG9ja05ldygwLCAmbV9jbG9jayk7CisgICAgVUludDMyIHRpbWViYXNlID0ga0NBQ2xvY2tUaW1l
YmFzZV9BdWRpb0RldmljZTsKKyAgICBVSW50MzIgdGltZWJhc2VTaXplID0gc2l6ZW9mKHRpbWVi
YXNlKTsKKyAgICBDQUNsb2NrU2V0UHJvcGVydHkobV9jbG9jaywga0NBQ2xvY2tQcm9wZXJ0eV9J
bnRlcm5hbFRpbWViYXNlLCB0aW1lYmFzZVNpemUsICZ0aW1lYmFzZSk7CisKKyAgICBBdWRpb09i
amVjdElEIGRlZmF1bHRBdWRpb091dHB1dCA9IDA7CisgICAgVUludDMyIGRlZmF1bHRBdWRpb091
dHB1dFNpemUgPSBzaXplb2YoZGVmYXVsdEF1ZGlvT3V0cHV0KTsKKworICAgIEF1ZGlvT2JqZWN0
UHJvcGVydHlBZGRyZXNzIGFkZHJlc3M7CisgICAgYWRkcmVzcy5tU2VsZWN0b3IgPSBrQXVkaW9I
YXJkd2FyZVByb3BlcnR5RGVmYXVsdE91dHB1dERldmljZTsKKyAgICBhZGRyZXNzLm1TY29wZSAg
ICA9IGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWw7CisgICAgYWRkcmVzcy5tRWxlbWVu
dCAgPSBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXI7CisKKyAgICBBdWRpb09iamVj
dEdldFByb3BlcnR5RGF0YShrQXVkaW9PYmplY3RTeXN0ZW1PYmplY3QsICZhZGRyZXNzLCAwLCAw
LCAmZGVmYXVsdEF1ZGlvT3V0cHV0U2l6ZSwgJmRlZmF1bHRBdWRpb091dHB1dCk7CisgICAgQ0FD
bG9ja1NldFByb3BlcnR5KG1fY2xvY2ssIGtDQUNsb2NrUHJvcGVydHlfVGltZWJhc2VTb3VyY2Us
IGRlZmF1bHRBdWRpb091dHB1dFNpemUsICZkZWZhdWx0QXVkaW9PdXRwdXQpOworfQorCitQbGF0
Zm9ybUNsb2NrQ0E6On5QbGF0Zm9ybUNsb2NrQ0EoKQoreworICAgIENBQ2xvY2tEaXNwb3NlKG1f
Y2xvY2spOworfQorCit2b2lkIFBsYXRmb3JtQ2xvY2tDQTo6c2V0Q3VycmVudFRpbWUoZG91Ymxl
IHRpbWUpCit7CisgICAgaWYgKG1fcnVubmluZykKKyAgICAgICAgQ0FDbG9ja1N0b3AobV9jbG9j
ayk7CisgICAgQ0FDbG9ja1RpbWUgY2FUaW1lOworICAgIGNhVGltZS5mb3JtYXQgPSBrQ0FDbG9j
a1RpbWVGb3JtYXRfU2Vjb25kczsKKyAgICBjYVRpbWUudGltZS5zZWNvbmRzID0gdGltZTsKKyAg
ICBDQUNsb2NrU2V0Q3VycmVudFRpbWUobV9jbG9jaywgJmNhVGltZSk7CisgICAgaWYgKG1fcnVu
bmluZykKKyAgICAgICAgQ0FDbG9ja1N0YXJ0KG1fY2xvY2spOworfQorCitkb3VibGUgUGxhdGZv
cm1DbG9ja0NBOjpjdXJyZW50VGltZSgpIGNvbnN0Cit7CisgICAgQ0FDbG9ja1RpbWUgY2FUaW1l
OworCisgICAgLy8gQ0FDbG9jayBkb2VzIG5vdCByZXR1cm4gdGhlIGNvcnJlY3QgY3VycmVudCB0
aW1lIHdoZW4gc3RvcHBlZC4gSW5zdGVhZCwgcXVlcnkgZm9yCisgICAgLy8gd2hhdCBpcyB0aGUg
c3RhcnQgdGltZSwgaS5lLiB3aGF0IHRoZSBjdXJyZW50IHRpbWUgd2lsbCBiZSB3aGVuIHN0YXJ0
ZWQuCisgICAgaWYgKG1fcnVubmluZykgeworICAgICAgICBpZiAoQ0FDbG9ja0dldEN1cnJlbnRU
aW1lKG1fY2xvY2ssIGtDQUNsb2NrVGltZUZvcm1hdF9TZWNvbmRzLCAmY2FUaW1lKSA9PSBub0Vy
cikKKyAgICAgICAgICAgIHJldHVybiBjYVRpbWUudGltZS5zZWNvbmRzOworICAgIH0gZWxzZSB7
CisgICAgICAgIGlmIChDQUNsb2NrR2V0U3RhcnRUaW1lKG1fY2xvY2ssIGtDQUNsb2NrVGltZUZv
cm1hdF9TZWNvbmRzLCAmY2FUaW1lKSA9PSBub0VycikKKyAgICAgICAgICAgIHJldHVybiBjYVRp
bWUudGltZS5zZWNvbmRzOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBQbGF0Zm9y
bUNsb2NrQ0E6OnNldFBsYXlSYXRlKGRvdWJsZSByYXRlKQoreworICAgIENBQ2xvY2tTZXRQbGF5
UmF0ZShtX2Nsb2NrLCByYXRlKTsKK30KKworZG91YmxlIFBsYXRmb3JtQ2xvY2tDQTo6UGxhdGZv
cm1DbG9ja0NBOjpwbGF5UmF0ZSgpIGNvbnN0Cit7CisgICAgZG91YmxlIHJhdGUgPSAwOworICAg
IGlmIChDQUNsb2NrR2V0UGxheVJhdGUobV9jbG9jaywgJnJhdGUpID09IG5vRXJyKQorICAgICAg
ICByZXR1cm4gcmF0ZTsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBQbGF0Zm9ybUNsb2NrQ0E6
OnN0YXJ0KCkKK3sKKyAgICBpZiAobV9ydW5uaW5nKQorICAgICAgICByZXR1cm47CisgICAgbV9y
dW5uaW5nID0gdHJ1ZTsKKyAgICBDQUNsb2NrU3RhcnQobV9jbG9jayk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1DbG9ja0NBOjpzdG9wKCkKK3sKKyAgICBpZiAoIW1fcnVubmluZykKKyAgICAgICAgcmV0
dXJuOworICAgIG1fcnVubmluZyA9IGZhbHNlOworICAgIENBQ2xvY2tTdG9wKG1fY2xvY2spOwor
fQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML21hYy9QbGF0
Zm9ybUNsb2NrQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9tYWMvUGxhdGZvcm1DbG9ja0NBLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODdkM2I4NjEwYWU4ZDUwOTQxZWM5NWEzOTUzOTliMjI4ZWM1YzY4ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9tYWMvUGxhdGZvcm1DbG9ja0NBLmgK
QEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFBsYXRmb3JtQ2xvY2tDQV9oCisjZGVmaW5lIFBsYXRmb3JtQ2xvY2tD
QV9oCisKKyNpZiBVU0UoQ09SRUFVRElPKQorCisjaW5jbHVkZSAiQ2xvY2suaCIKKwordHlwZWRl
ZiBzdHJ1Y3QgT3BhcXVlQ0FDbG9jayAqQ0FDbG9ja1JlZjsKKworbmFtZXNwYWNlIFBBTCB7CisK
K2NsYXNzIFBsYXRmb3JtQ2xvY2tDQSBmaW5hbCA6IHB1YmxpYyBDbG9jayB7CitwdWJsaWM6Cisg
ICAgUGxhdGZvcm1DbG9ja0NBKCk7CisgICAgdmlydHVhbCB+UGxhdGZvcm1DbG9ja0NBKCk7CisK
K3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBkb3VibGUgY3VycmVudFRpbWUoKSBjb25zdCBvdmVycmlkZTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5UmF0ZShkb3VibGUpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgZG91YmxlIHBsYXlSYXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIHZvaWQg
c3RhcnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3J1bm5p
bmc7IH0KKworICAgIENBQ2xvY2tSZWYgbV9jbG9jazsKKyAgICBib29sIG1fcnVubmluZzsKK307
CisKK30KKwordXNpbmcgUEFMOjpQbGF0Zm9ybUNsb2NrQ0E7CisKKyNlbmRpZgorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9tYWMvUGxhdGZvcm1DbG9ja0NNLmggYi9T
b3VyY2UvV2ViQ29yZS9QQUwvbWFjL1BsYXRmb3JtQ2xvY2tDTS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3YTQ1
MTBiYTY1NmZlNGRiYjE4ZjkxOGY5MDBkZmI0NDQzMWJjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvbWFjL1BsYXRmb3JtQ2xvY2tDTS5oCkBAIC0wLDAgKzEsNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQ
bGF0Zm9ybUNsb2NrQ01faAorI2RlZmluZSBQbGF0Zm9ybUNsb2NrQ01faAorCisjaWYgVVNFKENP
UkVNRURJQSkKKworI2luY2x1ZGUgIkNsb2NrLmgiCisjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5o
PgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ01U
aW1lYmFzZSogQ01UaW1lYmFzZVJlZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNNQ2xvY2sqIENN
Q2xvY2tSZWY7CisKK25hbWVzcGFjZSBQQUwgeworCitjbGFzcyBQbGF0Zm9ybUNsb2NrQ00gZmlu
YWwgOiBwdWJsaWMgQ2xvY2sgeworcHVibGljOgorICAgIFBsYXRmb3JtQ2xvY2tDTSgpOworICAg
IFBsYXRmb3JtQ2xvY2tDTShDTUNsb2NrUmVmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJy
ZW50VGltZShkb3VibGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldEN1cnJlbnRNZWRpYVRpbWUoY29uc3Qg
TWVkaWFUaW1lJik7CisgICAgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdDsKKwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5UmF0ZShkb3VibGUpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgZG91YmxlIHBsYXlSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yYXRlOyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cCgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3J1bm5pbmc7IH0KKworICAgIENNVGltZWJhc2VSZWYgdGltZWJhc2UoKSBj
b25zdCB7IHJldHVybiBtX3RpbWViYXNlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBp
bml0aWFsaXplV2l0aFRpbWluZ1NvdXJjZShDTUNsb2NrUmVmKTsKKworICAgIFJldGFpblB0cjxD
TVRpbWViYXNlUmVmPiBtX3RpbWViYXNlOworICAgIGRvdWJsZSBtX3JhdGU7CisgICAgYm9vbCBt
X3J1bm5pbmc7Cit9OworCit1c2luZyBQQUw6OlBsYXRmb3JtQ2xvY2tDTTsKKworfQorCisjZW5k
aWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvbWFjL1BsYXRmb3Jt
Q2xvY2tDTS5tbSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9tYWMvUGxhdGZvcm1DbG9ja0NNLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI0YWUyMjczNzY4N2VjZWQ5ZTM1YjRjOTNkOTdjYjg3ZmUxMjUwOTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvbWFjL1BsYXRmb3JtQ2xvY2tDTS5tbQpA
QCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFVTRShDT1JFTUVESUEpCisK
KyNpbXBvcnQgIlBsYXRmb3JtQ2xvY2tDTS5oIgorCisjaW1wb3J0ICJNZWRpYVRpbWVBVkZvdW5k
YXRpb24uaCIKKworI2ltcG9ydCAiQ29yZU1lZGlhU29mdExpbmsuaCIKKworbmFtZXNwYWNlIFBB
TCB7CisKKy8vIEEgZGVmYXVsdCB0aW1lIHNjYWxlIG9mIDEwMDAgYWxsb3dzIG1pbGxpLXNlY29u
ZCBDTVRpbWUgcHJlY2lzaW9uIHdpdGhvdXQgc2NhbGluZyB0aGUgdGltZWJhc2UuCitzdGF0aWMg
Y29uc3QgaW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDsKKworUGxhdGZvcm1DbG9ja0NN
OjpQbGF0Zm9ybUNsb2NrQ00oKQorICAgIDogbV90aW1lYmFzZSgwKQorICAgICwgbV9yYXRlKDEp
CisgICAgLCBtX3J1bm5pbmcoZmFsc2UpCit7CisgICAgQ01DbG9ja1JlZiByYXdDbG9ja1B0ciA9
IDA7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIENNQXVkaW9DbG9ja0NyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAmcmF3Q2xvY2tQdHIpOworI2Vsc2UKKyAgICBDTUF1ZGlvRGV2aWNlQ2xvY2tD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgJnJhd0Nsb2NrUHRyKTsKKyNlbmRpZgor
ICAgIFJldGFpblB0cjxDTUNsb2NrUmVmPiBjbG9jayA9IGFkb3B0Q0YocmF3Q2xvY2tQdHIpOwor
ICAgIGluaXRpYWxpemVXaXRoVGltaW5nU291cmNlKGNsb2NrLmdldCgpKTsKK30KKworUGxhdGZv
cm1DbG9ja0NNOjpQbGF0Zm9ybUNsb2NrQ00oQ01DbG9ja1JlZiBjbG9jaykKKyAgICA6IG1fdGlt
ZWJhc2UoMCkKKyAgICAsIG1fcnVubmluZyhmYWxzZSkKK3sKKyAgICBpbml0aWFsaXplV2l0aFRp
bWluZ1NvdXJjZShjbG9jayk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DbG9ja0NNOjppbml0aWFsaXpl
V2l0aFRpbWluZ1NvdXJjZShDTUNsb2NrUmVmIGNsb2NrKQoreworICAgIENNVGltZWJhc2VSZWYg
cmF3VGltZWJhc2VQdHIgPSAwOworICAgIENNVGltZWJhc2VDcmVhdGVXaXRoTWFzdGVyQ2xvY2so
a0NGQWxsb2NhdG9yRGVmYXVsdCwgY2xvY2ssICZyYXdUaW1lYmFzZVB0cik7CisgICAgbV90aW1l
YmFzZSA9IGFkb3B0Q0YocmF3VGltZWJhc2VQdHIpOworfQorCit2b2lkIFBsYXRmb3JtQ2xvY2tD
TTo6c2V0Q3VycmVudFRpbWUoZG91YmxlIHRpbWUpCit7CisgICAgQ01UaW1lIGNtVGltZSA9IENN
VGltZU1ha2VXaXRoU2Vjb25kcyh0aW1lLCBEZWZhdWx0VGltZVNjYWxlKTsKKyAgICBDTVRpbWVi
YXNlU2V0VGltZShtX3RpbWViYXNlLmdldCgpLCBjbVRpbWUpOworfQorCitkb3VibGUgUGxhdGZv
cm1DbG9ja0NNOjpjdXJyZW50VGltZSgpIGNvbnN0Cit7CisgICAgQ01UaW1lIGNtVGltZSA9IENN
VGltZWJhc2VHZXRUaW1lKG1fdGltZWJhc2UuZ2V0KCkpOworICAgIHJldHVybiBDTVRpbWVHZXRT
ZWNvbmRzKGNtVGltZSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DbG9ja0NNOjpzZXRDdXJyZW50TWVk
aWFUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKK3sKKyAgICBDTVRpbWViYXNlU2V0VGltZSht
X3RpbWViYXNlLmdldCgpLCB0b0NNVGltZSh0aW1lKSk7Cit9CisKK01lZGlhVGltZSBQbGF0Zm9y
bUNsb2NrQ006OmN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdAoreworICAgIHJldHVybiB0b01lZGlh
VGltZShDTVRpbWViYXNlR2V0VGltZShtX3RpbWViYXNlLmdldCgpKSk7Cit9CisKK3ZvaWQgUGxh
dGZvcm1DbG9ja0NNOjpzZXRQbGF5UmF0ZShkb3VibGUgcmF0ZSkKK3sKKyAgICBpZiAobV9yYXRl
ID09IHJhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmF0ZSA9IHJhdGU7CisgICAgaWYg
KG1fcnVubmluZykKKyAgICAgICAgQ01UaW1lYmFzZVNldFJhdGUobV90aW1lYmFzZS5nZXQoKSwg
cmF0ZSk7Cit9CisKK3ZvaWQgUGxhdGZvcm1DbG9ja0NNOjpzdGFydCgpCit7CisgICAgaWYgKG1f
cnVubmluZykKKyAgICAgICAgcmV0dXJuOworICAgIG1fcnVubmluZyA9IHRydWU7CisgICAgQ01U
aW1lYmFzZVNldFJhdGUobV90aW1lYmFzZS5nZXQoKSwgbV9yYXRlKTsKK30KKwordm9pZCBQbGF0
Zm9ybUNsb2NrQ006OnN0b3AoKQoreworICAgIGlmICghbV9ydW5uaW5nKQorICAgICAgICByZXR1
cm47CisgICAgbV9ydW5uaW5nID0gZmFsc2U7CisgICAgQ01UaW1lYmFzZVNldFJhdGUobV90aW1l
YmFzZS5nZXQoKSwgMCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvbWFjL1NvZnRMaW5raW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvbWFjL1NvZnRM
aW5raW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmRmYjg2MmQxNDA2MTQwNmJlZmFjNGU1NGRjODc1NWUxOWUy
NTU4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9tYWMvU29mdExpbmtp
bmcuaApAQCAtMCwwICsxLDQ0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwg
MjAxMS0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgU29mdExpbmtpbmdfaAorI2RlZmluZSBTb2Z0TGlua2luZ19oCisKKyNpbXBvcnQgPGRs
ZmNuLmg+CisjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisKKyNwcmFnbWEgbWFyayAtIFNvZnQtbGluayBtYWNyb3MgZm9yIHVzZSB3aXRoaW4gYSBz
aW5nbGUgc291cmNlIGZpbGUKKworI2RlZmluZSBTT0ZUX0xJTktfTElCUkFSWShsaWIpIFwKKyAg
ICBzdGF0aWMgdm9pZCogbGliIyNMaWJyYXJ5KCkgXAorICAgIHsgXAorICAgICAgICBzdGF0aWMg
dm9pZCogZHlsaWIgPSBkbG9wZW4oIi91c3IvbGliLyIgI2xpYiAiLmR5bGliIiwgUlRMRF9OT1cp
OyBcCisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHlsaWIsICIlcyIsIGRsZXJyb3IoKSk7
IFwKKyAgICAgICAgcmV0dXJuIGR5bGliOyBcCisgICAgfQorCisjZGVmaW5lIFNPRlRfTElOS19G
UkFNRVdPUksoZnJhbWV3b3JrKSBcCisgICAgc3RhdGljIHZvaWQqIGZyYW1ld29yayMjTGlicmFy
eSgpIFwKKyAgICB7IFwKKyAgICAgICAgc3RhdGljIHZvaWQqIGZyYW1ld29ya0xpYnJhcnkgPSBk
bG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzLyIgI2ZyYW1ld29yayAiLmZyYW1ld29y
ay8iICNmcmFtZXdvcmssIFJUTERfTk9XKTsgXAorICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGZyYW1ld29ya0xpYnJhcnksICIlcyIsIGRsZXJyb3IoKSk7IFwKKyAgICAgICAgcmV0dXJuIGZy
YW1ld29ya0xpYnJhcnk7IFwKKyAgICB9CisKKyNkZWZpbmUgU09GVF9MSU5LX1BSSVZBVEVfRlJB
TUVXT1JLKGZyYW1ld29yaykgXAorICAgIHN0YXRpYyB2b2lkKiBmcmFtZXdvcmsjI0xpYnJhcnko
KSBcCisgICAgeyBcCisgICAgICAgIHN0YXRpYyB2b2lkKiBmcmFtZXdvcmtMaWJyYXJ5ID0gMDsg
XAorICAgICAgICBpZiAoIWZyYW1ld29ya0xpYnJhcnkpIFwKKyAgICAgICAgICAgIGZyYW1ld29y
a0xpYnJhcnkgPSBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy8iICNm
cmFtZXdvcmsgIi5mcmFtZXdvcmsvIiAjZnJhbWV3b3JrLCBSVExEX05PVyk7IFwKKyAgICAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShmcmFtZXdvcmtMaWJyYXJ5LCAiJXMiLCBkbGVycm9yKCkpOyBc
CisgICAgICAgIHJldHVybiBmcmFtZXdvcmtMaWJyYXJ5OyBcCisgICAgfQorCisjZGVmaW5lIFNP
RlRfTElOS19GUkFNRVdPUktfT1BUSU9OQUwoZnJhbWV3b3JrKSBcCisgICAgc3RhdGljIHZvaWQq
IGZyYW1ld29yayMjTGlicmFyeSgpIFwKKyAgICB7IFwKKyAgICAgICAgc3RhdGljIHZvaWQqIGZy
YW1ld29ya0xpYnJhcnkgPSBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzLyIgI2Zy
YW1ld29yayAiLmZyYW1ld29yay8iICNmcmFtZXdvcmssIFJUTERfTk9XKTsgXAorICAgICAgICBy
ZXR1cm4gZnJhbWV3b3JrTGlicmFyeTsgXAorICAgIH0KKworI2RlZmluZSBTT0ZUX0xJTktfUFJJ
VkFURV9GUkFNRVdPUktfT1BUSU9OQUwoZnJhbWV3b3JrKSBcCisgICAgc3RhdGljIHZvaWQqIGZy
YW1ld29yayMjTGlicmFyeSgpIFwKKyAgICB7IFwKKyAgICAgICAgc3RhdGljIHZvaWQqIGZyYW1l
d29ya0xpYnJhcnkgPSBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy8i
ICNmcmFtZXdvcmsgIi5mcmFtZXdvcmsvIiAjZnJhbWV3b3JrLCBSVExEX05PVyk7IFwKKyAgICAg
ICAgcmV0dXJuIGZyYW1ld29ya0xpYnJhcnk7IFwKKyAgICB9CisKKyNkZWZpbmUgU09GVF9MSU5L
X1NUQUdFRF9GUkFNRVdPUksoZnJhbWV3b3JrLCB1bnN0YWdlZExvY2F0aW9uLCB2ZXJzaW9uKSBc
CisgICAgc3RhdGljIHZvaWQqIGZyYW1ld29yayMjTGlicmFyeSgpIFwKKyAgICB7IFwKKyAgICAg
ICAgc3RhdGljIHZvaWQqIGZyYW1ld29ya0xpYnJhcnkgPSBeeyBcCisgICAgICAgICAgICB2b2lk
KiByZXN1bHQgPSBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS8iICN1bnN0YWdlZExvY2F0aW9uICIv
IiAjZnJhbWV3b3JrICIuZnJhbWV3b3JrL1ZlcnNpb25zLyIgI3ZlcnNpb24gIi8iICNmcmFtZXdv
cmssIFJUTERfTEFaWSk7IFwKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSBcCisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gZGxvcGVuKCIvU3lzdGVtL0xpYnJhcnkvU3RhZ2VkRnJhbWV3b3Jrcy9T
YWZhcmkvIiAjZnJhbWV3b3JrICIuZnJhbWV3b3JrL1ZlcnNpb25zLyIgI3ZlcnNpb24gIi8iICNm
cmFtZXdvcmssIFJUTERfTEFaWSk7IFwKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7IFwKKyAg
ICAgICAgfSgpOyBcCisgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZnJhbWV3b3JrTGlicmFy
eSwgIiVzIiwgZGxlcnJvcigpKTsgXAorICAgICAgICByZXR1cm4gZnJhbWV3b3JrTGlicmFyeTsg
XAorICAgIH0KKworI2RlZmluZSBTT0ZUX0xJTktfRlJBTUVXT1JLX0lOX1VNQlJFTExBKHVtYnJl
bGxhLCBmcmFtZXdvcmspIFwKKyAgICBzdGF0aWMgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KCkg
XAorICAgIHsgXAorICAgICAgICBzdGF0aWMgdm9pZCogZnJhbWV3b3JrTGlicmFyeSA9IGRsb3Bl
bigiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvIiAjdW1icmVsbGEgIi5mcmFtZXdvcmsvRnJh
bWV3b3Jrcy8iICNmcmFtZXdvcmsgIi5mcmFtZXdvcmsvIiAjZnJhbWV3b3JrLCBSVExEX05PVyk7
IFwKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShmcmFtZXdvcmtMaWJyYXJ5LCAiJXMiLCBk
bGVycm9yKCkpOyBcCisgICAgICAgIHJldHVybiBmcmFtZXdvcmtMaWJyYXJ5OyBcCisgICAgfQor
CisjZGVmaW5lIFNPRlRfTElOSyhmcmFtZXdvcmssIGZ1bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwg
cGFyYW1ldGVyRGVjbGFyYXRpb25zLCBwYXJhbWV0ZXJOYW1lcykgXAorICAgIFdURl9FWFRFUk5f
Q19CRUdJTiBcCisgICAgcmVzdWx0VHlwZSBmdW5jdGlvbk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRp
b25zOyBcCisgICAgV1RGX0VYVEVSTl9DX0VORCBcCisgICAgc3RhdGljIHJlc3VsdFR5cGUgaW5p
dCMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9uczsgXAorICAgIHN0YXRpYyByZXN1
bHRUeXBlICgqc29mdExpbmsjI2Z1bmN0aW9uTmFtZSkgcGFyYW1ldGVyRGVjbGFyYXRpb25zID0g
aW5pdCMjZnVuY3Rpb25OYW1lOyBcCisgICAgXAorICAgIHN0YXRpYyByZXN1bHRUeXBlIGluaXQj
I2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMgXAorICAgIHsgXAorICAgICAgICBz
b2Z0TGluayMjZnVuY3Rpb25OYW1lID0gKHJlc3VsdFR5cGUgKCopIHBhcmFtZXRlckRlY2xhcmF0
aW9ucykgZGxzeW0oZnJhbWV3b3JrIyNMaWJyYXJ5KCksICNmdW5jdGlvbk5hbWUpOyBcCisgICAg
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoc29mdExpbmsjI2Z1bmN0aW9uTmFtZSwgIiVzIiwgZGxl
cnJvcigpKTsgXAorICAgICAgICByZXR1cm4gc29mdExpbmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0
ZXJOYW1lczsgXAorICAgIH0gXAorICAgIFwKKyAgICBpbmxpbmUgcmVzdWx0VHlwZSBmdW5jdGlv
bk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIHNv
ZnRMaW5rIyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyTmFtZXM7IFwKKyAgICB9CisKKyNkZWZpbmUg
U09GVF9MSU5LX01BWV9GQUlMKGZyYW1ld29yaywgZnVuY3Rpb25OYW1lLCByZXN1bHRUeXBlLCBw
YXJhbWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVzKSBcCisgICAgV1RGX0VYVEVSTl9D
X0JFR0lOIFwKKyAgICByZXN1bHRUeXBlIGZ1bmN0aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlv
bnM7IFwKKyAgICBXVEZfRVhURVJOX0NfRU5EIFwKKyAgICBzdGF0aWMgcmVzdWx0VHlwZSAoKnNv
ZnRMaW5rIyNmdW5jdGlvbk5hbWUpIHBhcmFtZXRlckRlY2xhcmF0aW9ucyA9IDA7IFwKKyAgICBc
CisgICAgc3RhdGljIGJvb2wgaW5pdCMjZnVuY3Rpb25OYW1lKCkgXAorICAgIHsgXAorICAgICAg
ICBBU1NFUlQoIXNvZnRMaW5rIyNmdW5jdGlvbk5hbWUpOyBcCisgICAgICAgIHNvZnRMaW5rIyNm
dW5jdGlvbk5hbWUgPSAocmVzdWx0VHlwZSAoKikgcGFyYW1ldGVyRGVjbGFyYXRpb25zKSBkbHN5
bShmcmFtZXdvcmsjI0xpYnJhcnkoKSwgI2Z1bmN0aW9uTmFtZSk7IFwKKyAgICAgICAgcmV0dXJu
ICEhc29mdExpbmsjI2Z1bmN0aW9uTmFtZTsgXAorICAgIH0gXAorICAgIFwKKyAgICBzdGF0aWMg
Ym9vbCBjYW5Mb2FkIyNmdW5jdGlvbk5hbWUoKSBcCisgICAgeyBcCisgICAgICAgIHN0YXRpYyBi
b29sIGxvYWRlZCA9IGluaXQjI2Z1bmN0aW9uTmFtZSgpOyBcCisgICAgICAgIHJldHVybiBsb2Fk
ZWQ7IFwKKyAgICB9IFwKKyAgICBcCisgICAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlk
ZGVuIikpKSByZXN1bHRUeXBlIGZ1bmN0aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMgXAor
ICAgIHsgXAorICAgICAgICBBU1NFUlQoc29mdExpbmsjI2Z1bmN0aW9uTmFtZSk7IFwKKyAgICAg
ICAgcmV0dXJuIHNvZnRMaW5rIyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyTmFtZXM7IFwKKyAgICB9
CisKKy8qIGNhbGxpbmdDb252ZW50aW9uIGlzIHVudXNlZCBvbiBNYWMgYnV0IGlzIGhlcmUgdG8g
a2VlcCB0aGUgbWFjcm8gcHJvdG90eXBlIHRoZSBzYW1lIGJldHdlZW4gTWFjIGFuZCBXaW5kb3dz
LiAqLworI2RlZmluZSBTT0ZUX0xJTktfT1BUSU9OQUwoZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUs
IHJlc3VsdFR5cGUsIGNhbGxpbmdDb252ZW50aW9uLCBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMpIFwK
KyAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAorICAgIHJlc3VsdFR5cGUgZnVuY3Rpb25OYW1lIHBh
cmFtZXRlckRlY2xhcmF0aW9uczsgXAorICAgIFdURl9FWFRFUk5fQ19FTkQgXAorICAgIHR5cGVk
ZWYgcmVzdWx0VHlwZSAoKmZ1bmN0aW9uTmFtZSMjUHRyVHlwZSkgcGFyYW1ldGVyRGVjbGFyYXRp
b25zOyBcCisgICAgXAorICAgIHN0YXRpYyBmdW5jdGlvbk5hbWUjI1B0clR5cGUgZnVuY3Rpb25O
YW1lIyNQdHIoKSBcCisgICAgeyBcCisgICAgICAgIHN0YXRpYyBmdW5jdGlvbk5hbWUjI1B0clR5
cGUgcHRyID0gcmVpbnRlcnByZXRfY2FzdDxmdW5jdGlvbk5hbWUjI1B0clR5cGU+KGRsc3ltKGZy
YW1ld29yayMjTGlicmFyeSgpLCAjZnVuY3Rpb25OYW1lKSk7IFwKKyAgICAgICAgcmV0dXJuIHB0
cjsgXAorICAgIH0KKworI2RlZmluZSBTT0ZUX0xJTktfQ0xBU1MoZnJhbWV3b3JrLCBjbGFzc05h
bWUpIFwKKyAgICBAY2xhc3MgY2xhc3NOYW1lOyBcCisgICAgc3RhdGljIENsYXNzIGluaXQjI2Ns
YXNzTmFtZSgpOyBcCisgICAgc3RhdGljIENsYXNzICgqZ2V0IyNjbGFzc05hbWUjI0NsYXNzKSgp
ID0gaW5pdCMjY2xhc3NOYW1lOyBcCisgICAgc3RhdGljIENsYXNzIGNsYXNzIyNjbGFzc05hbWU7
IFwKKyAgICBcCisgICAgc3RhdGljIENsYXNzIGNsYXNzTmFtZSMjRnVuY3Rpb24oKSBcCisgICAg
eyBcCisgICAgICAgIHJldHVybiBjbGFzcyMjY2xhc3NOYW1lOyBcCisgICAgfSBcCisgICAgXAor
ICAgIHN0YXRpYyBDbGFzcyBpbml0IyNjbGFzc05hbWUoKSBcCisgICAgeyBcCisgICAgICAgIGZy
YW1ld29yayMjTGlicmFyeSgpOyBcCisgICAgICAgIGNsYXNzIyNjbGFzc05hbWUgPSBvYmpjX2dl
dENsYXNzKCNjbGFzc05hbWUpOyBcCisgICAgICAgIEFTU0VSVChjbGFzcyMjY2xhc3NOYW1lKTsg
XAorICAgICAgICBnZXQjI2NsYXNzTmFtZSMjQ2xhc3MgPSBjbGFzc05hbWUjI0Z1bmN0aW9uOyBc
CisgICAgICAgIHJldHVybiBjbGFzcyMjY2xhc3NOYW1lOyBcCisgICAgfSBcCisgICAgX1ByYWdt
YSgiY2xhbmcgZGlhZ25vc3RpYyBwdXNoIikgXAorICAgIF9QcmFnbWEoImNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCBcIi1XdW51c2VkLWZ1bmN0aW9uXCIiKSBcCisgICAgc3RhdGljIGNsYXNzTmFt
ZSAqYWxsb2MjI2NsYXNzTmFtZSMjSW5zdGFuY2UoKSBcCisgICAgeyBcCisgICAgICAgIHJldHVy
biBbZ2V0IyNjbGFzc05hbWUjI0NsYXNzKCkgYWxsb2NdOyBcCisgICAgfSBcCisgICAgX1ByYWdt
YSgiY2xhbmcgZGlhZ25vc3RpYyBwb3AiKQorCisjZGVmaW5lIFNPRlRfTElOS19DTEFTU19PUFRJ
T05BTChmcmFtZXdvcmssIGNsYXNzTmFtZSkgXAorICAgIEBjbGFzcyBjbGFzc05hbWU7IFwKKyAg
ICBzdGF0aWMgQ2xhc3MgaW5pdCMjY2xhc3NOYW1lKCk7IFwKKyAgICBzdGF0aWMgQ2xhc3MgKCpn
ZXQjI2NsYXNzTmFtZSMjQ2xhc3MpKCkgPSBpbml0IyNjbGFzc05hbWU7IFwKKyAgICBzdGF0aWMg
Q2xhc3MgY2xhc3MjI2NsYXNzTmFtZTsgXAorICAgIFwKKyAgICBzdGF0aWMgQ2xhc3MgY2xhc3NO
YW1lIyNGdW5jdGlvbigpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIGNsYXNzIyNjbGFzc05h
bWU7IFwKKyAgICB9IFwKKyAgICBcCisgICAgc3RhdGljIENsYXNzIGluaXQjI2NsYXNzTmFtZSgp
IFwKKyAgICB7IFwKKyAgICAgICAgZnJhbWV3b3JrIyNMaWJyYXJ5KCk7IFwKKyAgICAgICAgY2xh
c3MjI2NsYXNzTmFtZSA9IG9iamNfZ2V0Q2xhc3MoI2NsYXNzTmFtZSk7IFwKKyAgICAgICAgZ2V0
IyNjbGFzc05hbWUjI0NsYXNzID0gY2xhc3NOYW1lIyNGdW5jdGlvbjsgXAorICAgICAgICByZXR1
cm4gY2xhc3MjI2NsYXNzTmFtZTsgXAorICAgIH0gXAorICAgIF9QcmFnbWEoImNsYW5nIGRpYWdu
b3N0aWMgcHVzaCIpIFwKKyAgICBfUHJhZ21hKCJjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgXCIt
V3VudXNlZC1mdW5jdGlvblwiIikgXAorICAgIHN0YXRpYyBjbGFzc05hbWUgKmFsbG9jIyNjbGFz
c05hbWUjI0luc3RhbmNlKCkgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gW2dldCMjY2xhc3NO
YW1lIyNDbGFzcygpIGFsbG9jXTsgXAorICAgIH0gXAorICAgIF9QcmFnbWEoImNsYW5nIGRpYWdu
b3N0aWMgcG9wIikKKworI2RlZmluZSBTT0ZUX0xJTktfUE9JTlRFUihmcmFtZXdvcmssIG5hbWUs
IHR5cGUpIFwKKyAgICBzdGF0aWMgdHlwZSBpbml0IyNuYW1lKCk7IFwKKyAgICBzdGF0aWMgdHlw
ZSAoKmdldCMjbmFtZSkoKSA9IGluaXQjI25hbWU7IFwKKyAgICBzdGF0aWMgdHlwZSBwb2ludGVy
IyNuYW1lOyBcCisgICAgXAorICAgIHN0YXRpYyB0eXBlIG5hbWUjI0Z1bmN0aW9uKCkgXAorICAg
IHsgXAorICAgICAgICByZXR1cm4gcG9pbnRlciMjbmFtZTsgXAorICAgIH0gXAorICAgIFwKKyAg
ICBzdGF0aWMgdHlwZSBpbml0IyNuYW1lKCkgXAorICAgIHsgXAorICAgICAgICB2b2lkKiogcG9p
bnRlciA9IHN0YXRpY19jYXN0PHZvaWQqKj4oZGxzeW0oZnJhbWV3b3JrIyNMaWJyYXJ5KCksICNu
YW1lKSk7IFwKKyAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwb2ludGVyLCAiJXMiLCBkbGVy
cm9yKCkpOyBcCisgICAgICAgIHBvaW50ZXIjI25hbWUgPSBzdGF0aWNfY2FzdDx0eXBlPigqcG9p
bnRlcik7IFwKKyAgICAgICAgZ2V0IyNuYW1lID0gbmFtZSMjRnVuY3Rpb247IFwKKyAgICAgICAg
cmV0dXJuIHBvaW50ZXIjI25hbWU7IFwKKyAgICB9CisKKyNkZWZpbmUgU09GVF9MSU5LX1BPSU5U
RVJfT1BUSU9OQUwoZnJhbWV3b3JrLCBuYW1lLCB0eXBlKSBcCisgICAgc3RhdGljIHR5cGUgaW5p
dCMjbmFtZSgpOyBcCisgICAgc3RhdGljIHR5cGUgKCpnZXQjI25hbWUpKCkgPSBpbml0IyNuYW1l
OyBcCisgICAgc3RhdGljIHR5cGUgcG9pbnRlciMjbmFtZTsgXAorICAgIFwKKyAgICBzdGF0aWMg
dHlwZSBuYW1lIyNGdW5jdGlvbigpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIHBvaW50ZXIj
I25hbWU7IFwKKyAgICB9IFwKKyAgICBcCisgICAgc3RhdGljIHR5cGUgaW5pdCMjbmFtZSgpIFwK
KyAgICB7IFwKKyAgICAgICAgdm9pZCoqIHBvaW50ZXIgPSBzdGF0aWNfY2FzdDx2b2lkKio+KGRs
c3ltKGZyYW1ld29yayMjTGlicmFyeSgpLCAjbmFtZSkpOyBcCisgICAgICAgIGlmIChwb2ludGVy
KSBcCisgICAgICAgICAgICBwb2ludGVyIyNuYW1lID0gc3RhdGljX2Nhc3Q8dHlwZT4oKnBvaW50
ZXIpOyBcCisgICAgICAgIGdldCMjbmFtZSA9IG5hbWUjI0Z1bmN0aW9uOyBcCisgICAgICAgIHJl
dHVybiBwb2ludGVyIyNuYW1lOyBcCisgICAgfQorCisjZGVmaW5lIFNPRlRfTElOS19DT05TVEFO
VChmcmFtZXdvcmssIG5hbWUsIHR5cGUpIFwKKyAgICBzdGF0aWMgdHlwZSBpbml0IyNuYW1lKCk7
IFwKKyAgICBzdGF0aWMgdHlwZSAoKmdldCMjbmFtZSkoKSA9IGluaXQjI25hbWU7IFwKKyAgICBz
dGF0aWMgdHlwZSBjb25zdGFudCMjbmFtZTsgXAorICAgIFwKKyAgICBzdGF0aWMgdHlwZSBuYW1l
IyNGdW5jdGlvbigpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIGNvbnN0YW50IyNuYW1lOyBc
CisgICAgfSBcCisgICAgXAorICAgIHN0YXRpYyB0eXBlIGluaXQjI25hbWUoKSBcCisgICAgeyBc
CisgICAgICAgIHZvaWQqIGNvbnN0YW50ID0gZGxzeW0oZnJhbWV3b3JrIyNMaWJyYXJ5KCksICNu
YW1lKTsgXAorICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGNvbnN0YW50LCAiJXMiLCBkbGVy
cm9yKCkpOyBcCisgICAgICAgIGNvbnN0YW50IyNuYW1lID0gKnN0YXRpY19jYXN0PHR5cGUqPihj
b25zdGFudCk7IFwKKyAgICAgICAgZ2V0IyNuYW1lID0gbmFtZSMjRnVuY3Rpb247IFwKKyAgICAg
ICAgcmV0dXJuIGNvbnN0YW50IyNuYW1lOyBcCisgICAgfQorCisjZGVmaW5lIFNPRlRfTElOS19D
T05TVEFOVF9NQVlfRkFJTChmcmFtZXdvcmssIG5hbWUsIHR5cGUpIFwKKyAgICBzdGF0aWMgYm9v
bCBpbml0IyNuYW1lKCk7IFwKKyAgICBzdGF0aWMgdHlwZSAoKmdldCMjbmFtZSkoKSA9IDA7IFwK
KyAgICBzdGF0aWMgdHlwZSBjb25zdGFudCMjbmFtZTsgXAorICAgIFwKKyAgICBzdGF0aWMgdHlw
ZSBuYW1lIyNGdW5jdGlvbigpIFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIGNvbnN0YW50IyNu
YW1lOyBcCisgICAgfSBcCisgICAgXAorICAgIHN0YXRpYyBib29sIGNhbkxvYWQjI25hbWUoKSBc
CisgICAgeyBcCisgICAgICAgIHN0YXRpYyBib29sIGxvYWRlZCA9IGluaXQjI25hbWUoKTsgXAor
ICAgICAgICByZXR1cm4gbG9hZGVkOyBcCisgICAgfSBcCisgICAgXAorICAgIHN0YXRpYyBib29s
IGluaXQjI25hbWUoKSBcCisgICAgeyBcCisgICAgICAgIEFTU0VSVCghZ2V0IyNuYW1lKTsgXAor
ICAgICAgICB2b2lkKiBjb25zdGFudCA9IGRsc3ltKGZyYW1ld29yayMjTGlicmFyeSgpLCAjbmFt
ZSk7IFwKKyAgICAgICAgaWYgKCFjb25zdGFudCkgXAorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OyBcCisgICAgICAgIGNvbnN0YW50IyNuYW1lID0gKnN0YXRpY19jYXN0PHR5cGUqPihjb25zdGFu
dCk7IFwKKyAgICAgICAgZ2V0IyNuYW1lID0gbmFtZSMjRnVuY3Rpb247IFwKKyAgICAgICAgcmV0
dXJuIHRydWU7IFwKKyAgICB9CisKKyNwcmFnbWEgbWFyayAtIFNvZnQtbGluayBtYWNyb3MgZm9y
IHNoYXJpbmcgYWNyb3NzIG11bHRpcGxlIHNvdXJjZSBmaWxlcworCisvLyBTZWUgU291cmNlL1dl
YkNvcmUvUEFML2NmL0NvcmVNZWRpYVNvZnRMaW5rLntjcHAsaH0gZm9yIGFuIGV4YW1wbGUgaW1w
bGVtZW50YXRpb24uCisKKyNkZWZpbmUgU09GVF9MSU5LX0ZSQU1FV09SS19GT1JfSEVBREVSKGZ1
bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmspIFwKKyAgICBuYW1lc3BhY2UgZnVuY3Rpb25OYW1l
c3BhY2UgeyBcCisgICAgZXh0ZXJuIHZvaWQqIGZyYW1ld29yayMjTGlicmFyeShib29sIGlzT3B0
aW9uYWwgPSBmYWxzZSk7IFwKKyAgICBib29sIGlzIyNmcmFtZXdvcmsjI0ZyYW1ld29ya0F2YWls
YWJsZSgpOyBcCisgICAgaW5saW5lIGJvb2wgaXMjI2ZyYW1ld29yayMjRnJhbWV3b3JrQXZhaWxh
YmxlKCkgeyBcCisgICAgICAgIHJldHVybiBmcmFtZXdvcmsjI0xpYnJhcnkodHJ1ZSkgIT0gbnVs
bHB0cjsgXAorICAgIH0gXAorICAgIH0gXAorICAgIHVzaW5nIGZ1bmN0aW9uTmFtZXNwYWNlOjpp
cyMjZnJhbWV3b3JrIyNGcmFtZXdvcmtBdmFpbGFibGU7CisKKyNkZWZpbmUgU09GVF9MSU5LX0ZS
QU1FV09SS19GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmspIFwKKyAgICBu
YW1lc3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCisgICAgdm9pZCogZnJhbWV3b3JrIyNMaWJy
YXJ5KGJvb2wgaXNPcHRpb25hbCA9IGZhbHNlKTsgXAorICAgIHZvaWQqIGZyYW1ld29yayMjTGli
cmFyeShib29sIGlzT3B0aW9uYWwpIFwKKyAgICB7IFwKKyAgICAgICAgc3RhdGljIHZvaWQqIGZy
YW1ld29ya0xpYnJhcnk7IFwKKyAgICAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOyBc
CisgICAgICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF57IFwKKyAgICAgICAgICAgIGZyYW1ld29y
a0xpYnJhcnkgPSBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzLyIgI2ZyYW1ld29y
ayAiLmZyYW1ld29yay8iICNmcmFtZXdvcmssIFJUTERfTk9XKTsgXAorICAgICAgICB9KTsgXAor
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChpc09wdGlvbmFsLCBpc09wdGlvbmFs
IHx8IGZyYW1ld29ya0xpYnJhcnksICIlcyIsIGRsZXJyb3IoKSk7IFwKKyAgICAgICAgcmV0dXJu
IGZyYW1ld29ya0xpYnJhcnk7IFwKKyAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU09GVF9MSU5L
X0NMQVNTX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgY2xhc3NOYW1l
KSBcCisgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAorICAgIG5hbWVzcGFjZSBmdW5jdGlvbk5hbWVz
cGFjZSB7IFwKKyAgICBleHRlcm4gQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsjI18jI2NsYXNzTmFt
ZSMjQ2xhc3MpKCk7IFwKKyAgICBjbGFzc05hbWUgKmFsbG9jIyNjbGFzc05hbWUjI0luc3RhbmNl
KCk7IFwKKyAgICBpbmxpbmUgY2xhc3NOYW1lICphbGxvYyMjY2xhc3NOYW1lIyNJbnN0YW5jZSgp
IFwKKyAgICB7IFwKKyAgICAgICAgcmV0dXJuIFtnZXRfIyNmcmFtZXdvcmsjI18jI2NsYXNzTmFt
ZSMjQ2xhc3MoKSBhbGxvY107IFwKKyAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0UoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgY2xhc3NOYW1l
KSBcCisgICAgQGNsYXNzIGNsYXNzTmFtZTsgXAorICAgIG5hbWVzcGFjZSBmdW5jdGlvbk5hbWVz
cGFjZSB7IFwKKyAgICBzdGF0aWMgQ2xhc3MgaW5pdCMjY2xhc3NOYW1lKCk7IFwKKyAgICBDbGFz
cyAoKmdldF8jI2ZyYW1ld29yayMjXyMjY2xhc3NOYW1lIyNDbGFzcykoKSA9IGluaXQjI2NsYXNz
TmFtZTsgXAorICAgIHN0YXRpYyBDbGFzcyBjbGFzcyMjY2xhc3NOYW1lOyBcCisgICAgXAorICAg
IHN0YXRpYyBDbGFzcyBjbGFzc05hbWUjI0Z1bmN0aW9uKCkgXAorICAgIHsgXAorICAgICAgICBy
ZXR1cm4gY2xhc3MjI2NsYXNzTmFtZTsgXAorICAgIH0gXAorICAgIFwKKyAgICBzdGF0aWMgQ2xh
c3MgaW5pdCMjY2xhc3NOYW1lKCkgXAorICAgIHsgXAorICAgICAgICBzdGF0aWMgZGlzcGF0Y2hf
b25jZV90IG9uY2U7IFwKKyAgICAgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsgXAorICAgICAg
ICAgICAgZnJhbWV3b3JrIyNMaWJyYXJ5KCk7IFwKKyAgICAgICAgICAgIGNsYXNzIyNjbGFzc05h
bWUgPSBvYmpjX2dldENsYXNzKCNjbGFzc05hbWUpOyBcCisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChjbGFzcyMjY2xhc3NOYW1lKTsgXAorICAgICAgICAgICAgZ2V0XyMjZnJhbWV3b3JrIyNf
IyNjbGFzc05hbWUjI0NsYXNzID0gY2xhc3NOYW1lIyNGdW5jdGlvbjsgXAorICAgICAgICB9KTsg
XAorICAgICAgICByZXR1cm4gY2xhc3MjI2NsYXNzTmFtZTsgXAorICAgIH0gXAorICAgIH0KKwor
I2RlZmluZSBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwg
ZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAorICAgIFdURl9FWFRFUk5f
Q19CRUdJTiBcCisgICAgZXh0ZXJuIGNvbnN0IHZhcmlhYmxlVHlwZSB2YXJpYWJsZU5hbWU7IFwK
KyAgICBXVEZfRVhURVJOX0NfRU5EIFwKKyAgICBuYW1lc3BhY2UgZnVuY3Rpb25OYW1lc3BhY2Ug
eyBcCisgICAgdmFyaWFibGVUeXBlIGdldF8jI2ZyYW1ld29yayMjXyMjdmFyaWFibGVOYW1lKCk7
IFwKKyAgICB9IFwKKyAgICB1c2luZyBmdW5jdGlvbk5hbWVzcGFjZTo6Z2V0XyMjZnJhbWV3b3Jr
IyNfIyN2YXJpYWJsZU5hbWU7CisKKyNkZWZpbmUgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VS
Q0UoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgdmFyaWFibGVOYW1lLCB2YXJpYWJsZVR5
cGUpIFwKKyAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAorICAgIGV4dGVybiBjb25zdCB2YXJpYWJs
ZVR5cGUgdmFyaWFibGVOYW1lOyBcCisgICAgV1RGX0VYVEVSTl9DX0VORCBcCisgICAgbmFtZXNw
YWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAorICAgIHZhcmlhYmxlVHlwZSBnZXRfIyNmcmFtZXdv
cmsjI18jI3ZhcmlhYmxlTmFtZSgpOyBcCisgICAgdmFyaWFibGVUeXBlIGdldF8jI2ZyYW1ld29y
ayMjXyMjdmFyaWFibGVOYW1lKCkgXAorICAgIHsgXAorICAgICAgICBzdGF0aWMgdmFyaWFibGVU
eXBlIGNvbnN0YW50IyNmcmFtZXdvcmsjI3ZhcmlhYmxlTmFtZTsgXAorICAgICAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2U7IFwKKyAgICAgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwgXnsg
XAorICAgICAgICAgICAgdm9pZCogY29uc3RhbnQgPSBkbHN5bShmcmFtZXdvcmsjI0xpYnJhcnko
KSwgI3ZhcmlhYmxlTmFtZSk7IFwKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVT
U0FHRShjb25zdGFudCwgIiVzIiwgZGxlcnJvcigpKTsgXAorICAgICAgICAgICAgY29uc3RhbnQj
I2ZyYW1ld29yayMjdmFyaWFibGVOYW1lID0gKnN0YXRpY19jYXN0PHZhcmlhYmxlVHlwZSo+KGNv
bnN0YW50KTsgXAorICAgICAgICB9KTsgXAorICAgICAgICByZXR1cm4gY29uc3RhbnQjI2ZyYW1l
d29yayMjdmFyaWFibGVOYW1lOyBcCisgICAgfSBcCisgICAgfQorCisjZGVmaW5lIFNPRlRfTElO
S19GVU5DVElPTl9GT1JfSEVBREVSKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGZ1bmN0
aW9uTmFtZSwgcmVzdWx0VHlwZSwgcGFyYW1ldGVyRGVjbGFyYXRpb25zLCBwYXJhbWV0ZXJOYW1l
cykgXAorICAgIFdURl9FWFRFUk5fQ19CRUdJTiBcCisgICAgcmVzdWx0VHlwZSBmdW5jdGlvbk5h
bWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCisgICAgV1RGX0VYVEVSTl9DX0VORCBcCisgICAg
bmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAorICAgIGV4dGVybiByZXN1bHRUeXBlICgq
c29mdExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lKSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnM7
IFwKKyAgICBpbmxpbmUgcmVzdWx0VHlwZSBzb2Z0TGlua18jI2ZyYW1ld29yayMjXyMjZnVuY3Rp
b25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9ucyBcCisgICAgeyBcCisgICAgICAgIHJldHVybiBz
b2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyTmFtZXM7IFwKKyAgICB9
IFwKKyAgICB9IFwKKyAgICB1c2luZyBmdW5jdGlvbk5hbWVzcGFjZTo6c29mdExpbmtfIyNmcmFt
ZXdvcmsjI18jI2Z1bmN0aW9uTmFtZTsKKworI2RlZmluZSBTT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCBmdW5jdGlvbk5hbWUsIHJlc3Vs
dFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMpIFwKKyAgICBXVEZf
RVhURVJOX0NfQkVHSU4gXAorICAgIHJlc3VsdFR5cGUgZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRl
Y2xhcmF0aW9uczsgXAorICAgIFdURl9FWFRFUk5fQ19FTkQgXAorICAgIG5hbWVzcGFjZSBmdW5j
dGlvbk5hbWVzcGFjZSB7IFwKKyAgICBzdGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFtZXdvcmsj
I2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnM7IFwKKyAgICByZXN1bHRUeXBlICgq
c29mdExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lKSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMg
PSBpbml0IyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZTsgXAorICAgIHN0YXRpYyByZXN1bHRUeXBl
IGluaXQjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9ucyBcCisg
ICAgeyBcCisgICAgICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsgXAorICAgICAgICBk
aXNwYXRjaF9vbmNlKCZvbmNlLCBeeyBcCisgICAgICAgICAgICBzb2Z0TGluayMjZnJhbWV3b3Jr
IyNmdW5jdGlvbk5hbWUgPSAocmVzdWx0VHlwZSAoKikgcGFyYW1ldGVyRGVjbGFyYXRpb25zKSBk
bHN5bShmcmFtZXdvcmsjI0xpYnJhcnkoKSwgI2Z1bmN0aW9uTmFtZSk7IFwKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlv
bk5hbWUsICIlcyIsIGRsZXJyb3IoKSk7IFwKKyAgICAgICAgfSk7IFwKKyAgICAgICAgcmV0dXJu
IHNvZnRMaW5rIyNmcmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJOYW1lczsgXAorICAg
IH0gXAorICAgIH0KKworI2RlZmluZSBTT0ZUX0xJTktfUE9JTlRFUl9GT1JfSEVBREVSKGZ1bmN0
aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVUeXBlKSBcCisg
ICAgbmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAorICAgIGV4dGVybiB2YXJpYWJsZVR5
cGUgKCpnZXRfIyNmcmFtZXdvcmsjI18jI3ZhcmlhYmxlTmFtZSkoKTsgXAorICAgIH0KKworI2Rl
ZmluZSBTT0ZUX0xJTktfUE9JTlRFUl9GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFt
ZXdvcmssIHZhcmlhYmxlTmFtZSwgdmFyaWFibGVUeXBlKSBcCisgICAgbmFtZXNwYWNlIGZ1bmN0
aW9uTmFtZXNwYWNlIHsgXAorICAgIHN0YXRpYyB2YXJpYWJsZVR5cGUgaW5pdCMjZnJhbWV3b3Jr
IyN2YXJpYWJsZU5hbWUoKTsgXAorICAgIHZhcmlhYmxlVHlwZSAoKmdldF8jI2ZyYW1ld29yayMj
XyMjdmFyaWFibGVOYW1lKSgpID0gaW5pdCMjZnJhbWV3b3JrIyN2YXJpYWJsZU5hbWU7IFwKKyAg
ICBzdGF0aWMgdmFyaWFibGVUeXBlIHBvaW50ZXIjI2ZyYW1ld29yayMjdmFyaWFibGVOYW1lOyBc
CisgICAgXAorICAgIHN0YXRpYyB2YXJpYWJsZVR5cGUgcG9pbnRlciMjZnJhbWV3b3JrIyN2YXJp
YWJsZU5hbWUjI0Z1bmN0aW9uKCkgXAorICAgIHsgXAorICAgICAgICByZXR1cm4gcG9pbnRlciMj
ZnJhbWV3b3JrIyN2YXJpYWJsZU5hbWU7IFwKKyAgICB9IFwKKyAgICBcCisgICAgc3RhdGljIHZh
cmlhYmxlVHlwZSBpbml0IyNmcmFtZXdvcmsjI3ZhcmlhYmxlTmFtZSgpIFwKKyAgICB7IFwKKyAg
ICAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlOyBcCisgICAgICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2UsIF57IFwKKyAgICAgICAgICAgIHZvaWQqKiBwb2ludGVyID0gc3RhdGljX2Nhc3Q8
dm9pZCoqPihkbHN5bShmcmFtZXdvcmsjI0xpYnJhcnkoKSwgI3ZhcmlhYmxlTmFtZSkpOyBcCisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UocG9pbnRlciwgIiVzIiwgZGxl
cnJvcigpKTsgXAorICAgICAgICAgICAgcG9pbnRlciMjZnJhbWV3b3JrIyN2YXJpYWJsZU5hbWUg
PSBzdGF0aWNfY2FzdDx2YXJpYWJsZVR5cGU+KCpwb2ludGVyKTsgXAorICAgICAgICAgICAgZ2V0
XyMjZnJhbWV3b3JrIyNfIyN2YXJpYWJsZU5hbWUgPSBwb2ludGVyIyNmcmFtZXdvcmsjI3Zhcmlh
YmxlTmFtZSMjRnVuY3Rpb247IFwKKyAgICAgICAgfSk7IFwKKyAgICAgICAgcmV0dXJuIHBvaW50
ZXIjI2ZyYW1ld29yayMjdmFyaWFibGVOYW1lOyBcCisgICAgfSBcCisgICAgfQorCisjZW5kaWYg
Ly8gU29mdExpbmtpbmdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3NwaS9jZi9D
b3JlTWVkaWFTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9zcGkvY2YvQ29yZU1lZGlhU1BJLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDkxMDczMWM4NmNiZjhkYzY4YjMyNTQ3OGMxMmMyYjhlNzY0ZDA2ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9zcGkvY2YvQ29yZU1lZGlhU1BJLmgK
QEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIENvcmVNZWRpYVNQSV9oCisjZGVmaW5lIENvcmVNZWRpYVNQSV9oCisK
KyNpbmNsdWRlIDxDb3JlTWVkaWEvQ29yZU1lZGlhLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkK
KworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8Q29yZU1lZGlhL0NNTm90
aWZpY2F0aW9uQ2VudGVyLmg+CisjZWxzZQordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01Ob3RpZmlj
YXRpb25DZW50ZXIgKkNNTm90aWZpY2F0aW9uQ2VudGVyUmVmOwordHlwZWRlZiB2b2lkICgqQ01O
b3RpZmljYXRpb25DYWxsYmFjaykoQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYgaW5DZW50ZXIsIGNv
bnN0IHZvaWQgKmluTGlzdGVuZXIsIENGU3RyaW5nUmVmIGluTm90aWZpY2F0aW9uTmFtZSwgY29u
c3Qgdm9pZCAqaW5Ob3RpZnlpbmdPYmplY3QsIENGVHlwZVJlZiBpbk5vdGlmaWNhdGlvblBheWxv
YWQpOworI2VuZGlmCisKK1dURl9FWFRFUk5fQ19CRUdJTgorQ01Ob3RpZmljYXRpb25DZW50ZXJS
ZWYgQ01Ob3RpZmljYXRpb25DZW50ZXJHZXREZWZhdWx0TG9jYWxDZW50ZXIodm9pZCk7CitPU1N0
YXR1cyBDTU5vdGlmaWNhdGlvbkNlbnRlckFkZExpc3RlbmVyKENNTm90aWZpY2F0aW9uQ2VudGVy
UmVmIGluQ2VudGVyLCBjb25zdCB2b2lkICppbkxpc3RlbmVyLCBDTU5vdGlmaWNhdGlvbkNhbGxi
YWNrIGluQ2FsbEJhY2ssIENGU3RyaW5nUmVmIGluTm90aWZpY2F0aW9uTmFtZSwgY29uc3Qgdm9p
ZCAqaW5PYmplY3RUb09ic2VydmUsIFVJbnQzMiBpbkZsYWdzKTsKK09TU3RhdHVzIENNTm90aWZp
Y2F0aW9uQ2VudGVyUmVtb3ZlTGlzdGVuZXIoQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYgaW5DZW50
ZXIsIGNvbnN0IHZvaWQgKmluTGlzdGVuZXIsIENNTm90aWZpY2F0aW9uQ2FsbGJhY2sgaW5DYWxs
QmFjaywgQ0ZTdHJpbmdSZWYgaW5Ob3RpZmljYXRpb25OYW1lLCBjb25zdCB2b2lkICppbk9iamVj
dCk7CitXVEZfRVhURVJOX0NfRU5ECisKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKKworI2lm
IFBMQVRGT1JNKFdJTikKKwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ01CbG9ja0J1ZmZlciogQ01C
bG9ja0J1ZmZlclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3Jp
cHRpb24qIENNRm9ybWF0RGVzY3JpcHRpb25SZWY7Cit0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNh
bXBsZUJ1ZmZlciogQ01TYW1wbGVCdWZmZXJSZWY7CisKKyNpZm5kZWYgQ01TQU1QTEVCVUZGRVJf
SAorV1RGX0VYVEVSTl9DX0JFR0lOCisjcHJhZ21hIHBhY2socHVzaCwgNCkKK3R5cGVkZWYgc3Ry
dWN0IHsKKyAgICBDTVRpbWUgZHVyYXRpb247CisgICAgQ01UaW1lIHByZXNlbnRhdGlvblRpbWVT
dGFtcDsKKyAgICBDTVRpbWUgZGVjb2RlVGltZVN0YW1wOworfSBDTVNhbXBsZVRpbWluZ0luZm87
CisjcHJhZ21hIHBhY2socG9wKQorV1RGX0VYVEVSTl9DX0VORAorI2VuZGlmCisjZW5kaWYgLy8g
UExBVEZPUk0oV0lOKQorCisjZW5kaWYgLy8gQ29yZU1lZGlhU1BJX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNDk4YmIxOGU0
YWRhYTNjZTQ5NjllMGE3NGEzMzAyYzdlOGY1NTU1Li44M2M0ZmZjMDE0N2FlNWFkMGU3MTc3Mjcy
YjIzMjllOTY4ZTY1OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NDcsNyArNDQ3LDYgQEAKIAkJMDhGQjNGODQxM0JDNzU0
QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkIzRjgzMTNCQzc1NEMwMDk5RkMxOCAv
KiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGRTBCQzUxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0Fu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDhGRTBCQzQxMjdFMkFDMTAwMEM0RkI1IC8qIFNWR0FuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA4RkYxMDIwMTI5NTBGNUEwMEYwMDI3NiAvKiBTVkdQYXRoU2VnTGlz
dFByb3BlcnR5VGVhck9mZi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwOEZGMTAxRjEyOTUwRjU5MDBGMDAyNzYgLyogU1ZHUGF0aFNlZ0xpc3RQcm9w
ZXJ0eVRlYXJPZmYuY3BwICovOyB9OwotCQkwQTQ4NDQ5OTBDQTQ0Q0IyMDBCN0JENDggLyogU29m
dExpbmtpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBBNDg0NDk4MENBNDRDQjIwMEI3QkQ0OCAvKiBTb2Z0TGlua2luZy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBBRkRBQzNEMTBGNTQ0OEMwMEUx
RjNEMiAvKiBQbHVnaW5WaWV3QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEFGREFDM0MxMEY1NDQ4QzAwRTFGM0QyIC8qIFBsdWdpblZpZXdCYXNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEI4
QzU2RDQwRjI4NjI3RjAwMDUwMkUxIC8qIEhUVFBIZWFkZXJNYXAuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEI4QzU2RDMwRjI4NjI3RjAwMDUwMkUx
IC8qIEhUVFBIZWFkZXJNYXAuY3BwICovOyB9OwogCQkwQjkwNTYxOTBGMjU3OEJFMDA5NUZGNkEg
LyogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCOTA1NjE1MEYyNTc4QkUwMDk1RkY2QSAvKiBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwICovOyB9OwpAQCAtOTQxLDYgKzk0MCw3IEBACiAJCTFDMjQx
N0JBMTk5MkMwNDEwMEVGOTkzOCAvKiBTcGVsbGluZ0RvdEAzeC5wbmcgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjQxN0I5MTk5MkMwNDEwMEVGOTkz
OCAvKiBTcGVsbGluZ0RvdEAzeC5wbmcgKi87IH07CiAJCTFDMjY0OTdBMEQ3RTI0OEEwMEJEMTBG
MiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2Fk
ZXJNYWMuY3BwICovOyB9OwogCQkxQzI2NDk3QzBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI2NDk3
QjBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgKi87IH07CisJCTFDMjlFQzJEMUFGQzEz
MUQwMDlFMEE4MiAvKiBsaWJQQUwuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDMjlFQzI4MUFGQzEyRjUwMDlFMEE4MiAvKiBsaWJQQUwuYSAqLzsg
fTsKIAkJMUM2NDY2MjUxQTEyQzM4RTAwOTQ2MDNDIC8qIENvcmVUZXh0U1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVFOTgwRjFBMDJDRUZBMDAy
REI1NUYgLyogQ29yZVRleHRTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQzY0NjYyODFBMTJDNDIwMDA5NDYwM0MgLyogTlNGb250U1BJLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzY0NjYyNzFB
MTJDM0Y5MDA5NDYwM0MgLyogTlNGb250U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUM4MUI5NUEwRTk3MzMwODAwMjY2RTA3IC8qIEluc3Bl
Y3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2MDAs
MTIgKzE2MDAsOSBAQAogCQk0NDMxMUNEODEyRTRFMjRCMDAwQThEMTkgLyogRE9NRG9jdW1lbnRQ
cml2YXRlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NDMxMUNENTEyRTRFMjJEMDAwQThEMTkgLyogRE9NRG9jdW1lbnRQcml2
YXRlLmggKi87IH07CiAJCTQ0MzExQ0Q5MTJFNEUyNTcwMDBBOEQxOSAvKiBET01Eb2N1bWVudEZy
YWdtZW50UHJpdmF0ZS5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDQzMTFDRDQxMkU0RTIyRDAwMEE4RDE5IC8qIERPTURvY3Vt
ZW50RnJhZ21lbnRQcml2YXRlLmggKi87IH07CiAJCTQ0MzExRjgyMTJFNEU2NkMwMDBBOEQxOSAv
KiBET01Eb2N1bWVudEZyYWdtZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RTcxMTQ1MEFDNUQ1MzQwMDUzMjcwRiAvKiBET01Eb2N1
bWVudEZyYWdtZW50SW50ZXJuYWwuaCAqLzsgfTsKLQkJNDQzODE3RkYxQTkxQjJGODAwNkUwNEYy
IC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ0MzgxN0ZEMUE5MUIyRjgwMDZFMDRGMiAvKiBDb3JlTWVkaWFTb2Z0
TGluay5jcHAgKi87IH07Ci0JCTQ0MzgxODAwMUE5MUIyRjgwMDZFMDRGMiAvKiBDb3JlTWVkaWFT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDQzODE3RkUxQTkxQjJGODAwNkUwNEYyIC8qIENvcmVNZWRpYVNvZnRMaW5rLmggKi87IH07CiAJ
CTQ0MzkxN0ZGMUE5MUIyRjgwMDZFMDRGMiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MzkxN0ZEMUE5MUIyRjgw
MDZFMDRGMiAvKiBRdWlja0xvb2tTb2Z0TGluay5tbSAqLzsgfTsKIAkJNDQzOTE4MDAxQTkxQjJG
ODAwNkUwNEYyIC8qIFF1aWNrTG9va1NvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDM5MTdGRTFBOTFCMkY4MDA2RTA0RjIgLyogUXVpY2tM
b29rU29mdExpbmsuaCAqLzsgfTsKIAkJNDQzRjA0MjcwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdv
cmtTdGF0ZU5vdGlmaWVySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDQzRjA0MjYwRTc1QzhGQjAwN0U1NDA3IC8qIE5ldHdvcmtTdGF0ZU5vdGlm
aWVySU9TLm1tICovOyB9OwotCQk0NDQ5QTQwNTFBOTY0QjAwMDBCNjRBRDUgLyogQ29yZU1lZGlh
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDQ5
QTQwNDFBOTY0QjAwMDBCNjRBRDUgLyogQ29yZU1lZGlhU1BJLmggKi87IH07CiAJCTQ0NEQ0RTIz
MEY3MDhCMkUwMDMxNThFMCAvKiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDRENEUyMTBGNzA4QjJFMDAzMTU4
RTAgLyogV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tICovOyB9OwogCQk0NDc2NTMxQjEzMzE3MDk5
MDAwNkI3ODkgLyogU1NMS2V5R2VuZXJhdG9ySU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NzY1MzFBMTMzMTcwOTkwMDA2Qjc4OSAvKiBTU0xL
ZXlHZW5lcmF0b3JJT1MuY3BwICovOyB9OwogCQk0NDc5NTgwNDE2NDNCNDlBMDAxRTBBN0YgLyog
UGFyc2VkQ29udGVudFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ0Nzk1ODAzMTY0M0I0N0IwMDFFMEE3RiAvKiBQYXJzZWRDb250ZW50VHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMTAy
LDcgKzIwOTksNyBAQAogCQk1MzZENUEyMzE5M0U4RTBDMDBDRTRDQUIgLyogUGFyc2luZ1V0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2
RDVBMjIxOTNFOEUwQzAwQ0U0Q0FCIC8qIFBhcnNpbmdVdGlsaXRpZXMuaCAqLzsgfTsKIAkJNTM2
RDVBMjUxOTNGNDBGQzAwQ0U0Q0FCIC8qIFNvdXJjZVNpemVMaXN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNkQ1QTI0MTkzRjQwRkMwMENFNENB
QiAvKiBTb3VyY2VTaXplTGlzdC5jcHAgKi87IH07CiAJCTUzNkQ1QTI3MTkzRjQxMEIwMENFNENB
QiAvKiBTb3VyY2VTaXplTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTM2RDVBMjYxOTNGNDEwQjAwQ0U0Q0FCIC8qIFNvdXJjZVNpemVMaXN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTNCODk1
QUYxOURDN0VEOTAwOUNBQTkzIC8qIE1pY3JvVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNCODk1QUQxOURDN0MzNzAwOUNBQTkzIC8qIE1pY3Jv
VGFzay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJ
NTNCODk1QUYxOURDN0VEOTAwOUNBQTkzIC8qIE1pY3JvVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNCODk1QUQxOURDN0MzNzAwOUNBQTkzIC8q
IE1pY3JvVGFzay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUzQzgyOThEMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0M4Mjk4QjEz
RDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guY3BwICovOyB9OwogCQk1M0M4Mjk4
RTEzRDhEOTI3MDBERTJERUIgLyogUmVuZGVyRmxleGlibGVCb3guaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzQzgyOThDMTNEOEQ5MjcwMERFMkRFQiAv
KiBSZW5kZXJGbGV4aWJsZUJveC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUzRTI5RTVFMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRlcm5hbFNldHRp
bmdzR2VuZXJhdGVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzRTI5RTVDMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJh
dGVkLmNwcCAqLzsgfTsKQEAgLTIyNjcsNyArMjI2NCw2IEBACiAJCTY1QTIxNDg1MDk3QTNGNTMw
MEI5MDUwQSAvKiBGcmFtZVRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2NUJGMDIyRTA5
NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNjVCRjAyMjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAq
LzsgfTsKIAkJNjVCRjAyMkYwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIyQTA5NzQ4MTYzMDBDNDMx
OTYgLyogRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwotCQk2NUM5N0FGMzA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUM5N0FGMjA4RUE5MDg4MDBBQ0Qy
NzMgLyogY29uZmlnLmggKi87IH07CiAJCTY1Q0JGRUY5MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFt
ZVZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi87IH07CiAJCTY1Q0JG
RUZBMDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Q0JGRUY4MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFt
ZVZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk2NURGMzFEQTA5RDFDMTIzMDAwQkUzMjUgLyogSlNBdHRyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1REYzMUQ4MDlEMUMxMjIwMDBCRTMyNSAv
KiBKU0F0dHIuY3BwICovOyB9OwpAQCAtMzk2Nyw3ICszOTYzLDYgQEAKIAkJQTcxODc4OTAwQjJE
MDRBQzAwQTE2RUNFIC8qIERyYWdDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc4OEYwQjJEMDRBQzAwQTE2RUNFIC8qIERy
YWdDb250cm9sbGVyTWFjLm1tICovOyB9OwogCQlBNzE5N0YyNDE3NTY4OUM0MDA3Qjk0NDIgLyog
UGFnZVRocm90dGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcxOTdGMjMxNzU2ODlDNDAwN0I5NDQyIC8qIFBhZ2VUaHJvdHRsZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzE5N0YyNjE3NTY4
QUU1MDA3Qjk0NDIgLyogUGFnZVRocm90dGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzE5N0YyNTE3NTY4QUU1MDA3Qjk0NDIgLyogUGFnZVRo
cm90dGxlci5jcHAgKi87IH07Ci0JCUE3MjNGNzdCMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9y
bUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcyM0Y3N0ExNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTcyNzYz
QkYxNjY4OUJGQjAwMkZDQUNCIC8qIFVzZXJBY3Rpb25FbGVtZW50U2V0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI3NjNCRTE2Njg5QkZCMDAyRkNB
Q0IgLyogVXNlckFjdGlvbkVsZW1lbnRTZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzNGOTVGRTEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRl
ZFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTczRjk1RkMxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmNwcCAqLzsgfTsKIAkJQTcz
Rjk1RkYxMkM5N0JGRTAwMzFBQUY5IC8qIFJvdW5kZWRSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyog
Um91bmRlZFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNTYyNyw2ICs1NjIyLDIwIEBACiAJCUMwRjJBNDQxMTM4NjlBQUIwMDY2QzUzNCAv
KiBwcmVwcm9jZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxMDVEQTYyMEYz
QUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MTBGM0FBNjhGMDAxREQ0
NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovOyB9OwogCQlDMTA1REE2NDBGM0FB
NkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMDVEQTYzMEYzQUE2QjgwMDFERDQ0RiAvKiBU
ZXh0RW5jb2RpbmdEZXRlY3Rvci5oICovOyB9OworCQlDMkYzMUYxQjFCMDA2QzRFMDA2QTg4RkEg
LyogQ2xvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERUE3NjJDMTQ2MDgyMjQwMDhCMzFGMSAvKiBDbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyRjMxRjFDMUIwMDZDNTcwMDZBODhGQSAv
KiBDbG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyogQ2xvY2suY3BwICovOyB9OworCQlDMkYzMUYx
RTFCMDA2RDFFMDA2QTg4RkEgLyogUGxhdGZvcm1DbG9ja0NBLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAv
KiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovOyB9OworCQlDMkYzMUYxRjFCMDA2RDIzMDA2QTg4RkEg
LyogUGxhdGZvcm1DbG9ja0NBLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREVBNzYyRjE0NjA4NEVFMDA4QjMxRjEgLyogUGxhdGZvcm1DbG9ja0NBLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzJGMzFG
MjIxQjAwNkQzMDAwNkE4OEZBIC8qIFBsYXRmb3JtQ2xvY2tDTS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBQThEMDcxNEQzODU2MDAwNjFFQTYwIC8q
IFBsYXRmb3JtQ2xvY2tDTS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUMyRjMxRjIzMUIwMDZEMzgwMDZBODhGQSAvKiBQbGF0Zm9ybUNsb2NrQ00u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFBOEQw
ODE0RDM4NTYwMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tICovOyB9OworCQlDMkYzMUYy
NjFCMDA2REZFMDA2QTg4RkEgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDY0MUVCRTE4MTlCMzU5MDBFRTRD
NDEgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzJGMzFGMjcxQjAwNkUwNTAwNkE4OEZBIC8qIE1lZGlh
VGltZUFWRm91bmRhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRDY0MUVCRDE4MTlCMzU5MDBFRTRDNDEgLyogTWVkaWFUaW1lQVZGb3VuZGF0
aW9uLmNwcCAqLzsgfTsKKwkJQzJGMzFGMjkxQjAwNkVFNDAwNkE4OEZBIC8qIENvcmVNZWRpYVNv
ZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NDM4MTdGRTFBOTFCMkY4MDA2RTA0RjIgLyogQ29yZU1lZGlhU29mdExpbmsuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMkYzMUYyQTFCMDA2RUVE
MDA2QTg4RkEgLyogQ29yZU1lZGlhU29mdExpbmsuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQzODE3RkQxQTkxQjJGODAwNkUwNEYyIC8qIENvcmVN
ZWRpYVNvZnRMaW5rLmNwcCAqLzsgfTsKKwkJQzJGMzFGMkQxQjAwNkY2MjAwNkE4OEZBIC8qIENv
cmVNZWRpYVNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDQ0OUE0MDQxQTk2NEIwMDAwQjY0QUQ1IC8qIENvcmVNZWRpYVNQSS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyRjMxRjJFMUIwMDZGQjkw
MDZBODhGQSAvKiBTb2Z0TGlua2luZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNvZnRMaW5raW5nLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzJGMzFG
MkYxQjAwNzAxMjAwNkE4OEZBIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyRjMx
RjMwMUIwMDcwNjIwMDZBODhGQSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyM0Y3N0ExNDg0Q0E0QzAwOEM2
REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzMzMEEyMjMxM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9y
Q2hvb3Nlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMzM0VFNUM0MTRGQjQ5NjEwMDAy
MDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMzNFRTVDMjE0RkI0OTYxMDAwMjA5NUEg
LyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwICovOyB9OwogCQlDMzNFRTVDNTE0
RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzM0VFNUMzMTRGQjQ5NjEw
MDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oICovOyB9OwpAQCAtNTc0
Nyw4ICs1NzU2LDYgQEAKIAkJQ0Q2MkZCOTYxQUYwMThFNzAwMTJFRDdEIC8qIEdlbmVyaWNUYXNr
UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
NjJGQjk0MUFGMDE4RTcwMDEyRUQ3RCAvKiBHZW5lcmljVGFza1F1ZXVlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q2NDFFQjMxODE4RjVFRDAw
RUU0QzQxIC8qIE1lZGlhU291cmNlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2NDFFQjExODE4RjVFRDAwRUU0QzQxIC8qIE1lZGlhU291
cmNlUHJpdmF0ZS5oICovOyB9OwogCQlDRDY0MUVCNDE4MThGNUVEMDBFRTRDNDEgLyogU291cmNl
QnVmZmVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q2NDFFQjIxODE4RjVFRDAwRUU0QzQxIC8qIFNvdXJjZUJ1ZmZlclByaXZhdGUuaCAq
LzsgfTsKLQkJQ0Q2NDFFQkYxODE5QjM2MDAwRUU0QzQxIC8qIE1lZGlhVGltZUFWRm91bmRhdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDY0
MUVCRDE4MTlCMzU5MDBFRTRDNDEgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcCAqLzsgfTsK
LQkJQ0Q2NDFFQzAxODE5QjM2MDAwRUU0QzQxIC8qIE1lZGlhVGltZUFWRm91bmRhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q2NDFFQkUxODE5
QjM1OTAwRUU0QzQxIC8qIE1lZGlhVGltZUFWRm91bmRhdGlvbi5oICovOyB9OwogCQlDRDdEQkIy
ODE4Q0ExOUE0MDBDMTEwNjYgLyogQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEN0RCQjI2MThDQTExRkYwMEMx
MTA2NiAvKiBDU1NHcmlkTGluZU5hbWVzVmFsdWUuY3BwICovOyB9OwogCQlDRDdEQkIyOTE4Q0Ex
OUM2MDBDMTEwNjYgLyogQ1NTR3JpZExpbmVOYW1lc1ZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDdEQkIyNzE4Q0ExMUZGMDBDMTEwNjYgLyog
Q1NTR3JpZExpbmVOYW1lc1ZhbHVlLmggKi87IH07CiAJCUNEN0UwNTIyMTY1MUMyODIwMEMxMjAx
RiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDdFMDUyMTE2NTFBODQxMDBDMTIwMUYgLyogV2ViQ29y
ZUFWRlJlc291cmNlTG9hZGVyLm1tICovOyB9OwpAQCAtNTc4OSw3ICs1Nzk2LDYgQEAKIAkJQ0RB
OThFMEIxNjAzQ0Q2MDAwRkVBM0IxIC8qIENETS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OEUwOTE2MDNDRDU5MDBGRUEzQjEgLyogQ0RNLmNw
cCAqLzsgfTsKIAkJQ0RBOThFMEQxNjAzRkU0QTAwRkVBM0IxIC8qIE1lZGlhS2V5cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDQTE2MDE1
MDhBMDBGRUEzQjEgLyogTWVkaWFLZXlzLmNwcCAqLzsgfTsKIAkJQ0RBOThFMEUxNjAzRkU1ODAw
RkVBM0IxIC8qIE1lZGlhS2V5U2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREE5OERDNzE2MDE0RjJDMDBGRUEzQjEgLyogTWVkaWFLZXlT
ZXNzaW9uLmNwcCAqLzsgfTsKLQkJQ0RBQThEMEExNEQ3MUIyRTAwNjFFQTYwIC8qIFBsYXRmb3Jt
Q2xvY2tDTS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEQUE4RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQbGF0Zm9ybUNsb2NrQ00ubW0gKi87IH07CiAJ
CUNEQUI2RDI4MTdDN0RFNkMwMEM2MEIzNCAvKiBNZWRpYUNvbnRyb2xzSG9zdC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREFCNkQyNjE3QzdERTZD
MDBDNjBCMzQgLyogTWVkaWFDb250cm9sc0hvc3QuY3BwICovOyB9OwogCQlDREFCNkQyOTE3QzdE
RTZDMDBDNjBCMzQgLyogTWVkaWFDb250cm9sc0hvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQUI2RDI3MTdDN0RFNkMwMEM2MEIzNCAvKiBNZWRp
YUNvbnRyb2xzSG9zdC5oICovOyB9OwogCQlDREFCNkQyRDE3QzgxNEVFMDBDNjBCMzQgLyogSlNN
ZWRpYUNvbnRyb2xzSG9zdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREFCNkQyQjE3QzgxNEVFMDBDNjBCMzQgLyogSlNNZWRpYUNvbnRyb2xzSG9z
dC5jcHAgKi87IH07CkBAIC01ODM5LDkgKzU4NDUsNyBAQAogCQlDREU4QjVFRDFBNjk3NzczMDBC
NEI2NkEgLyogQ0RNUHJpdmF0ZUNsZWFyS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDREU4QjVFQjFBNjk3NzczMDBCNEI2NkEgLyogQ0RNUHJpdmF0
ZUNsZWFyS2V5LmggKi87IH07CiAJCUNERThCNUYwMUE2OTc3OEIwMEI0QjY2QSAvKiBDRE1TZXNz
aW9uQ2xlYXJLZXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFOEI1RUUxQTY5Nzc4QjAwQjRCNjZBIC8qIENETVNlc3Npb25DbGVhcktleS5jcHAg
Ki87IH07CiAJCUNERThCNUYxMUE2OTc3OEIwMEI0QjY2QSAvKiBDRE1TZXNzaW9uQ2xlYXJLZXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERThCNUVG
MUE2OTc3OEIwMEI0QjY2QSAvKiBDRE1TZXNzaW9uQ2xlYXJLZXkuaCAqLzsgfTsKLQkJQ0RFQTc2
MzAxNDYwOEE1MzAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBNzYyRTE0NjA4NERFMDA4QjMxRjEg
LyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLzsgfTsKIAkJQ0RFQTc2MzQxNDYwQjU2RjAwOEIzMUYx
IC8qIENsb2NrR2VuZXJpYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREVBNzYzMjE0NjBBRTI5MDA4QjMxRjEgLyogQ2xvY2tHZW5lcmljLmNwcCAq
LzsgfTsKLQkJQ0RFQTc2MzUxNDYwQjcxQTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUE3NjMzMTQ2MEI0NjIwMDhC
MzFGMSAvKiBDbG9jay5jcHAgKi87IH07CiAJCUNERUE3Qzg0MTI3NjIzMDQwMEI4NDZERCAvKiBS
ZW5kZXJGdWxsU2NyZWVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREVBN0M4MjEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5oICov
OyB9OwogCQlDREVBN0M4NTEyNzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREVBN0M4MzEy
NzYyMzA0MDBCODQ2REQgLyogUmVuZGVyRnVsbFNjcmVlbi5jcHAgKi87IH07CiAJCUNERUUzOTM3
MTc5NzQyNTkwMDFENzU4MCAvKiBQdWJsaWNVUkxNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERUUzOTM2MTc5NzQyNTkwMDFENzU4MCAv
KiBQdWJsaWNVUkxNYW5hZ2VyLmNwcCAqLzsgfTsKQEAgLTY4MTAsNiArNjgxNCwxMyBAQAogLyog
RW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSBzZWN0aW9uICovCisJCTFDRUZCQTEzMUFGQzE0NUUwMDY5RjJBNyAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxQzI5
RUMyNzFBRkMxMkY1MDA5RTBBODI7CisJCQlyZW1vdGVJbmZvID0gUEFMOworCQl9OwogCQk0MTdE
QTZENDEzNzM0RTBEMDA3QzU3RkIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJ
aXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2
OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtNzUxNyw3ICs3NTI4
LDcgQEAKIAkJMDhGQjNGODMxM0JDNzU0QzAwOTlGQzE4IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVy
dHlNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZFMEJDNDEyN0Uy
QUMxMDAwQzRGQjUgLyogU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEZGMTAxRjEyOTUwRjU5MDBGMDAyNzYg
LyogU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29m
dExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4
IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNvZnRM
aW5raW5nLmg7IHBhdGggPSBtYWMvU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEFGREFDM0MxMEY1NDQ4QzAwRTFGM0QyIC8qIFBsdWdpblZpZXdCYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpblZpZXdCYXNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCOEM1NkQzMEYyODYyN0YwMDA1MDJFMSAvKiBIVFRQSGVh
ZGVyTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUVFBIZWFk
ZXJNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQjkwNTYxNTBGMjU3OEJF
MDA5NUZGNkEgLyogRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MDQ1LDYgKzgwNTYsNyBAQAogCQkxQzI0MTdCOTE5
OTJDMDQxMDBFRjk5MzggLyogU3BlbGxpbmdEb3RAM3gucG5nICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gIlNwZWxsaW5n
RG90QDN4LnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjY0OTc5MEQ3RTI0
OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VNYWMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzI5RUMyODFBRkMxMkY1MDA5RTBBODIgLyogbGliUEFMLmEg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUu
YXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYlBBTC5hOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQzVFOTgwRjFBMDJDRUZBMDAyREI1NUYgLyogQ29yZVRl
eHRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZVRleHRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUM2NDY2MjcxQTEyQzNGOTAwOTQ2MDNDIC8qIE5TRm9udFNQSS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOU0ZvbnRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4
MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODA2OCw2ICs4MDgwLDcgQEAKIAkJMUNGNkJFMTIwRTlCQjQ2
NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjZCRTEzMEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpD
Tm9kZUZpbHRlckNvbmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBP
YmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0ZBRTMyMjBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIi
OyBuYW1lID0gbGlib2JqYy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7IHNv
dXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTFDRkRCNTRCMUFGQzE3N0UwMDk0RUYyMSAv
KiBQQUwueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gUEFMLnhjY29uZmlnOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxRjNDM0JFODEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9s
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzQzNCRTkxMzVDQUYzQzAwQjhD
MUFDIC8qIE1lZGlhQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVkaWFDb250cm9scy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjcyQkYwODE4
N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbGVDb250cm9sbGVyTWVtb3J5SGFu
ZGxlcklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzM3Miw4ICsxMzM4
NSw4IEBACiAJCUNEQTk4RTA5MTYwM0NENTkwMEZFQTNCMSAvKiBDRE0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ0RNLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBOThFMEEx
NjAzQ0Q1OTAwRkVBM0IxIC8qIENETS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBOThFMEMxNjAzQ0YzQzAwRkVBM0IxIC8qIENETVByaXZh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ0RNUHJpdmF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDREFBOEQwNzE0RDM4NTYwMDA2MUVBNjAgLyogUGxh
dGZvcm1DbG9ja0NNLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3Jt
Q2xvY2tDTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDREFBOEQwODE0RDM4NTYw
MDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NNLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDREFBOEQwNzE0RDM4NTYwMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFBsYXRmb3JtQ2xvY2tDTS5oOyBwYXRoID0g
bWFjL1BsYXRmb3JtQ2xvY2tDTS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREFB
OEQwODE0RDM4NTYwMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gUGxhdGZvcm1DbG9ja0NNLm1tOyBwYXRoID0gbWFj
L1BsYXRmb3JtQ2xvY2tDTS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RBQUY0
NUQxODY5MDk0RTAwM0MxNzE3IC8qIG1lZGlhQ29udHJvbHNpT1MuY3NzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5jc3M7IHBhdGggPSBtZWRpYUNvbnRyb2xzaU9TLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0RBQjZEMjUxN0M3REU1NzAwQzYwQjM0IC8qIE1lZGlhQ29udHJvbHNIb3N0Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBNZWRpYUNvbnRyb2xzSG9zdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEQUI2RDI2MTdDN0RFNkMwMEM2MEIzNCAvKiBNZWRpYUNvbnRyb2xzSG9zdC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xzSG9zdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQ0MCw4ICsxMzQ1Myw4IEBACiAJCUNE
RThCNUVFMUE2OTc3OEIwMEI0QjY2QSAvKiBDRE1TZXNzaW9uQ2xlYXJLZXkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RNU2Vzc2lvbkNsZWFyS2V5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFOEI1RUYxQTY5Nzc4QjAwQjRCNjZBIC8qIENE
TVNlc3Npb25DbGVhcktleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1T
ZXNzaW9uQ2xlYXJLZXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MkMx
NDYwODIyNDAwOEIzMUYxIC8qIENsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUNERUE3NjJFMTQ2MDg0
REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGxhdGZvcm1DbG9ja0NBLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJQ0RFQTc2MkYxNDYwODRFRTAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNsb2NrQ0EuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFQTc2MkUxNDYwODRERTAwOEIzMUYxIC8qIFBsYXRm
b3JtQ2xvY2tDQS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBQbGF0
Zm9ybUNsb2NrQ0EuY3BwOyBwYXRoID0gbWFjL1BsYXRmb3JtQ2xvY2tDQS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERUE3NjJGMTQ2MDg0RUUwMDhCMzFGMSAvKiBQbGF0Zm9y
bUNsb2NrQ0EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1DbG9j
a0NBLmg7IHBhdGggPSBtYWMvUGxhdGZvcm1DbG9ja0NBLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNERUE3NjMxMTQ2MEFFMUIwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xvY2tHZW5lcmljLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNERUE3NjMyMTQ2MEFFMjkwMDhCMzFGMSAvKiBDbG9ja0dlbmVy
aWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xvY2tHZW5lcmlj
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RFQTc2MzMxNDYwQjQ2MjAwOEIz
MUYxIC8qIENsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENs
b2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NTEzLDYgKzE0NTI2LDEz
IEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMUMyOUVDMjUxQUZDMTJGNTAwOUUwQTgy
IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJNDE3REE2
Q0UxMzczNEUwMjAwN0M1N0ZCIC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFt
ZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0x
NDUyNyw2ICsxNDU0Nyw3IEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkxQzI5RUMy
RDFBRkMxMzFEMDA5RTBBODIgLyogbGliUEFMLmEgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJE
QkYxMjEyQjA0OEEzMDBFRDk4QzYgLyogQWNjZWxlcmF0ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLywKIAkJCQlGRDJEQkYxMzEyQjA0OEEzMDBFRDk4QzYgLyogQXVkaW9Ub29sYm94LmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjE1MTJCMDQ4QTMwMEVEOThDNiAvKiBD
b3JlQXVkaW8uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCkBAIC0xNDU3Miw2ICsxNDU5Myw3
IEBACiAJCQkJRTFCQTY3MTYxNzQyQkRFMDAwQzIwMjUxIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5k
eWxpYiAqLywKIAkJCQk0MTdEQTZEMDEzNzM0RTAyMDA3QzU3RkIgLyogbGliV2ViQ29yZVRlc3RT
dXBwb3J0LmR5bGliICovLAogCQkJCTkzRjE5QjFBMDgyNDVFNUEwMDFFOUFCQyAvKiBXZWJDb3Jl
LmZyYW1ld29yayAqLywKKwkJCQkxQzI5RUMyODFBRkMxMkY1MDA5RTBBODIgLyogbGliUEFMLmEg
Ki8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOwpAQCAtMTQ4MDcsOCArMTQ4MjksNiBAQAogCQkJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFB
NCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLywKIAkJCQlDREJFQUVBQjE5
RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMuaCAqLywKIAkJCQlD
REJFQUVBQTE5RDkyQjZDMDBCRUJBODggLyogTWVkaWFTZWxlY3Rpb25Hcm91cEFWRk9iakMubW0g
Ki8sCi0JCQkJQ0Q2NDFFQkQxODE5QjM1OTAwRUU0QzQxIC8qIE1lZGlhVGltZUFWRm91bmRhdGlv
bi5jcHAgKi8sCi0JCQkJQ0Q2NDFFQkUxODE5QjM1OTAwRUU0QzQxIC8qIE1lZGlhVGltZUFWRm91
bmRhdGlvbi5oICovLAogCQkJCUNEMzM2RjYzMTdGQTBBNEQwMERERENEMCAvKiBWaWRlb1RyYWNr
UHJpdmF0ZUFWRi5oICovLAogCQkJCTA3MDlENzkwMUFFNTU1N0UwMDRFNDJGOCAvKiBXZWJNZWRp
YVNlc3Npb25NYW5hZ2VyTWFjLmNwcCAqLywKIAkJCQkwNzA5RDc5MTFBRTU1NTdFMDA0RTQyRjgg
LyogV2ViTWVkaWFTZXNzaW9uTWFuYWdlck1hYy5oICovLApAQCAtMTQ5MjAsNyArMTQ5NDAsNiBA
QAogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMg
LyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQ
cmVmaXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZlZFNvdXJj
ZXMubWFrZSAqLywKIAkJCQk5M0YxOUIxOTA4MjQ1RTU5MDAxRTlBQkMgLyogSW5mby5wbGlzdCAq
LywKQEAgLTE0OTQyLDYgKzE0OTYxLDcgQEAKIAkJCQlGQUJFNzJFQzEwNTlDMUVCMDBEOTk5REQg
LyogbWF0aG1sICovLAogCQkJCTY1QkYwMjE4MDk3NDgwNjMwMEM0MzE5NiAvKiBwYWdlICovLAog
CQkJCUJDRjFBNUJBMDk3ODMyMDkwMDYxQTEyMyAvKiBwbGF0Zm9ybSAqLywKKwkJCQlDMkYzMUYx
OTFCMDA2QjQ2MDA2QTg4RkEgLyogUEFMICovLAogCQkJCTVEQ0Y4MzY5MEQ1OTE1NzgwMDk1M0JD
NiAvKiBwbHVnaW5zICovLAogCQkJCUY1MjNEMkYzMDJERTQ0M0IwMTg2MzVDQSAvKiByZW5kZXJp
bmcgKi8sCiAJCQkJOTlFNDVBMTMxOEEwMjE3NjAwMjZEODhGIC8qIHJlcGxheSAqLywKQEAgLTE1
MzExLDggKzE1MzMxLDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUUxQThFNTY0MTc1NTJCMkEw
MDc0ODhFNyAvKiBDRlVSTEV4dHJhcy5jcHAgKi8sCiAJCQkJRTFBOEU1NjUxNzU1MkIyQTAwNzQ4
OEU3IC8qIENGVVJMRXh0cmFzLmggKi8sCi0JCQkJNDQzODE3RkQxQTkxQjJGODAwNkUwNEYyIC8q
IENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLywKLQkJCQk0NDM4MTdGRTFBOTFCMkY4MDA2RTA0RjIg
LyogQ29yZU1lZGlhU29mdExpbmsuaCAqLywKIAkJCQk1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUg
LyogRmlsZVN5c3RlbUNGLmNwcCAqLywKIAkJCQk1Q0JDOERBQTFBQUEzMDIyMDBFMUM4MDMgLyog
TWVkaWFBY2Nlc3NpYmlsaXR5U29mdExpbmsuY3BwICovLAogCQkJCTVDQkM4REFCMUFBQTMwMjIw
MEUxQzgwMyAvKiBNZWRpYUFjY2Vzc2liaWxpdHlTb2Z0TGluay5oICovLApAQCAtMTU1NTksNiAr
MTU1NzcsNyBAQAogCQkJCTFDREQ0NUU1MEJBOUM4NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29u
ZmlnICovLAogCQkJCUUxQkE2NkYyMTc0MkJEQ0MwMEMyMDI1MSAvKiBXZWJDb3JlVGVzdFNoaW0u
eGNjb25maWcgKi8sCiAJCQkJNDE4MTcwN0QxMzg2RURGMjAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0
U3VwcG9ydC54Y2NvbmZpZyAqLywKKwkJCQkxQ0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEgLyogUEFM
LnhjY29uZmlnICovLAogCQkJKTsKIAkJCXBhdGggPSBDb25maWd1cmF0aW9uczsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjUxNyw3ICsxNjUzNiw2IEBACiAJCQkJNjUwODZEQTcx
OUFDMTcxOTAwOUFGNDZCIC8qIENGTG9jYWxlU1BJLmggKi8sCiAJCQkJQ0U4MjQ1RUYxOUI2NzFC
QTAwQUMwMTIyIC8qIENGTmV0d29ya0Nvbm5lY3Rpb25DYWNoZVNQSS5oICovLAogCQkJCUNFMTI1
MjVBMUExQzAxODIwMDg2NDQ4MCAvKiBDRk5ldHdvcmtTUEkuaCAqLywKLQkJCQk0NDQ5QTQwNDFB
OTY0QjAwMDBCNjRBRDUgLyogQ29yZU1lZGlhU1BJLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNm
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2NzkwLDEwICsxNjgwOCw2IEBACiAJ
CQkJOTM1MDBGMzExM0ZERTNCRTAwOTlFQzI0IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLmggKi8s
CiAJCQkJNTJGNTJFMTAxNEEwMTM0RjAwQUNDMzk3IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLm1t
ICovLAogCQkJCTRCMjcwOTgxMEFGMkU1RTAwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkTWFjLm1tICov
LAotCQkJCUNERUE3NjJFMTQ2MDg0REUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwICov
LAotCQkJCUNERUE3NjJGMTQ2MDg0RUUwMDhCMzFGMSAvKiBQbGF0Zm9ybUNsb2NrQ0EuaCAqLywK
LQkJCQlDREFBOEQwNzE0RDM4NTYwMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NNLmggKi8sCi0J
CQkJQ0RBQThEMDgxNEQzODU2MDAwNjFFQTYwIC8qIFBsYXRmb3JtQ2xvY2tDTS5tbSAqLywKIAkJ
CQlCQ0FBNDg2RTE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaCAq
LywKIAkJCQlCQ0FBNDg2RDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlN
YWMubW0gKi8sCiAJCQkJQzVGNzY1QkExNEUxRUNGNDAwNkM4OTlCIC8qIFBsYXRmb3JtUGFzdGVi
b2FyZE1hYy5tbSAqLywKQEAgLTE2ODEwLDcgKzE2ODI0LDYgQEAKIAkJCQkwNzdBRjE0MTE4RjRC
MUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaCAqLywK
IAkJCQkwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb25NYWMubW0gKi8sCiAJCQkJMUE0QTk1NTEwQjRFRENGRjAwMkQ4QzNDIC8qIFNoYXJl
ZEJ1ZmZlck1hYy5tbSAqLywKLQkJCQkwQTQ4NDQ5ODBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExp
bmtpbmcuaCAqLywKIAkJCQk0QjMwNDNDODBBRTAzNzFEMDBBODI2NDcgLyogU291bmRNYWMubW0g
Ki8sCiAJCQkJODRCMkIyNEYwNTZCRjE1RjAwRDJCNzcxIC8qIFNTTEtleUdlbmVyYXRvck1hYy5j
cHAgKi8sCiAJCQkJOTNCMkQ4MTcwRjk5MjBFRTAwNkFFNkIyIC8qIFN1ZGRlblRlcm1pbmF0aW9u
Lm1tICovLApAQCAtMjE3MDQsOCArMjE3MTcsNiBAQAogCQkJCUIyQzNEOUVDMEQwMDZDMUQwMEVG
NkYyNiAvKiB0ZXh0ICovLAogCQkJCTQ5QUUyRDk0MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxh
dGlvblZhbHVlLmNwcCAqLywKIAkJCQk0OUFFMkQ5NTEzNEVFNUY5MDA3MjkyMEEgLyogQ2FsY3Vs
YXRpb25WYWx1ZS5oICovLAotCQkJCUNERUE3NjMzMTQ2MEI0NjIwMDhCMzFGMSAvKiBDbG9jay5j
cHAgKi8sCi0JCQkJQ0RFQTc2MkMxNDYwODIyNDAwOEIzMUYxIC8qIENsb2NrLmggKi8sCiAJCQkJ
Q0RFQTc2MzIxNDYwQUUyOTAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5jcHAgKi8sCiAJCQkJQ0RF
QTc2MzExNDYwQUUxQjAwOEIzMUYxIC8qIENsb2NrR2VuZXJpYy5oICovLAogCQkJCUMzMzBBMjIx
MTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCAqLywKQEAgLTIxNzY3LDggKzIxNzc4
LDggQEAKIAkJCQlBN0FEMkY4NjBFQzg5RDA3MDA4QUIwMDIgLyogTGlua0hhc2guaCAqLywKIAkJ
CQlDMDQ2RTFBQjEyMDhBOUZFMDBCQTJDRjcgLyogTG9jYWxpemVkU3RyaW5ncy5jcHAgKi8sCiAJ
CQkJOTM1MjA3QkQwOUJENDEwQTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAqLywKLQkJ
CQlBODIzOURGRTA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5jcHAgKi8sCiAJCQkJQTgyMzlE
RkYwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuaCAqLywKKwkJCQlBODIzOURGRTA5QjNDRjhB
MDBCNjA2NDEgLyogTG9nZ2luZy5jcHAgKi8sCiAJCQkJQ0RGMkIwMDMxODFGMDU5QzAwRjJCNDI0
IC8qIE1lZGlhRGVzY3JpcHRpb24uaCAqLywKIAkJCQlDRDY0MUVDNzE4MUVENjAxMDBFRTRDNDEg
LyogTWVkaWFTYW1wbGUuaCAqLywKIAkJCQk2NTdFREEwNjEzODVDQjk3MDA0RTA2NDUgLyogTWVt
b3J5UHJlc3N1cmVIYW5kbGVyLmNwcCAqLywKQEAgLTIxNzgxLDcgKzIxNzkyLDYgQEAKIAkJCQlD
NUY3NjVCNDE0RTFENDE0MDA2Qzg5OUIgLyogUGFzdGVib2FyZFN0cmF0ZWd5LmggKi8sCiAJCQkJ
QTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovLAog
CQkJCUJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2ZW50LmggKi8sCi0JCQkJ
QTcyM0Y3N0ExNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggKi8sCiAJ
CQkJNTE1RTVGRUYxOTUxMDE0NzAwODZDQTVFIC8qIFBsYXRmb3JtR2FtZXBhZC5oICovLAogCQkJ
CTkzNUM0NzY2MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCAqLywK
IAkJCQk5MzI4NzFCRjBCMjBERUI3MDA0OTAzNUEgLyogUGxhdGZvcm1NZW51RGVzY3JpcHRpb24u
aCAqLywKQEAgLTIxODY4LDYgKzIxODc4LDc1IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2Vz
VGFicyA9IDA7CiAJCX07CisJCUMyRjMxRjE5MUIwMDZCNDYwMDZBODhGQSAvKiBQQUwgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMyRjMxRjJCMUIwMDZG
MEIwMDZBODhGQSAvKiBzcGkgKi8sCisJCQkJQzJGMzFGMjgxQjAwNkU5RTAwNkE4OEZBIC8qIGNm
ICovLAorCQkJCUMyRjMxRjI0MUIwMDZEQTkwMDZBODhGQSAvKiBncmFwaGljcyAqLywKKwkJCQlD
MkYzMUYxRDFCMDA2Qzk4MDA2QTg4RkEgLyogbWFjICovLAorCQkJCTY1Qzk3QUYyMDhFQTkwODgw
MEFDRDI3MyAvKiBjb25maWcuaCAqLywKKwkJCQlDREVBNzYzMzE0NjBCNDYyMDA4QjMxRjEgLyog
Q2xvY2suY3BwICovLAorCQkJCUNERUE3NjJDMTQ2MDgyMjQwMDhCMzFGMSAvKiBDbG9jay5oICov
LAorCQkJCUE3MjNGNzdBMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5o
ICovLAorCQkJKTsKKwkJCXBhdGggPSBQQUw7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OworCQlDMkYzMUYxRDFCMDA2Qzk4MDA2QTg4RkEgLyogbWFjICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDREVBNzYyRTE0NjA4NERFMDA4QjMxRjEg
LyogUGxhdGZvcm1DbG9ja0NBLmNwcCAqLywKKwkJCQlDREVBNzYyRjE0NjA4NEVFMDA4QjMxRjEg
LyogUGxhdGZvcm1DbG9ja0NBLmggKi8sCisJCQkJQ0RBQThEMDcxNEQzODU2MDAwNjFFQTYwIC8q
IFBsYXRmb3JtQ2xvY2tDTS5oICovLAorCQkJCUNEQUE4RDA4MTREMzg1NjAwMDYxRUE2MCAvKiBQ
bGF0Zm9ybUNsb2NrQ00ubW0gKi8sCisJCQkJMEE0ODQ0OTgwQ0E0NENCMjAwQjdCRDQ4IC8qIFNv
ZnRMaW5raW5nLmggKi8sCisJCQkpOworCQkJbmFtZSA9IG1hYzsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisJCUMyRjMxRjI0MUIwMDZEQTkwMDZBODhGQSAvKiBncmFwaGljcyAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzJGMzFGMjUx
QjAwNkRCNzAwNkE4OEZBIC8qIGF2Zm91bmRhdGlvbiAqLywKKwkJCSk7CisJCQlwYXRoID0gZ3Jh
cGhpY3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDMkYzMUYyNTFCMDA2
REI3MDA2QTg4RkEgLyogYXZmb3VuZGF0aW9uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQlDRDY0MUVCRDE4MTlCMzU5MDBFRTRDNDEgLyogTWVkaWFUaW1l
QVZGb3VuZGF0aW9uLmNwcCAqLywKKwkJCQlDRDY0MUVCRTE4MTlCMzU5MDBFRTRDNDEgLyogTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGF2Zm91bmRhdGlvbjsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUMyRjMxRjI4MUIwMDZFOUUwMDZB
ODhGQSAvKiBjZiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNDQzODE3RkQxQTkxQjJGODAwNkUwNEYyIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCAqLywK
KwkJCQk0NDM4MTdGRTFBOTFCMkY4MDA2RTA0RjIgLyogQ29yZU1lZGlhU29mdExpbmsuaCAqLywK
KwkJCSk7CisJCQlwYXRoID0gY2Y7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owor
CQlDMkYzMUYyQjFCMDA2RjBCMDA2QTg4RkEgLyogc3BpICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMkYzMUYyQzFCMDA2RjE3MDA2QTg4RkEgLyogY2Yg
Ki8sCisJCQkpOworCQkJcGF0aCA9IHNwaTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCUMyRjMxRjJDMUIwMDZGMTcwMDZBODhGQSAvKiBjZiAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNDQ0OUE0MDQxQTk2NEIwMDAwQjY0QUQ1IC8q
IENvcmVNZWRpYVNQSS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBjZjsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2MyAvKiBhdWRpbyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMzY3Nyw2ICsy
Mzc1NiwyMiBAQAogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVh
ZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzI5RUMyNjFBRkMxMkY1MDA5RTBBODIgLyog
SGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUMyRjMxRjI5MUIwMDZF
RTQwMDZBODhGQSAvKiBDb3JlTWVkaWFTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJG
MzFGMkQxQjAwNkY2MjAwNkE4OEZBIC8qIENvcmVNZWRpYVNQSS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQzJGMzFGMUYxQjAwNkQyMzAwNkE4OEZBIC8qIFBsYXRmb3JtQ2xvY2tDQS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQzJGMzFGMjIxQjAwNkQzMDAwNkE4OEZBIC8qIFBsYXRmb3JtQ2xvY2tDTS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzJGMzFGMkYxQjAwNzAxMjAwNkE4OEZBIC8qIGNvbmZpZy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQzJGMzFGMjYxQjAwNkRGRTAwNkE4OEZBIC8qIE1lZGlhVGlt
ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJGMzFGMUIxQjAwNkM0RTAwNkE4
OEZBIC8qIENsb2NrLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMkYzMUYzMDFCMDA3MDYyMDA2QTg4
RkEgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyRjMxRjJF
MUIwMDZGQjkwMDZBODhGQSAvKiBTb2Z0TGlua2luZy5oIGluIEhlYWRlcnMgKi8sCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTQxN0RB
NkNDMTM3MzRFMDIwMDdDNTdGQiAvKiBIZWFkZXJzICovID0gewogCQkJaXNhID0gUEJYSGVhZGVy
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMjM3MDcs
NiArMjM4MDIsNyBAQAogCQkJZmlsZXMgPSAoCiAJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0
IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTFCMUQx
MEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTNCODk1QUYxOURDN0VEOTAwOUNBQTkzIC8qIE1pY3JvVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMjlBODEyMkUwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjMzMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRSb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjNCMEZCQjlDMUQw
MDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmggaW4gSGVhZGVycyAqLywKQEAg
LTIzOTgzLDcgKzI0MDc5LDYgQEAKIAkJCQk5MzMwOURERDA5OUU2NDkyMDA1NkU1ODEgLyogQ29t
cG9zaXRlRWRpdENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5RjJGNUEyMTA5MTkzOUEw
MDBEODdDQiAvKiBDb21wb3NpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjA4
RjEyQjAyNkY3MDBDMUEzNTkgLyogQ29uZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNjVDOTdBRjMw
OEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMUMw
OTc3RDNDMDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
QTE0NzA4MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM1RUI5ODEwRTgyMDcyNTAwQjI1OTY1IC8qIENvbnRlbnREYXRhLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI0MDE2LDggKzI0MTExLDYgQEAKIAkJCQkzM0QwMjEyRDEzMURC
MzdCMDA0MDkxQTggLyogQ29va2llU3RvcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFG
MjExNEY0RERFNjAwM0U3QTcxIC8qIENvb3JkaW5hdGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RTEyNTIzNzFBMTVCREJFMDA4NjQ0ODAgLyogQ29yZUdyYXBoaWNzU1BJLmggaW4gSGVhZGVycyAq
LywKLQkJCQk0NDM4MTgwMDFBOTFCMkY4MDA2RTA0RjIgLyogQ29yZU1lZGlhU29mdExpbmsuaCBp
biBIZWFkZXJzICovLAotCQkJCTQ0NDlBNDA1MUE5NjRCMDAwMEI2NEFENSAvKiBDb3JlTWVkaWFT
UEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDNjQ2NjI1MUExMkMzOEUwMDk0NjAzQyAvKiBDb3Jl
VGV4dFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxMjUyNDMxQTE2QzAxQTAwODY0NDgwIC8q
IENvcmVVSVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYyRjEyOUUxOEMxNTc2RjAwNUM1NEFG
IC8qIENvdW50ZWRVc2VyQWN0aXZpdHkuaCBpbiBIZWFkZXJzICovLApAQCAtMjU4MjQsNyArMjU5
MTcsNiBAQAogCQkJCTA3NjMwNkQwMTdFMTQ3OEQwMDVBN0M0RSAvKiBNZWRpYVN0cmVhbVRyYWNr
U291cmNlc0NhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzYzMDZEMzE3RTE0NzhEMDA1
QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwNzYzMDZFMzE3RTIyQTQzMDA1QTdDNEUgLyogTWVkaWFTdHJlYW1UcmFja1NvdXJjZXNS
ZXF1ZXN0Q2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQlDRDY0MUVDMDE4MTlCMzYwMDBFRTRD
NDEgLyogTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDYwQzBD
NzE5M0U4N0M3MDAzQzY1NkIgLyogTWVkaWFUaW1lUVRLaXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3MDU4NTIxMTdGREMxNDAwMDVGMkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDcwNTg1MjQxN0ZEQzE0MDAwNUYyQkNCIC8qIE1lZGlhVHJhY2tDb25z
dHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTg0MCw3ICsyNTkzMiw2IEBACiAJCQkJQTc4
RTUyNzAxMzQ2QkQxNzAwQUQ5QzMxIC8qIE1ldGVyU2hhZG93RWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzdERENEQTUxMzg0NTAxQzAwMDhCNzkzIC8qIE1IVE1MQXJjaGl2ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzdERENEQTcxMzg0NTAxQzAwMDhCNzkzIC8qIE1IVE1MUGFyc2VyLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk1M0I4OTVBRjE5REM3RUQ5MDA5Q0FBOTMgLyogTWljcm9UYXNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0REQ0Q5NTEzODQ0RkQ1MDAwOEI3OTMgLyogTUlNRUhl
YWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJDNEYwQzRFQjMwNDAwODMyODVGIC8qIE1J
TUVUeXBlUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyRjEwODY2MTYyQjZEQTgwMDlB
QzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MDE4LDcg
KzI2MTA5LDYgQEAKIAkJCQlCQzVDNzYyQjE0OTdGRTE0MDBCQzQ3NzUgLyogUGxhdGZvcm1FdmVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY2MDFFQkYxNEIzQjlBRDAwMTJDMEZFIC8qIFBsYXRm
b3JtRXZlbnRGYWN0b3J5SU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0FBNDg3MDE0QTA1MjUz
MDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUE3MjNGNzdCMTQ4NENBNEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFCNThGRDQxOTVBOTY0RDAwMjk5MEIwIC8qIFBsYXRmb3JtR2FtZXBh
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjgwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDU2MkY5NjExNTczRjg4RjAw
MzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjY0NzUsNyArMjY1
NjUsNiBAQAogCQkJCTUxQUJBRTFFMTAzQzE5MTMwMDhDNTI2MCAvKiBTb2NrZXRTdHJlYW1IYW5k
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEQ0QTM3MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTBENEEzODEwMzE2NUVF
MDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwQTQ4NDQ5OTBDQTQ0Q0IyMDBCN0JENDggLyogU29mdExpbmtpbmcuaCBpbiBIZWFkZXJzICov
LAogCQkJCTRCMzA0M0M3MEFFMDM3MDMwMEE4MjY0NyAvKiBTb3VuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODRBODFGM0UwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRDNBNDk2MjE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTI3MjUxLDYgKzI3MzQwLDIzIEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAq
LworCQkxQzI5RUMyNzFBRkMxMkY1MDA5RTBBODIgLyogUEFMICovID0geworCQkJaXNhID0gUEJY
TmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFDMjlFQzJDMUFGQzEy
RjYwMDlFMEE4MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdl
dCAiUEFMIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTFDMjlFQzI2MUFGQzEyRjUwMDlF
MEE4MiAvKiBIZWFkZXJzICovLAorCQkJCTFDMjlFQzI0MUFGQzEyRjUwMDlFMEE4MiAvKiBTb3Vy
Y2VzICovLAorCQkJCTFDMjlFQzI1MUFGQzEyRjUwMDlFMEE4MiAvKiBGcmFtZXdvcmtzICovLAor
CQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJ
KTsKKwkJCW5hbWUgPSBQQUw7CisJCQlwcm9kdWN0TmFtZSA9IFBBTDsKKwkJCXByb2R1Y3RSZWZl
cmVuY2UgPSAxQzI5RUMyODFBRkMxMkY1MDA5RTBBODIgLyogbGliUEFMLmEgKi87CisJCQlwcm9k
dWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsK
IAkJNDE3REE2Q0YxMzczNEUwMjAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydCAqLyA9IHsK
IAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA0
MTdEQTZEODEzNzM0RTQ3MDA3QzU3RkIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgIldlYkNvcmVUZXN0U3VwcG9ydCIgKi87CkBAIC0yNzI4OSw2ICsyNzM5
NSw3IEBACiAJCQlidWlsZFJ1bGVzID0gKAogCQkJKTsKIAkJCWRlcGVuZGVuY2llcyA9ICgKKwkJ
CQkxQ0VGQkExNDFBRkMxNDVFMDA2OUYyQTcgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJ
CQlERDA0MUZGMTA5RDlFMzI1MDAxMEFGMkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJ
CSk7CiAJCQluYW1lID0gV2ViQ29yZTsKQEAgLTI3MzQ3LDYgKzI3NDU0LDcgQEAKIAkJCQlERDA0
MUZCRTA5RDlEREJFMDAxMEFGMkEgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTQxN0RBNkNG
MTM3MzRFMDIwMDdDNTdGQiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi8sCiAJCQkJRTFCQTY2RjMx
NzQyQkRFMDAwQzIwMjUxIC8qIFdlYkNvcmVUZXN0U2hpbSAqLywKKwkJCQkxQzI5RUMyNzFBRkMx
MkY1MDA5RTBBODIgLyogUEFMICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KQEAgLTI3NDcyLDYgKzI3NTgwLDE4IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCQkxQzI5RUMyNDFBRkMxMkY1MDA5RTBBODIgLyogU291cmNlcyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUMyRjMxRjJBMUIwMDZFRUQwMDZBODhGQSAvKiBDb3Jl
TWVkaWFTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkYzMUYxQzFCMDA2QzU3MDA2
QTg4RkEgLyogQ2xvY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzJGMzFGMjMxQjAwNkQzODAw
NkE4OEZBIC8qIFBsYXRmb3JtQ2xvY2tDTS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMyRjMxRjFF
MUIwMDZEMUUwMDZBODhGQSAvKiBQbGF0Zm9ybUNsb2NrQ0EuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQzJGMzFGMjcxQjAwNkUwNTAwNkE4OEZBIC8qIE1lZGlhVGltZUFWRm91bmRhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJfTsKIAkJNDE3REE2Q0QxMzczNEUwMjAwN0M1N0ZCIC8qIFNvdXJjZXMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CkBAIC0yNzcxMyw3ICsyNzgzMyw2IEBACiAJCQkJQkNDMDY1ODAwRjNDRTFC
NzAwQ0QyRDg3IC8qIENsaWVudFJlY3RMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMx
QjNGMEE0NEVGQzcwMEY5OTJFMCAvKiBDbGlwYm9hcmRFdmVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1ODAzNzE2MTFBNjZGMDBBMDBCQUY1MTkgLyogQ2xpcFJlY3QuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQ0RFQTc2MzUxNDYwQjcxQTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNERUE3NjM0MTQ2MEI1NkYwMDhCMzFGMSAvKiBDbG9ja0dlbmVyaWMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOUJEOEE5NUExOEJFRkM3NjAwOTg3RTlBIC8qIENvbGxlY3Rpb25J
bmRleENhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTY2MEIwNTM4MTQwMDJDRTY0
RiAvKiBDb2xvci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3NzYxLDcgKzI3ODgwLDYgQEAKIAkJ
CQk3RUU2ODQ2MzEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxM0YwMUYxMTI3MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdl
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc0NkFGMjExNEY0RERFNjAwM0U3QTcyIC8qIENv
b3JkaW5hdGVzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQ0MzgxN0ZGMUE5MUIyRjgwMDZFMDRG
MiAvKiBDb3JlTWVkaWFTb2Z0TGluay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzVFQjk1MDBF
ODIwNTZCMDBCMjU5NjUgLyogQ291bnRlckRpcmVjdGl2ZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM5MkYxNTAwQUQxODYyMzAwNjkxQkQ0IC8qIENvdW50ZXJOb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUQwQjA1NTY5MDlDNjcwMDEwMDMwN0U0MyAvKiBDcmVhdGVMaW5rQ29tbWFuZC5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI5NDAwLDcgKzI5NTE4LDYgQEAKIAkJCQkwNzhFMDkwMzE3
RDE0Q0VFMDA0MjBBQTEgLyogTWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTA3RkZERTY4MTgxQUVENDIwMDcyRDQwOSAvKiBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzYzMDZEMjE3RTE0NzhEMDA1QTdDNEUgLyogTWVk
aWFTdHJlYW1UcmFja1NvdXJjZXNSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUNENjQx
RUJGMTgxOUIzNjAwMEVFNEM0MSAvKiBNZWRpYVRpbWVBVkZvdW5kYXRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0Q2MEMwQzYxOTNFODdDNzAwM0M2NTZCIC8qIE1lZGlhVGltZVFUS2l0Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDcwNTg1M0ExN0ZFMDc3MDAwNUYyQkNCIC8qIE1lZGlhVHJh
Y2tDb25zdHJhaW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3MDU4NTIzMTdGREMxNDAwMDVG
MkJDQiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTU0
Niw4ICsyOTY2Myw2IEBACiAJCQkJMEYxMzE2NDAxNkVEMENERTAwMzVDQzA0IC8qIFBsYXRmb3Jt
Q0FGaWx0ZXJzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ3MEJBMTUxODA3NEY4NjAwMDE5
MDhBIC8qIFBsYXRmb3JtQ0FMYXllci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OTU4NzgyMjEy
QTU3RERGMDA3MjM4QUMgLyogUGxhdGZvcm1DQUxheWVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCi0J
CQkJQ0RFQTc2MzAxNDYwOEE1MzAwOEIzMUYxIC8qIFBsYXRmb3JtQ2xvY2tDQS5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlDREFBOEQwQTE0RDcxQjJFMDA2MUVBNjAgLyogUGxhdGZvcm1DbG9ja0NN
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjY2MDFFQzAxNEIzQjlBRDAwMTJDMEZFIC8qIFBsYXRm
b3JtRXZlbnRGYWN0b3J5SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBQTQ4NkYxNEEwNTI1
MzAwODhGQUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRjU0NEY3ODgxNUNGQjJBODAwQUYzM0E4IC8qIFBsYXRmb3JtTG9jYWxlLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzA1MzEsNiArMzA2NDYsMTEgQEAKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAq
LworCQkxQ0VGQkExNDFBRkMxNDVFMDA2OUYyQTcgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9
IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAxQzI5RUMyNzFB
RkMxMkY1MDA5RTBBODIgLyogUEFMICovOworCQkJdGFyZ2V0UHJveHkgPSAxQ0VGQkExMzFBRkMx
NDVFMDA2OUYyQTcgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQk0MTdEQTZE
NTEzNzM0RTBEMDA3QzU3RkIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9
IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSA5M0YxOThBNTA4MjQ1RTU5MDAxRTlB
QkMgLyogV2ViQ29yZSAqLzsKQEAgLTMwNjMxLDYgKzMwNzUxLDI3IEBACiAJCQl9OwogCQkJbmFt
ZSA9IFByb2R1Y3Rpb247CiAJCX07CisJCTFDMjlFQzI5MUFGQzEyRjYwMDlFMEE4MiAvKiBEZWJ1
ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSAxQ0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEgLyogUEFMLnhjY29uZmln
ICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07
CisJCTFDMjlFQzJBMUFGQzEyRjYwMDlFMEE4MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFD
RkRCNTRCMUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxQzI5RUMyQjFBRkMx
MkY2MDA5RTBBODIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQ0ZEQjU0QjFBRkMxNzdF
MDA5NEVGMjEgLyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07
CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJNDE3REE2RDExMzczNEUwMjAwN0M1N0ZC
IC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNl
Q29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQxODE3MDdEMTM4NkVERjIwMDU3QUFBNCAvKiBXZWJD
b3JlVGVzdFN1cHBvcnQueGNjb25maWcgKi87CkBAIC0zMDc0MSw2ICszMDg4MiwxNiBAQAogCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25OYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJMUMyOUVDMkMxQUZDMTJGNjAwOUUwQTgyIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJQQUwiICovID0g
eworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCisJCQkJMUMyOUVDMjkxQUZDMTJGNjAwOUUwQTgyIC8qIERlYnVnICovLAorCQkJCTFDMjlF
QzJBMUFGQzEyRjYwMDlFMEE4MiAvKiBSZWxlYXNlICovLAorCQkJCTFDMjlFQzJCMUFGQzEyRjYw
MDlFMEE4MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
SXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247
CisJCX07CiAJCTQxN0RBNkQ4MTM3MzRFNDcwMDdDNTdGQiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiV2ViQ29yZVRlc3RTdXBwb3J0IiAqLyA9IHsKIAkJ
CWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29uZmlnLmggYi9Tb3VyY2UvV2ViQ29yZS9jb25m
aWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI5ZTBlYjFjZDRiYTBiNmIxOGE4
MjMyNDk2ZjhmNWVlZGY3YTU0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEz
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmIGRlZmluZWQoSEFWRV9D
T05GSUdfSCkgJiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0Up
Ci0jaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSNkZWZpbmUgVVNFX0ZJTEVfTE9DSyAxCi0j
ZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikgJiYgIVVTRShXSU5HREkpCi0jaW5jbHVkZSA8V2Vi
Q29yZS9XZWJDb3JlSGVhZGVyRGV0ZWN0aW9uLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPHd0Zi9F
eHBvcnRNYWNyb3MuaD4KLSNpbmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgotCi0jaW5j
bHVkZSA8cnVudGltZS9KU0V4cG9ydE1hY3Jvcy5oPgotCi0jaWZkZWYgX19BUFBMRV9fCi0jZGVm
aW5lIEhBVkVfRlVOQ19VU0xFRVAgMQotI2VuZGlmIC8qIF9fQVBQTEVfXyAqLwotCi0jaWYgT1Mo
V0lORE9XUykKLQotI2lmbmRlZiBfV0lOMzJfV0lOTlQKLSNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4
MDUwMgotI2VuZGlmCi0KLSNpZm5kZWYgV0lOVkVSCi0jZGVmaW5lIFdJTlZFUiAweDA1MDIKLSNl
bmRpZgotCi0vLyBDVVJMIG5lZWRzIHdpbnNvY2ssIHNvIGRvbid0IHByZXZlbnQgaW5jbHVzaW9u
IG9mIGl0Ci0jaWYgIVVTRShDVVJMKQotI2lmbmRlZiBfV0lOU09DS0FQSV8KLSNkZWZpbmUgX1dJ
TlNPQ0tBUElfIC8vIFByZXZlbnQgaW5jbHVzaW9uIG9mIHdpbnNvY2suaCBpbiB3aW5kb3dzLmgK
LSNlbmRpZgotI2VuZGlmCi0KLSNlbmRpZiAvKiBPUyhXSU5ET1dTKSAqLwotCi0vLyBVc2luZyBD
TWFrZSB3aXRoIFVuaXggbWFrZWZpbGVzIGRvZXMgbm90IHVzZSBwcmVmaXggaGVhZGVycy4KLSNp
ZiBQTEFURk9STShNQUMpICYmIGRlZmluZWQoQlVJTERJTkdfV0lUSF9DTUFLRSkKLSNpbmNsdWRl
ICJXZWJDb3JlUHJlZml4LmgiCi0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi0KLS8vIFRo
ZXNlIHVuZGVmcyBtYXRjaCB1cCB3aXRoIGRlZmluZXMgaW4gV2ViQ29yZVByZWZpeC5oIGZvciBN
YWMgT1MgWC4KLS8vIEhlbHBzIHVzIGNhdGNoIGlmIGFueW9uZSB1c2VzIG5ldyBvciBkZWxldGUg
YnkgYWNjaWRlbnQgaW4gY29kZSBhbmQgZG9lc24ndCBpbmNsdWRlICJjb25maWcuaCIuCi0jdW5k
ZWYgbmV3Ci0jdW5kZWYgZGVsZXRlCi0jaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KLQotI2lu
Y2x1ZGUgPGNpc282NDY+Ci0KLSNlbmRpZgotCi0jaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUu
aD4KLQotI2lmIENPTVBJTEVSKE1TVkMpCi0jZGVmaW5lIFNLSVBfU1RBVElDX0NPTlNUUlVDVE9S
U19PTl9NU1ZDIDEKLSNlbHNlCi0jZGVmaW5lIFNLSVBfU1RBVElDX0NPTlNUUlVDVE9SU19PTl9H
Q0MgMQotI2VuZGlmCi0KLSNpZiBQTEFURk9STShXSU4pCi0jaWYgUExBVEZPUk0oV0lOX0NBSVJP
KQotI3VuZGVmIFVTRV9DRwotI2RlZmluZSBVU0VfQ0FJUk8gMQotI2RlZmluZSBVU0VfQ1VSTCAx
Ci0jaWZuZGVmIF9XSU5TT0NLQVBJXwotI2RlZmluZSBfV0lOU09DS0FQSV8gLy8gUHJldmVudCBp
bmNsdXNpb24gb2Ygd2luc29jay5oIGluIHdpbmRvd3MuaAotI2VuZGlmCi0jZWxpZiAhVVNFKFdJ
TkdESSkKLSNkZWZpbmUgVVNFX0NHIDEKLSN1bmRlZiBVU0VfQ0FJUk8KLSN1bmRlZiBVU0VfQ1VS
TAotI2VuZGlmCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKLSNkZWZpbmUgVVNFX05FV19U
SEVNRSAxCi0jZW5kaWYKLQotI2lmIFVTRShDRykKLSNpZm5kZWYgQ0dGTE9BVF9ERUZJTkVECi0j
aWYgKGRlZmluZWQoX19MUDY0X18pICYmIF9fTFA2NF9fKSB8fCAoZGVmaW5lZChfX3g4Nl82NF9f
KSAmJiBfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9NX1g2NCkgfHwgZGVmaW5lZChfX2FtZDY0X18p
Ci10eXBlZGVmIGRvdWJsZSBDR0Zsb2F0OwotI2Vsc2UKLXR5cGVkZWYgZmxvYXQgQ0dGbG9hdDsK
LSNlbmRpZgotI2RlZmluZSBDR0ZMT0FUX0RFRklORUQgMQotI2VuZGlmCi0jZW5kaWYgLyogVVNF
KENHKSAqLwotCi0jaWYgUExBVEZPUk0oSU9TKQotI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9Q
TEFURk9STSB3a0dldFBsYXRmb3JtTmFtZUZvck5hdmlnYXRvcigpOwotI2RlZmluZSBXRUJDT1JF
X05BVklHQVRPUl9WRU5ET1Igd2tHZXRWZW5kb3JOYW1lRm9yTmF2aWdhdG9yKCk7Ci0jZW5kaWYK
LQotLy8gRklYTUU6IE1vdmUgdGhpcyB0byBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCwg
d2hpY2ggaXMgd2hlcmUgd2UgZGVmaW5lIFVTRV9BVkZPVU5EQVRJT04gb24gdGhlIE1hYy4KLS8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzMzNAotI2lmIFBMQVRG
T1JNKFdJTikgJiYgVVNFKENHKSAmJiBIQVZFKEFWQ0YpCi0jZGVmaW5lIFVTRV9BVkZPVU5EQVRJ
T04gMQotCi0jaWYgSEFWRShBVkNGX0xFR0lCTEVfT1VUUFVUKQotI2RlZmluZSBVU0VfQVZGT1VO
REFUSU9OIDEKLSNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQ
IDEKLSNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCAxCi0j
ZGVmaW5lIEhBVkVfTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUksgMQotI2VuZGlmCi0KLSNl
bmRpZgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaAppbmRleCBkN2RiMTVhNWJk
ZWQ2ZTNkMmFkZmI0NTQ4ZTNiN2VlMWM1MTMxY2U5Li41YjAxYjJmMGUyOGMwMDI4MTQwZTY2MmEw
NzY3MmJlNDM4NTc4ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKQEAg
LTM2LDkgKzM2LDEzIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKK25hbWVzcGFjZSBQQUwgeworY2xhc3MgQ2xvY2s7Cit9Cit1c2luZyBQ
QUw6OkNsb2NrOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENsb2NrOwogY2xhc3Mg
SFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIEV2ZW50OwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOGVkMWFkZThjZDhkM2ViOWJhNDY1ZWZlNGY1ZWEzOWJkNDI2Nzc3MC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9DbG9jay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQ2xvY2suaCIKLQotI2lmIFVTRShDT1JFTUVESUEpCi0gICAgI2luY2x1ZGUg
IlBsYXRmb3JtQ2xvY2tDTS5oIgotI2VsaWYgVVNFKENPUkVBVURJTykKLSAgICAjaW5jbHVkZSAi
UGxhdGZvcm1DbG9ja0NBLmgiCi0jZWxzZQotICAgICNpbmNsdWRlICJDbG9ja0dlbmVyaWMuaCIK
LSNlbmRpZgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotc3RkOjp1bmlxdWVfcHRyPENs
b2NrPiBDbG9jazo6Y3JlYXRlKCkKLXsKLSNpZiBVU0UoQ09SRU1FRElBKQotICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPFBsYXRmb3JtQ2xvY2tDTT4oKTsKLSNlbGlmIFVTRShDT1JFQVVESU8p
Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1DbG9ja0NBPigpOwotI2Vsc2UK
LSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDbG9ja0dlbmVyaWM+KCk7Ci0jZW5kaWYKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9DbG9jay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2Y0
MmU0MmIwM2FhMWE5MGRhNTQ3MWQwMjQzOTE4N2VhMDA5NGM2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2Nr
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIENsb2NrX2gKLSNkZWZpbmUgQ2xvY2tf
aAotCi0jaW5jbHVkZSA8bWVtb3J5PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENs
b2NrIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENsb2NrPiBjcmVhdGUo
KTsKLSAgICB2aXJ0dWFsIH5DbG9jaygpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHNldEN1cnJl
bnRUaW1lKGRvdWJsZSkgPSAwOwotICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29u
c3QgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRlKGRvdWJsZSkgPSAwOwotICAg
IHZpcnR1YWwgZG91YmxlIHBsYXlSYXRlKCkgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCB2b2lk
IHN0YXJ0KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBpc1J1bm5pbmcoKSBjb25zdCA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICBDbG9jaygpIHsg
fQotfTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtRXhwb3J0TWFjcm9zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9y
bUV4cG9ydE1hY3Jvcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzYzZmFlY2Jl
NjVjMjFhODhmMDk3OGIxNjU5YzZlN2YxNWQ4Nzk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXhw
b3J0TWFjcm9zLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqCi0gKiBUaGlzIGZpbGUgaGFuZGxlcyBzaGFy
ZWQgbGlicmFyeSBzeW1ib2wgZXhwb3J0IGRlY29yYXRpb25zLiBJdCBpcyByZWNvbW1lbmRlZAot
ICogdGhhdCBhbGwgV2ViS2l0IHByb2plY3RzIHVzZSB0aGVzZSBkZWZpbml0aW9ucyBzbyB0aGF0
IHN5bWJvbCBleHBvcnRzIHdvcmsKLSAqIHByb3Blcmx5IG9uIGFsbCBwbGF0Zm9ybXMgYW5kIGNv
bXBpbGVycyB0aGF0IFdlYktpdCBidWlsZHMgdW5kZXIuCi0gKi8KLSNpZm5kZWYgUGxhdGZvcm1F
eHBvcnRNYWNyb3NfaAotI2RlZmluZSBQbGF0Zm9ybUV4cG9ydE1hY3Jvc19oCi0KLSNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KLSNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+Ci0KLS8vIFNl
ZSBub3RlIGluIHd0Zi9QbGF0Zm9ybS5oIGZvciBtb3JlIGluZm8gb24gRVhQT1JUX01BQ1JPUy4K
LSNpZiBVU0UoRVhQT1JUX01BQ1JPUykKLQotI2lmICFQTEFURk9STShXSU4pCi0jZGVmaW5lIFdF
QkNPUkVfRVhQT1JUIFdURl9FWFBPUlQKLSNkZWZpbmUgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBP
UlQgV1RGX0VYUE9SVAotI2Vsc2UKLS8vIFdpbmRvd3MgbXVzdCBzZXQgdGhpcyBwZXItcHJvamVj
dAotI2VuZGlmCi0KLSNlbHNlIC8vICFVU0UoRVhQT1JUX01BQ1JPUykKLSNkZWZpbmUgV0VCQ09S
RV9FWFBPUlQKLSNkZWZpbmUgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQKLQotI2VuZGlmIC8v
IFVTRShFWFBPUlRfTUFDUk9TKQotCi0jZW5kaWYgLy8gUGxhdGZvcm1FeHBvcnRNYWNyb3NfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ29yZU1lZGlhU29mdExpbmsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ29yZU1lZGlhU29mdExpbmsuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTFkMWE3ZjRiMzhhOGI3OGI1NjM1YmY5NTY3
YjExMGM1ODYwMGVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLQotI2lmIFVTRShBVkZPVU5EQVRJT04pCi0vLyBGSVhNRTogU2hvdWxkIGJlIFVTRShD
T1JFTUVESUEpLCBidXQgdGhpcyBpc24ndCBjdXJyZW50bHkgZGVmaW5lZCBvbiBXaW5kb3dzLgot
Ci0jaW5jbHVkZSAiQ29yZU1lZGlhU1BJLmgiCi0jaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKLQot
U09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSkKLQotU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTUJsb2NrQnVm
ZmVyQ29weURhdGFCeXRlcywgT1NTdGF0dXMsIChDTUJsb2NrQnVmZmVyUmVmIHRoZVNvdXJjZUJ1
ZmZlciwgc2l6ZV90IG9mZnNldFRvRGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIHZvaWQqIGRlc3Rp
bmF0aW9uKSwgKHRoZVNvdXJjZUJ1ZmZlciwgb2Zmc2V0VG9EYXRhLCBkYXRhTGVuZ3RoLCBkZXN0
aW5hdGlvbikpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVk
aWEsIENNQmxvY2tCdWZmZXJHZXREYXRhTGVuZ3RoLCBzaXplX3QsIChDTUJsb2NrQnVmZmVyUmVm
IHRoZUJ1ZmZlciksICh0aGVCdWZmZXIpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uo
V2ViQ29yZSwgQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZE
aWN0aW9uYXJ5UmVmLCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQotU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1
ZmZlckdldERhdGFCdWZmZXIsIENNQmxvY2tCdWZmZXJSZWYsIChDTVNhbXBsZUJ1ZmZlclJlZiBz
YnVmKSwgKHNidWYpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29y
ZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldEZvcm1hdERlc2NyaXB0aW9uLCBDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKLVNPRlRfTElOS19G
VU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRT
YW1wbGVUaW1pbmdJbmZvLCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRl
bUluZGV4IHNhbXBsZUluZGV4LCBDTVNhbXBsZVRpbWluZ0luZm8qIHRpbWluZ0luZm9PdXQpLCAo
c2J1Ziwgc2FtcGxlSW5kZXgsIHRpbWluZ0luZm9PdXQpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWVDb21wYXJlLCBpbnQzMl90LCAoQ01U
aW1lIHRpbWUxLCBDTVRpbWUgdGltZTIpLCAodGltZTEsIHRpbWUyKSkKLVNPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1lR2V0U2Vjb25kcywgRmxv
YXQ2NCwgKENNVGltZSB0aW1lKSwgKHRpbWUpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWVNYWtlLCBDTVRpbWUsIChpbnQ2NF90IHZhbHVl
LCBpbnQzMl90IHRpbWVzY2FsZSksICh2YWx1ZSwgdGltZXNjYWxlKSkKLVNPRlRfTElOS19GVU5D
VElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1lTWFrZVdpdGhTZWNvbmRz
LCBDTVRpbWUsIChGbG9hdDY0IHNlY29uZHMsIGludDMyX3QgcHJlZmVycmVkVGltZVNjYWxlKSwg
KHNlY29uZHMsIHByZWZlcnJlZFRpbWVTY2FsZSkpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZVJhbmdlR2V0RW5kLCBDTVRpbWUsIChDTVRp
bWVSYW5nZSByYW5nZSksIChyYW5nZSkpCi0KLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
KFdlYkNvcmUsIENvcmVNZWRpYSwga0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fU2FtcGxl
RGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcywgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RB
TlRfRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRU
eXBlX0VuZCwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJD
b3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSwgQ0ZTdHJp
bmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEs
IGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0LCBDRlN0cmluZ1JlZikKLVNPRlRfTElO
S19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0
dHJpYnV0ZV9BbGlnbm1lbnQsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9T
T1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0JhY2tncm91
bmRDb2xvckFSR0IsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Uo
V2ViQ29yZSwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0Jhc2VGb250U2l6ZVBl
cmNlbnRhZ2VSZWxhdGl2ZVRvVmlkZW9IZWlnaHQsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX0NP
TlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmli
dXRlX0JvbGRTdHlsZSwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJD
RShXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQ2hhcmFjdGVyQmFj
a2dyb3VuZENvbG9yQVJHQiwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NP
VVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9udEZhbWls
eU5hbWUsIENGU3RyaW5nUmVmKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0ZvcmVncm91bmRDb2xvckFSR0Is
IENGU3RyaW5nUmVmKQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29y
ZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0l0YWxpY1N0eWxlLCBDRlN0cmluZ1JlZikK
LVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwga0NNVGV4
dE1hcmt1cEF0dHJpYnV0ZV9PcnRob2dvbmFsTGluZVBvc2l0aW9uUGVyY2VudGFnZVJlbGF0aXZl
VG9Xcml0aW5nRGlyZWN0aW9uLCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19DT05TVEFOVF9GT1Jf
U09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9SZWxhdGl2
ZUZvbnRTaXplLCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdl
YkNvcmUsIENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9UZXh0UG9zaXRpb25QZXJj
ZW50YWdlUmVsYXRpdmVUb1dyaXRpbmdEaXJlY3Rpb24sIENGU3RyaW5nUmVmKQotU09GVF9MSU5L
X0NPTlNUQU5UX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBrQ01UZXh0TWFya3VwQXR0
cmlidXRlX1VuZGVybGluZVN0eWxlLCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19DT05TVEFOVF9G
T1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9WZXJ0
aWNhbExheW91dCwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShX
ZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfV3JpdGluZ0RpcmVjdGlv
blNpemVQZXJjZW50YWdlLCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09V
UkNFKFdlYkNvcmUsIENvcmVNZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0X0xlZnRUb1JpZ2h0
LCBDRlN0cmluZ1JlZikKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENv
cmVNZWRpYSwga0NNVGV4dFZlcnRpY2FsTGF5b3V0X1JpZ2h0VG9MZWZ0LCBDRlN0cmluZ1JlZikK
LVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwga0NNVGlt
ZUludmFsaWQsIENNVGltZSkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUs
IENvcmVNZWRpYSwga0NNVGltZVplcm8sIENNVGltZSkKLQotI2lmIFBMQVRGT1JNKENPQ09BKQot
U09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTUZvcm1h
dERlc2NyaXB0aW9uR2V0TWVkaWFTdWJUeXBlLCBGb3VyQ2hhckNvZGUsIChDTUZvcm1hdERlc2Ny
aXB0aW9uUmVmIGRlc2MpLCAoZGVzYykpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShX
ZWJDb3JlLCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVR5cGUsIENNTWVk
aWFUeXBlLCAoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQotU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTU5vdGlmaWNhdGlvbkNl
bnRlckdldERlZmF1bHRMb2NhbENlbnRlciwgQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsICh2b2lk
KSwgKCkpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEs
IENNTm90aWZpY2F0aW9uQ2VudGVyQWRkTGlzdGVuZXIsIE9TU3RhdHVzLCAoQ01Ob3RpZmljYXRp
b25DZW50ZXJSZWYgY2VudGVyLCBjb25zdCB2b2lkKiBsaXN0ZW5lciwgQ01Ob3RpZmljYXRpb25D
YWxsYmFjayBjYWxsYmFjaywgQ0ZTdHJpbmdSZWYgbm90aWZpY2F0aW9uLCBjb25zdCB2b2lkKiBv
YmplY3QsIFVJbnQzMiBmbGFncyksIChjZW50ZXIsIGxpc3RlbmVyLCBjYWxsYmFjaywgbm90aWZp
Y2F0aW9uLCBvYmplY3QsIGZsYWdzKSkKLVNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdl
YkNvcmUsIENvcmVNZWRpYSwgQ01Ob3RpZmljYXRpb25DZW50ZXJSZW1vdmVMaXN0ZW5lciwgT1NT
dGF0dXMsIChDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiBjZW50ZXIsIGNvbnN0IHZvaWQqIGxpc3Rl
bmVyLCBDTU5vdGlmaWNhdGlvbkNhbGxiYWNrIGNhbGxiYWNrLCBDRlN0cmluZ1JlZiBub3RpZmlj
YXRpb24sIGNvbnN0IHZvaWQqIG9iamVjdCksIChjZW50ZXIsIGxpc3RlbmVyLCBjYWxsYmFjaywg
bm90aWZpY2F0aW9uLCBvYmplY3QpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2Vi
Q29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNhbGxGb3JFYWNoU2FtcGxlLCBPU1N0YXR1
cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIE9TU3RhdHVzICgqY2FsbGJhY2spKCBDTVNhbXBs
ZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXIsIENNSXRlbUNvdW50IGluZGV4LCB2b2lkICpyZWZjb24p
LCB2b2lkICpyZWZjb24pLCAoc2J1ZiwgY2FsbGJhY2ssIHJlZmNvbikpCi1TT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ3JlYXRl
LCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ01CbG9ja0J1ZmZlclJlZiBk
YXRhQnVmZmVyLCBCb29sZWFuIGRhdGFSZWFkeSwgQ01TYW1wbGVCdWZmZXJNYWtlRGF0YVJlYWR5
Q2FsbGJhY2sgbWFrZURhdGFSZWFkeUNhbGxiYWNrLCB2b2lkICptYWtlRGF0YVJlYWR5UmVmY29u
LCBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uLCBDTUl0ZW1Db3VudCBu
dW1TYW1wbGVzLCBDTUl0ZW1Db3VudCBudW1TYW1wbGVUaW1pbmdFbnRyaWVzLCBjb25zdCBDTVNh
bXBsZVRpbWluZ0luZm8gKnNhbXBsZVRpbWluZ0FycmF5LCBDTUl0ZW1Db3VudCBudW1TYW1wbGVT
aXplRW50cmllcywgY29uc3Qgc2l6ZV90ICpzYW1wbGVTaXplQXJyYXksIENNU2FtcGxlQnVmZmVy
UmVmICpzQnVmT3V0KSwgKGFsbG9jYXRvciwgZGF0YUJ1ZmZlciwgZGF0YVJlYWR5LCBtYWtlRGF0
YVJlYWR5Q2FsbGJhY2ssIG1ha2VEYXRhUmVhZHlSZWZjb24sIGZvcm1hdERlc2NyaXB0aW9uLCBu
dW1TYW1wbGVzLCBudW1TYW1wbGVUaW1pbmdFbnRyaWVzLCBzYW1wbGVUaW1pbmdBcnJheSwgbnVt
U2FtcGxlU2l6ZUVudHJpZXMsIHNhbXBsZVNpemVBcnJheSwgc0J1Zk91dCkpCi1TT0ZUX0xJTktf
RlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ3Jl
YXRlQ29weSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNU2FtcGxlQnVm
ZmVyUmVmIHNidWYsIENNU2FtcGxlQnVmZmVyUmVmICpzYnVmQ29weU91dCksIChhbGxvY2F0b3Is
IHNidWYsIHNidWZDb3B5T3V0KSkKLVNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNv
cmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJDcmVhdGVDb3B5V2l0aE5ld1RpbWluZywgT1NT
dGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNU2FtcGxlQnVmZmVyUmVmIG9yaWdp
bmFsU0J1ZiwgQ01JdGVtQ291bnQgbnVtU2FtcGxlVGltaW5nRW50cmllcywgY29uc3QgQ01TYW1w
bGVUaW1pbmdJbmZvICpzYW1wbGVUaW1pbmdBcnJheSwgQ01TYW1wbGVCdWZmZXJSZWYgKnNCdWZD
b3B5T3V0KSwgKGFsbG9jYXRvciwgb3JpZ2luYWxTQnVmLCBudW1TYW1wbGVUaW1pbmdFbnRyaWVz
LCBzYW1wbGVUaW1pbmdBcnJheSwgc0J1ZkNvcHlPdXQpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldERlY29kZVRpbWVT
dGFtcCwgQ01UaW1lLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKLVNPRlRfTElO
S19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJH
ZXREdXJhdGlvbiwgQ01UaW1lLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKLVNP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVC
dWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAsIENNVGltZSwgKENNU2FtcGxlQnVmZmVyUmVm
IHNidWYpLCAoc2J1ZikpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBD
b3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheSwgQ0ZBcnJh
eVJlZiwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIEJvb2xlYW4gY3JlYXRlSWZOZWNlc3Nhcnkp
LCAoc2J1ZiwgY3JlYXRlSWZOZWNlc3NhcnkpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VS
Q0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9B
cnJheSwgT1NTdGF0dXMsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmLCBDTUl0ZW1Db3VudCB0aW1p
bmdBcnJheUVudHJpZXMsIENNU2FtcGxlVGltaW5nSW5mbyAqdGltaW5nQXJyYXlPdXQsIENNSXRl
bUNvdW50ICp0aW1pbmdBcnJheUVudHJpZXNOZWVkZWRPdXQpLCAoc2J1ZiwgdGltaW5nQXJyYXlF
bnRyaWVzLCB0aW1pbmdBcnJheU91dCwgdGltaW5nQXJyYXlFbnRyaWVzTmVlZGVkT3V0KSkKLVNP
RlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVC
dWZmZXJHZXRUb3RhbFNhbXBsZVNpemUsIHNpemVfdCwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYp
LCAoc2J1ZikpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVk
aWEsIENNU2V0QXR0YWNobWVudCwgdm9pZCwgKENNQXR0YWNobWVudEJlYXJlclJlZiB0YXJnZXQs
IENGU3RyaW5nUmVmIGtleSwgQ0ZUeXBlUmVmIHZhbHVlLCBDTUF0dGFjaG1lbnRNb2RlIGF0dGFj
aG1lbnRNb2RlKSwgKHRhcmdldCwga2V5LCB2YWx1ZSwgYXR0YWNobWVudE1vZGUpKQotU09GVF9M
SU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWViYXNlQ3Jl
YXRlV2l0aE1hc3RlckNsb2NrLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwg
Q01DbG9ja1JlZiBtYXN0ZXJDbG9jaywgQ01UaW1lYmFzZVJlZiAqdGltZWJhc2VPdXQpLCAoYWxs
b2NhdG9yLCBtYXN0ZXJDbG9jaywgdGltZWJhc2VPdXQpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWViYXNlR2V0VGltZSwgQ01UaW1lLCAo
Q01UaW1lYmFzZVJlZiB0aW1lYmFzZSksICh0aW1lYmFzZSkpCi1TT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZWJhc2VTZXRSYXRlLCBPU1N0YXR1
cywgKENNVGltZWJhc2VSZWYgdGltZWJhc2UsIEZsb2F0NjQgcmF0ZSksICh0aW1lYmFzZSwgcmF0
ZSkpCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENN
VGltZWJhc2VTZXRUaW1lLCBPU1N0YXR1cywgKENNVGltZWJhc2VSZWYgdGltZWJhc2UsIENNVGlt
ZSB0aW1lKSwgKHRpbWViYXNlLCB0aW1lKSkKLVNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1lQ29weUFzRGljdGlvbmFyeSwgQ0ZEaWN0aW9uYXJ5
UmVmLCAoQ01UaW1lIHRpbWUsIENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciksICh0aW1lLCBhbGxv
Y2F0b3IpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlh
LCBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXREaW1lbnNpb25zLCBDTVZpZGVvRGltZW5zaW9u
cywgKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlvblJlZiB2aWRlb0Rlc2MpLCAodmlkZW9EZXNjKSkK
LVNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01WaWRl
b0Zvcm1hdERlc2NyaXB0aW9uR2V0UHJlc2VudGF0aW9uRGltZW5zaW9ucywgQ0dTaXplLCAoQ01W
aWRlb0Zvcm1hdERlc2NyaXB0aW9uUmVmIHZpZGVvRGVzYywgQm9vbGVhbiB1c2VQaXhlbEFzcGVj
dFJhdGlvLCBCb29sZWFuIHVzZUNsZWFuQXBlcnR1cmUpLCAodmlkZW9EZXNjLCB1c2VQaXhlbEFz
cGVjdFJhdGlvLCB1c2VDbGVhbkFwZXJ0dXJlKSkKLQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9T
T1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlz
cGxheSwgQ0ZTdHJpbmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3Jl
LCBDb3JlTWVkaWEsIGtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfTm90U3luYywgQ0ZTdHJpbmdSZWYp
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVNh
bXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRGlzcGxheUVtcHR5TWVkaWFJbW1lZGlhdGVseSwgQ0ZT
dHJpbmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVk
aWEsIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRLZXlfRHJhaW5BZnRlckRlY29kaW5nLCBDRlN0
cmluZ1JlZikKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRp
YSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9FbXB0eU1lZGlhLCBDRlN0cmluZ1JlZikK
LVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwga0NNU2Ft
cGxlQnVmZmVyQXR0YWNobWVudEtleV9SZXNldERlY29kZXJCZWZvcmVEZWNvZGluZywgQ0ZTdHJp
bmdSZWYpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEs
IGtDTVRpbWViYXNlTm90aWZpY2F0aW9uX0VmZmVjdGl2ZVJhdGVDaGFuZ2VkLCBDRlN0cmluZ1Jl
ZikKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVNZWRpYSwga0NN
VGltZWJhc2VOb3RpZmljYXRpb25fVGltZUp1bXBlZCwgQ0ZTdHJpbmdSZWYpCi0jZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCi0KLSNpZiBQTEFURk9STShJT1MpCi1TT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNQXVkaW9DbG9ja0NyZWF0ZSwgT1NTdGF0
dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNQ2xvY2tSZWYgKmNsb2NrT3V0KSwgKGFs
bG9jYXRvciwgY2xvY2tPdXQpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgQ29yZU1lZGlhLCBDTVRpbWVNYXhpbXVtLCBDTVRpbWUsIChDTVRpbWUgdGltZTEsIENNVGlt
ZSB0aW1lMiksICh0aW1lMSwgdGltZTIpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Uo
V2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWVNaW5pbXVtLCBDTVRpbWUsIChDTVRpbWUgdGltZTEs
IENNVGltZSB0aW1lMiksICh0aW1lMSwgdGltZTIpKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9T
T1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWVSYW5nZUNvbnRhaW5zVGltZSwgQm9vbGVh
biwgKENNVGltZVJhbmdlIHJhbmdlLCBDTVRpbWUgdGltZSksIChyYW5nZSwgdGltZSkpCi1TT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZVJhbmdl
TWFrZSwgQ01UaW1lUmFuZ2UsIChDTVRpbWUgc3RhcnQsIENNVGltZSBkdXJhdGlvbiksIChzdGFy
dCwgZHVyYXRpb24pKQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29y
ZU1lZGlhLCBDTVRpbWVTdWJ0cmFjdCwgQ01UaW1lLCAoQ01UaW1lIG1pbnVlbmQsIENNVGltZSBz
dWJ0cmFoZW5kKSwgKG1pbnVlbmQsIHN1YnRyYWhlbmQpKQotCi1TT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX1NPVVJDRShXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRlLCBDTVRpbWUp
Ci0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQotCi0jaWYgUExBVEZPUk0oTUFDKQotU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTUF1ZGlvRGV2aWNlQ2xv
Y2tDcmVhdGUsIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JSZWYgYWxsb2NhdG9yLCBDRlN0cmluZ1Jl
ZiBkZXZpY2VVSUQsIENNQ2xvY2tSZWYgKmNsb2NrT3V0KSwgKGFsbG9jYXRvciwgZGV2aWNlVUlE
LCBjbG9ja091dCkpCi0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQotCi0jaWYgUExBVEZPUk0oV0lO
KQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRp
bWVBZGQsIENNVGltZSwgKENNVGltZSBhZGRlbmQxLCBDTVRpbWUgYWRkZW5kMiksIChhZGRlbmQx
LCBhZGRlbmQyKSkKLVNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNvcmUsIENvcmVN
ZWRpYSwgQ01UaW1lTWFrZUZyb21EaWN0aW9uYXJ5LCBDTVRpbWUsIChDRkRpY3Rpb25hcnlSZWYg
ZGljdCksIChkaWN0KSkKLSNlbmRpZiAvLyBQTEFURk9STShXSU4pCi0KLSNlbmRpZiAvLyBVU0Uo
QVZGT1VOREFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ29y
ZU1lZGlhU29mdExpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMDIyNGMxZTU5MzM4NmEw
YTMzZmJhZjcyMGU2YTFjMDEyODQxMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvQ29yZU1lZGlhU29mdExp
bmsuaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgQ29yZU1lZGlhU29mdExpbmtfaAotI2RlZmluZSBDb3JlTWVkaWFTb2Z0TGlua19oCi0KLSNp
ZiBVU0UoQVZGT1VOREFUSU9OKQotLy8gRklYTUU6IFNob3VsZCBiZSBVU0UoQ09SRU1FRElBKSwg
YnV0IHRoaXMgaXNuJ3QgY3VycmVudGx5IGRlZmluZWQgb24gV2luZG93cy4KLQotI2luY2x1ZGUg
IkNvcmVNZWRpYVNQSS5oIgotI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCi0KLVNPRlRfTElOS19G
UkFNRVdPUktfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEpCi0KLVNPRlRfTElOS19GVU5D
VElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckNvcHlEYXRh
Qnl0ZXMsIE9TU3RhdHVzLCAoQ01CbG9ja0J1ZmZlclJlZiB0aGVTb3VyY2VCdWZmZXIsIHNpemVf
dCBvZmZzZXRUb0RhdGEsIHNpemVfdCBkYXRhTGVuZ3RoLCB2b2lkKiBkZXN0aW5hdGlvbiksICh0
aGVTb3VyY2VCdWZmZXIsIG9mZnNldFRvRGF0YSwgZGF0YUxlbmd0aCwgZGVzdGluYXRpb24pKQot
I2RlZmluZSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyBzb2Z0TGlua19Db3JlTWVkaWFfQ01C
bG9ja0J1ZmZlckNvcHlEYXRhQnl0ZXMKLVNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdl
YkNvcmUsIENvcmVNZWRpYSwgQ01CbG9ja0J1ZmZlckdldERhdGFMZW5ndGgsIHNpemVfdCwgKENN
QmxvY2tCdWZmZXJSZWYgdGhlQnVmZmVyKSwgKHRoZUJ1ZmZlcikpCi0jZGVmaW5lIENNQmxvY2tC
dWZmZXJHZXREYXRhTGVuZ3RoIHNvZnRMaW5rX0NvcmVNZWRpYV9DTUJsb2NrQnVmZmVyR2V0RGF0
YUxlbmd0aAotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlh
LCBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9ucywgQ0ZEaWN0aW9uYXJ5UmVmLCAoQ01G
b3JtYXREZXNjcmlwdGlvblJlZiBkZXNjKSwgKGRlc2MpKQotI2RlZmluZSBDTUZvcm1hdERlc2Ny
aXB0aW9uR2V0RXh0ZW5zaW9ucyBzb2Z0TGlua19Db3JlTWVkaWFfQ01Gb3JtYXREZXNjcmlwdGlv
bkdldEV4dGVuc2lvbnMKLVNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENv
cmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyLCBDTUJsb2NrQnVmZmVyUmVmLCAo
Q01TYW1wbGVCdWZmZXJSZWYgc2J1ZiksIChzYnVmKSkKLSNkZWZpbmUgQ01TYW1wbGVCdWZmZXJH
ZXREYXRhQnVmZmVyIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZm
ZXIKLVNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01T
YW1wbGVCdWZmZXJHZXRGb3JtYXREZXNjcmlwdGlvbiwgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiwg
KENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAoc2J1ZikpCi0jZGVmaW5lIENNU2FtcGxlQnVmZmVy
R2V0Rm9ybWF0RGVzY3JpcHRpb24gc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0
Rm9ybWF0RGVzY3JpcHRpb24KLVNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUs
IENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvLCBPU1N0YXR1cywg
KENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUluZGV4IHNhbXBsZUluZGV4LCBDTVNhbXBs
ZVRpbWluZ0luZm8qIHRpbWluZ0luZm9PdXQpLCAoc2J1Ziwgc2FtcGxlSW5kZXgsIHRpbWluZ0lu
Zm9PdXQpKQotI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm8gc29mdExp
bmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5nSW5mbwotU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWVDb21wYXJlLCBp
bnQzMl90LCAoQ01UaW1lIHRpbWUxLCBDTVRpbWUgdGltZTIpLCAodGltZTEsIHRpbWUyKSkKLSNk
ZWZpbmUgQ01UaW1lQ29tcGFyZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01UaW1lQ29tcGFyZQotU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWVHZXRT
ZWNvbmRzLCBGbG9hdDY0LCAoQ01UaW1lIHRpbWUpLCAodGltZSkpCi0jZGVmaW5lIENNVGltZUdl
dFNlY29uZHMgc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZUdldFNlY29uZHMKLVNPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1lTWFrZSwgQ01UaW1l
LCAoaW50NjRfdCB2YWx1ZSwgaW50MzJfdCB0aW1lc2NhbGUpLCAodmFsdWUsIHRpbWVzY2FsZSkp
Ci0jZGVmaW5lIENNVGltZU1ha2Ugc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZU1ha2UKLVNPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1lTWFrZVdp
dGhTZWNvbmRzLCBDTVRpbWUsIChGbG9hdDY0IHNlY29uZHMsIGludDMyX3QgcHJlZmVycmVkVGlt
ZVNjYWxlKSwgKHNlY29uZHMsIHByZWZlcnJlZFRpbWVTY2FsZSkpCi0jZGVmaW5lIENNVGltZU1h
a2VXaXRoU2Vjb25kcyBzb2Z0TGlua19Db3JlTWVkaWFfQ01UaW1lTWFrZVdpdGhTZWNvbmRzCi1T
T0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZVJh
bmdlR2V0RW5kLCBDTVRpbWUsIChDTVRpbWVSYW5nZSByYW5nZSksIChyYW5nZSkpCi0jZGVmaW5l
IENNVGltZVJhbmdlR2V0RW5kIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVRpbWVSYW5nZUdldEVuZAot
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTUZv
cm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1NhbXBsZURlc2NyaXB0aW9uRXh0ZW5zaW9uQXRvbXMs
IENGU3RyaW5nUmVmKQotI2RlZmluZSBrQ01Gb3JtYXREZXNjcmlwdGlvbkV4dGVuc2lvbl9TYW1w
bGVEZXNjcmlwdGlvbkV4dGVuc2lvbkF0b21zIGdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3Jp
cHRpb25FeHRlbnNpb25fU2FtcGxlRGVzY3JpcHRpb25FeHRlbnNpb25BdG9tcygpCi1TT0ZUX0xJ
TktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBB
bGlnbm1lbnRUeXBlX0VuZCwgQ0ZTdHJpbmdSZWYpCi0jZGVmaW5lIGtDTVRleHRNYXJrdXBBbGln
bm1lbnRUeXBlX0VuZCBnZXRfQ29yZU1lZGlhX2tDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX0Vu
ZCgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtD
TVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSwgQ0ZTdHJpbmdSZWYpCi0jZGVmaW5lIGtD
TVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX01pZGRsZSBnZXRfQ29yZU1lZGlhX2tDTVRleHRNYXJr
dXBBbGlnbm1lbnRUeXBlX01pZGRsZSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihX
ZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBbGlnbm1lbnRUeXBlX1N0YXJ0LCBDRlN0
cmluZ1JlZikKLSNkZWZpbmUga0NNVGV4dE1hcmt1cEFsaWdubWVudFR5cGVfU3RhcnQgZ2V0X0Nv
cmVNZWRpYV9rQ01UZXh0TWFya3VwQWxpZ25tZW50VHlwZV9TdGFydCgpCi1TT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1
dGVfQWxpZ25tZW50LCBDRlN0cmluZ1JlZikKLSNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0
ZV9BbGlnbm1lbnQgZ2V0X0NvcmVNZWRpYV9rQ01UZXh0TWFya3VwQXR0cmlidXRlX0FsaWdubWVu
dCgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtD
TVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENvbG9yQVJHQiwgQ0ZTdHJpbmdSZWYpCi0j
ZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENvbG9yQVJHQiBnZXRfQ29y
ZU1lZGlhX2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENvbG9yQVJHQigpCi1TT0ZU
X0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJr
dXBBdHRyaWJ1dGVfQmFzZUZvbnRTaXplUGVyY2VudGFnZVJlbGF0aXZlVG9WaWRlb0hlaWdodCwg
Q0ZTdHJpbmdSZWYpCi0jZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFzZUZvbnRTaXpl
UGVyY2VudGFnZVJlbGF0aXZlVG9WaWRlb0hlaWdodCBnZXRfQ29yZU1lZGlhX2tDTVRleHRNYXJr
dXBBdHRyaWJ1dGVfQmFzZUZvbnRTaXplUGVyY2VudGFnZVJlbGF0aXZlVG9WaWRlb0hlaWdodCgp
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfQm9sZFN0eWxlLCBDRlN0cmluZ1JlZikKLSNkZWZpbmUga0NNVGV4
dE1hcmt1cEF0dHJpYnV0ZV9Cb2xkU3R5bGUgZ2V0X0NvcmVNZWRpYV9rQ01UZXh0TWFya3VwQXR0
cmlidXRlX0JvbGRTdHlsZSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3Jl
LCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQ2hhcmFjdGVyQmFja2dyb3VuZENv
bG9yQVJHQiwgQ0ZTdHJpbmdSZWYpCi0jZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQ2hh
cmFjdGVyQmFja2dyb3VuZENvbG9yQVJHQiBnZXRfQ29yZU1lZGlhX2tDTVRleHRNYXJrdXBBdHRy
aWJ1dGVfQ2hhcmFjdGVyQmFja2dyb3VuZENvbG9yQVJHQigpCi1TT0ZUX0xJTktfQ09OU1RBTlRf
Rk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9u
dEZhbWlseU5hbWUsIENGU3RyaW5nUmVmKQotI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRl
X0ZvbnRGYW1pbHlOYW1lIGdldF9Db3JlTWVkaWFfa0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb250
RmFtaWx5TmFtZSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3Jl
TWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9yZWdyb3VuZENvbG9yQVJHQiwgQ0ZTdHJp
bmdSZWYpCi0jZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9yZWdyb3VuZENvbG9yQVJH
QiBnZXRfQ29yZU1lZGlhX2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9yZWdyb3VuZENvbG9yQVJH
QigpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtD
TVRleHRNYXJrdXBBdHRyaWJ1dGVfSXRhbGljU3R5bGUsIENGU3RyaW5nUmVmKQotI2RlZmluZSBr
Q01UZXh0TWFya3VwQXR0cmlidXRlX0l0YWxpY1N0eWxlIGdldF9Db3JlTWVkaWFfa0NNVGV4dE1h
cmt1cEF0dHJpYnV0ZV9JdGFsaWNTdHlsZSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURF
UihXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfT3J0aG9nb25hbExp
bmVQb3NpdGlvblBlcmNlbnRhZ2VSZWxhdGl2ZVRvV3JpdGluZ0RpcmVjdGlvbiwgQ0ZTdHJpbmdS
ZWYpCi0jZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfT3J0aG9nb25hbExpbmVQb3NpdGlv
blBlcmNlbnRhZ2VSZWxhdGl2ZVRvV3JpdGluZ0RpcmVjdGlvbiBnZXRfQ29yZU1lZGlhX2tDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfT3J0aG9nb25hbExpbmVQb3NpdGlvblBlcmNlbnRhZ2VSZWxhdGl2
ZVRvV3JpdGluZ0RpcmVjdGlvbigpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJD
b3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfUmVsYXRpdmVGb250U2l6ZSwg
Q0ZTdHJpbmdSZWYpCi0jZGVmaW5lIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfUmVsYXRpdmVGb250
U2l6ZSBnZXRfQ29yZU1lZGlhX2tDTVRleHRNYXJrdXBBdHRyaWJ1dGVfUmVsYXRpdmVGb250U2l6
ZSgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtD
TVRleHRNYXJrdXBBdHRyaWJ1dGVfVGV4dFBvc2l0aW9uUGVyY2VudGFnZVJlbGF0aXZlVG9Xcml0
aW5nRGlyZWN0aW9uLCBDRlN0cmluZ1JlZikKLSNkZWZpbmUga0NNVGV4dE1hcmt1cEF0dHJpYnV0
ZV9UZXh0UG9zaXRpb25QZXJjZW50YWdlUmVsYXRpdmVUb1dyaXRpbmdEaXJlY3Rpb24gZ2V0X0Nv
cmVNZWRpYV9rQ01UZXh0TWFya3VwQXR0cmlidXRlX1RleHRQb3NpdGlvblBlcmNlbnRhZ2VSZWxh
dGl2ZVRvV3JpdGluZ0RpcmVjdGlvbigpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihX
ZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVW5kZXJsaW5lU3R5bGUs
IENGU3RyaW5nUmVmKQotI2RlZmluZSBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1VuZGVybGluZVN0
eWxlIGdldF9Db3JlTWVkaWFfa0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9VbmRlcmxpbmVTdHlsZSgp
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfVmVydGljYWxMYXlvdXQsIENGU3RyaW5nUmVmKQotI2RlZmluZSBr
Q01UZXh0TWFya3VwQXR0cmlidXRlX1ZlcnRpY2FsTGF5b3V0IGdldF9Db3JlTWVkaWFfa0NNVGV4
dE1hcmt1cEF0dHJpYnV0ZV9WZXJ0aWNhbExheW91dCgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfV3JpdGlu
Z0RpcmVjdGlvblNpemVQZXJjZW50YWdlLCBDRlN0cmluZ1JlZikKLSNkZWZpbmUga0NNVGV4dE1h
cmt1cEF0dHJpYnV0ZV9Xcml0aW5nRGlyZWN0aW9uU2l6ZVBlcmNlbnRhZ2UgZ2V0X0NvcmVNZWRp
YV9rQ01UZXh0TWFya3VwQXR0cmlidXRlX1dyaXRpbmdEaXJlY3Rpb25TaXplUGVyY2VudGFnZSgp
Ci1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRl
eHRWZXJ0aWNhbExheW91dF9MZWZ0VG9SaWdodCwgQ0ZTdHJpbmdSZWYpCi0jZGVmaW5lIGtDTVRl
eHRWZXJ0aWNhbExheW91dF9MZWZ0VG9SaWdodCBnZXRfQ29yZU1lZGlhX2tDTVRleHRWZXJ0aWNh
bExheW91dF9MZWZ0VG9SaWdodCgpCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihXZWJD
b3JlLCBDb3JlTWVkaWEsIGtDTVRleHRWZXJ0aWNhbExheW91dF9SaWdodFRvTGVmdCwgQ0ZTdHJp
bmdSZWYpCi0jZGVmaW5lIGtDTVRleHRWZXJ0aWNhbExheW91dF9SaWdodFRvTGVmdCBnZXRfQ29y
ZU1lZGlhX2tDTVRleHRWZXJ0aWNhbExheW91dF9SaWdodFRvTGVmdCgpCi1TT0ZUX0xJTktfQ09O
U1RBTlRfRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRpbWVJbnZhbGlkLCBDTVRp
bWUpCi0jZGVmaW5lIGtDTVRpbWVJbnZhbGlkIGdldF9Db3JlTWVkaWFfa0NNVGltZUludmFsaWQo
KQotU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBrQ01U
aW1lWmVybywgQ01UaW1lKQotI2RlZmluZSBrQ01UaW1lWmVybyBnZXRfQ29yZU1lZGlhX2tDTVRp
bWVaZXJvKCkKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1
YlR5cGUsIEZvdXJDaGFyQ29kZSwgKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyksIChkZXNj
KSkKLSNkZWZpbmUgQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZSBzb2Z0TGlua19D
b3JlTWVkaWFfQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZQotU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTUZvcm1hdERlc2NyaXB0aW9u
R2V0TWVkaWFUeXBlLCBDTU1lZGlhVHlwZSwgKENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZGVzYyks
IChkZXNjKSkKLSNkZWZpbmUgQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhVHlwZSBzb2Z0TGlu
a19Db3JlTWVkaWFfQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhVHlwZQotU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTU5vdGlmaWNhdGlvbkNlbnRl
ckdldERlZmF1bHRMb2NhbENlbnRlciwgQ01Ob3RpZmljYXRpb25DZW50ZXJSZWYsICh2b2lkKSwg
KCkpCi0jZGVmaW5lIENNTm90aWZpY2F0aW9uQ2VudGVyR2V0RGVmYXVsdExvY2FsQ2VudGVyIHNv
ZnRMaW5rX0NvcmVNZWRpYV9DTU5vdGlmaWNhdGlvbkNlbnRlckdldERlZmF1bHRMb2NhbENlbnRl
cgotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTU5v
dGlmaWNhdGlvbkNlbnRlckFkZExpc3RlbmVyLCBPU1N0YXR1cywgKENNTm90aWZpY2F0aW9uQ2Vu
dGVyUmVmIGNlbnRlciwgY29uc3Qgdm9pZCogbGlzdGVuZXIsIENNTm90aWZpY2F0aW9uQ2FsbGJh
Y2sgY2FsbGJhY2ssIENGU3RyaW5nUmVmIG5vdGlmaWNhdGlvbiwgY29uc3Qgdm9pZCogb2JqZWN0
LCBVSW50MzIgZmxhZ3MpLCAoY2VudGVyLCBsaXN0ZW5lciwgY2FsbGJhY2ssIG5vdGlmaWNhdGlv
biwgb2JqZWN0LCBmbGFncykpCi0jZGVmaW5lIENNTm90aWZpY2F0aW9uQ2VudGVyQWRkTGlzdGVu
ZXIgc29mdExpbmtfQ29yZU1lZGlhX0NNTm90aWZpY2F0aW9uQ2VudGVyQWRkTGlzdGVuZXIKLVNP
RlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01Ob3RpZmlj
YXRpb25DZW50ZXJSZW1vdmVMaXN0ZW5lciwgT1NTdGF0dXMsIChDTU5vdGlmaWNhdGlvbkNlbnRl
clJlZiBjZW50ZXIsIGNvbnN0IHZvaWQqIGxpc3RlbmVyLCBDTU5vdGlmaWNhdGlvbkNhbGxiYWNr
IGNhbGxiYWNrLCBDRlN0cmluZ1JlZiBub3RpZmljYXRpb24sIGNvbnN0IHZvaWQqIG9iamVjdCks
IChjZW50ZXIsIGxpc3RlbmVyLCBjYWxsYmFjaywgbm90aWZpY2F0aW9uLCBvYmplY3QpKQotI2Rl
ZmluZSBDTU5vdGlmaWNhdGlvbkNlbnRlclJlbW92ZUxpc3RlbmVyIHNvZnRMaW5rX0NvcmVNZWRp
YV9DTU5vdGlmaWNhdGlvbkNlbnRlclJlbW92ZUxpc3RlbmVyCi1TT0ZUX0xJTktfRlVOQ1RJT05f
Rk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyQ2FsbEZvckVhY2hT
YW1wbGUsIE9TU3RhdHVzLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgT1NTdGF0dXMgKCpjYWxs
YmFjaykoIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgQ01JdGVtQ291bnQgaW5kZXgs
IHZvaWQgKnJlZmNvbiksIHZvaWQgKnJlZmNvbiksIChzYnVmLCBjYWxsYmFjaywgcmVmY29uKSkK
LSNkZWZpbmUgQ01TYW1wbGVCdWZmZXJDYWxsRm9yRWFjaFNhbXBsZSBzb2Z0TGlua19Db3JlTWVk
aWFfQ01TYW1wbGVCdWZmZXJDYWxsRm9yRWFjaFNhbXBsZQotU09GVF9MSU5LX0ZVTkNUSU9OX0ZP
Ul9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNyZWF0ZSwgT1NTdGF0
dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENNQmxvY2tCdWZmZXJSZWYgZGF0YUJ1ZmZl
ciwgQm9vbGVhbiBkYXRhUmVhZHksIENNU2FtcGxlQnVmZmVyTWFrZURhdGFSZWFkeUNhbGxiYWNr
IG1ha2VEYXRhUmVhZHlDYWxsYmFjaywgdm9pZCAqbWFrZURhdGFSZWFkeVJlZmNvbiwgQ01Gb3Jt
YXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbiwgQ01JdGVtQ291bnQgbnVtU2FtcGxl
cywgQ01JdGVtQ291bnQgbnVtU2FtcGxlVGltaW5nRW50cmllcywgY29uc3QgQ01TYW1wbGVUaW1p
bmdJbmZvICpzYW1wbGVUaW1pbmdBcnJheSwgQ01JdGVtQ291bnQgbnVtU2FtcGxlU2l6ZUVudHJp
ZXMsIGNvbnN0IHNpemVfdCAqc2FtcGxlU2l6ZUFycmF5LCBDTVNhbXBsZUJ1ZmZlclJlZiAqc0J1
Zk91dCksIChhbGxvY2F0b3IsIGRhdGFCdWZmZXIsIGRhdGFSZWFkeSwgbWFrZURhdGFSZWFkeUNh
bGxiYWNrLCBtYWtlRGF0YVJlYWR5UmVmY29uLCBmb3JtYXREZXNjcmlwdGlvbiwgbnVtU2FtcGxl
cywgbnVtU2FtcGxlVGltaW5nRW50cmllcywgc2FtcGxlVGltaW5nQXJyYXksIG51bVNhbXBsZVNp
emVFbnRyaWVzLCBzYW1wbGVTaXplQXJyYXksIHNCdWZPdXQpKQotI2RlZmluZSBDTVNhbXBsZUJ1
ZmZlckNyZWF0ZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJDcmVhdGUKLVNPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZm
ZXJDcmVhdGVDb3B5LCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ01TYW1w
bGVCdWZmZXJSZWYgc2J1ZiwgQ01TYW1wbGVCdWZmZXJSZWYgKnNidWZDb3B5T3V0KSwgKGFsbG9j
YXRvciwgc2J1Ziwgc2J1ZkNvcHlPdXQpKQotI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckNyZWF0ZUNv
cHkgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weQotU09GVF9MSU5L
X0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckNy
ZWF0ZUNvcHlXaXRoTmV3VGltaW5nLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRv
ciwgQ01TYW1wbGVCdWZmZXJSZWYgb3JpZ2luYWxTQnVmLCBDTUl0ZW1Db3VudCBudW1TYW1wbGVU
aW1pbmdFbnRyaWVzLCBjb25zdCBDTVNhbXBsZVRpbWluZ0luZm8gKnNhbXBsZVRpbWluZ0FycmF5
LCBDTVNhbXBsZUJ1ZmZlclJlZiAqc0J1ZkNvcHlPdXQpLCAoYWxsb2NhdG9yLCBvcmlnaW5hbFNC
dWYsIG51bVNhbXBsZVRpbWluZ0VudHJpZXMsIHNhbXBsZVRpbWluZ0FycmF5LCBzQnVmQ29weU91
dCkpCi0jZGVmaW5lIENNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcgc29mdExp
bmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyQ3JlYXRlQ29weVdpdGhOZXdUaW1pbmcKLVNPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZm
ZXJHZXREZWNvZGVUaW1lU3RhbXAsIENNVGltZSwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAo
c2J1ZikpCi0jZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0RGVjb2RlVGltZVN0YW1wIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldERlY29kZVRpbWVTdGFtcAotU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNhbXBsZUJ1ZmZlckdldER1
cmF0aW9uLCBDTVRpbWUsIChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQotI2RlZmlu
ZSBDTVNhbXBsZUJ1ZmZlckdldER1cmF0aW9uIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVNhbXBsZUJ1
ZmZlckdldER1cmF0aW9uCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBD
b3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0UHJlc2VudGF0aW9uVGltZVN0YW1wLCBDTVRpbWUs
IChDTVNhbXBsZUJ1ZmZlclJlZiBzYnVmKSwgKHNidWYpKQotI2RlZmluZSBDTVNhbXBsZUJ1ZmZl
ckdldFByZXNlbnRhdGlvblRpbWVTdGFtcCBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1wbGVCdWZm
ZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAKLVNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0Fy
cmF5LCBDRkFycmF5UmVmLCAoQ01TYW1wbGVCdWZmZXJSZWYgc2J1ZiwgQm9vbGVhbiBjcmVhdGVJ
Zk5lY2Vzc2FyeSksIChzYnVmLCBjcmVhdGVJZk5lY2Vzc2FyeSkpCi0jZGVmaW5lIENNU2FtcGxl
QnVmZmVyR2V0U2FtcGxlQXR0YWNobWVudHNBcnJheSBzb2Z0TGlua19Db3JlTWVkaWFfQ01TYW1w
bGVCdWZmZXJHZXRTYW1wbGVBdHRhY2htZW50c0FycmF5Ci1TT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNU2FtcGxlQnVmZmVyR2V0U2FtcGxlVGltaW5n
SW5mb0FycmF5LCBPU1N0YXR1cywgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYsIENNSXRlbUNvdW50
IHRpbWluZ0FycmF5RW50cmllcywgQ01TYW1wbGVUaW1pbmdJbmZvICp0aW1pbmdBcnJheU91dCwg
Q01JdGVtQ291bnQgKnRpbWluZ0FycmF5RW50cmllc05lZWRlZE91dCksIChzYnVmLCB0aW1pbmdB
cnJheUVudHJpZXMsIHRpbWluZ0FycmF5T3V0LCB0aW1pbmdBcnJheUVudHJpZXNOZWVkZWRPdXQp
KQotI2RlZmluZSBDTVNhbXBsZUJ1ZmZlckdldFNhbXBsZVRpbWluZ0luZm9BcnJheSBzb2Z0TGlu
a19Db3JlTWVkaWFfQ01TYW1wbGVCdWZmZXJHZXRTYW1wbGVUaW1pbmdJbmZvQXJyYXkKLVNPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01TYW1wbGVCdWZm
ZXJHZXRUb3RhbFNhbXBsZVNpemUsIHNpemVfdCwgKENNU2FtcGxlQnVmZmVyUmVmIHNidWYpLCAo
c2J1ZikpCi0jZGVmaW5lIENNU2FtcGxlQnVmZmVyR2V0VG90YWxTYW1wbGVTaXplIHNvZnRMaW5r
X0NvcmVNZWRpYV9DTVNhbXBsZUJ1ZmZlckdldFRvdGFsU2FtcGxlU2l6ZQotU09GVF9MSU5LX0ZV
TkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVNldEF0dGFjaG1lbnQsIHZv
aWQsIChDTUF0dGFjaG1lbnRCZWFyZXJSZWYgdGFyZ2V0LCBDRlN0cmluZ1JlZiBrZXksIENGVHlw
ZVJlZiB2YWx1ZSwgQ01BdHRhY2htZW50TW9kZSBhdHRhY2htZW50TW9kZSksICh0YXJnZXQsIGtl
eSwgdmFsdWUsIGF0dGFjaG1lbnRNb2RlKSkKLSNkZWZpbmUgQ01TYW1wbGVCdWZmZXJHZXRUb3Rh
bFNhbXBsZVNpemUgc29mdExpbmtfQ29yZU1lZGlhX0NNU2FtcGxlQnVmZmVyR2V0VG90YWxTYW1w
bGVTaXplCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEs
IENNVGltZWJhc2VDcmVhdGVXaXRoTWFzdGVyQ2xvY2ssIE9TU3RhdHVzLCAoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2NhdG9yLCBDTUNsb2NrUmVmIG1hc3RlckNsb2NrLCBDTVRpbWViYXNlUmVmICp0aW1l
YmFzZU91dCksIChhbGxvY2F0b3IsIG1hc3RlckNsb2NrLCB0aW1lYmFzZU91dCkpCi0jZGVmaW5l
IENNVGltZWJhc2VDcmVhdGVXaXRoTWFzdGVyQ2xvY2sgc29mdExpbmtfQ29yZU1lZGlhX0NNVGlt
ZWJhc2VDcmVhdGVXaXRoTWFzdGVyQ2xvY2sKLVNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVS
KFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1lYmFzZUdldFRpbWUsIENNVGltZSwgKENNVGltZWJh
c2VSZWYgdGltZWJhc2UpLCAodGltZWJhc2UpKQotI2RlZmluZSBDTVRpbWViYXNlR2V0VGltZSBz
b2Z0TGlua19Db3JlTWVkaWFfQ01UaW1lYmFzZUdldFRpbWUKLVNPRlRfTElOS19GVU5DVElPTl9G
T1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1lYmFzZVNldFJhdGUsIE9TU3RhdHVz
LCAoQ01UaW1lYmFzZVJlZiB0aW1lYmFzZSwgRmxvYXQ2NCByYXRlKSwgKHRpbWViYXNlLCByYXRl
KSkKLSNkZWZpbmUgQ01UaW1lYmFzZVNldFJhdGUgc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZWJh
c2VTZXRSYXRlCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVk
aWEsIENNVGltZWJhc2VTZXRUaW1lLCBPU1N0YXR1cywgKENNVGltZWJhc2VSZWYgdGltZWJhc2Us
IENNVGltZSB0aW1lKSwgKHRpbWViYXNlLCB0aW1lKSkKLSNkZWZpbmUgQ01UaW1lYmFzZVNldFRp
bWUgc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZWJhc2VTZXRUaW1lCi1TT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZUNvcHlBc0RpY3Rpb25hcnks
IENGRGljdGlvbmFyeVJlZiwgKENNVGltZSB0aW1lLCBDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3Ip
LCAodGltZSwgYWxsb2NhdG9yKSkKLSNkZWZpbmUgQ01UaW1lQ29weUFzRGljdGlvbmFyeSBzb2Z0
TGlua19Db3JlTWVkaWFfQ01UaW1lQ29weUFzRGljdGlvbmFyeQotU09GVF9MSU5LX0ZVTkNUSU9O
X0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25H
ZXREaW1lbnNpb25zLCBDTVZpZGVvRGltZW5zaW9ucywgKENNVmlkZW9Gb3JtYXREZXNjcmlwdGlv
blJlZiB2aWRlb0Rlc2MpLCAodmlkZW9EZXNjKSkKLSNkZWZpbmUgQ01WaWRlb0Zvcm1hdERlc2Ny
aXB0aW9uR2V0RGltZW5zaW9ucyBzb2Z0TGlua19Db3JlTWVkaWFfQ01WaWRlb0Zvcm1hdERlc2Ny
aXB0aW9uR2V0RGltZW5zaW9ucwotU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29y
ZSwgQ29yZU1lZGlhLCBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXRQcmVzZW50YXRpb25EaW1l
bnNpb25zLCBDR1NpemUsIChDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25SZWYgdmlkZW9EZXNjLCBC
b29sZWFuIHVzZVBpeGVsQXNwZWN0UmF0aW8sIEJvb2xlYW4gdXNlQ2xlYW5BcGVydHVyZSksICh2
aWRlb0Rlc2MsIHVzZVBpeGVsQXNwZWN0UmF0aW8sIHVzZUNsZWFuQXBlcnR1cmUpKQotI2RlZmlu
ZSBDTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXRQcmVzZW50YXRpb25EaW1lbnNpb25zIHNvZnRM
aW5rX0NvcmVNZWRpYV9DTVZpZGVvRm9ybWF0RGVzY3JpcHRpb25HZXRQcmVzZW50YXRpb25EaW1l
bnNpb25zCi0KLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRp
YSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Eb05vdERpc3BsYXksIENGU3RyaW5nUmVmKQotI2Rl
ZmluZSBrQ01TYW1wbGVBdHRhY2htZW50S2V5X0RvTm90RGlzcGxheSBnZXRfQ29yZU1lZGlhX2tD
TVNhbXBsZUF0dGFjaG1lbnRLZXlfRG9Ob3REaXNwbGF5KCkKLVNPRlRfTElOS19DT05TVEFOVF9G
T1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwga0NNU2FtcGxlQXR0YWNobWVudEtleV9Ob3RT
eW5jLCBDRlN0cmluZ1JlZikKLSNkZWZpbmUga0NNU2FtcGxlQXR0YWNobWVudEtleV9Ob3RTeW5j
IGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQXR0YWNobWVudEtleV9Ob3RTeW5jKCkKLVNPRlRfTElO
S19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVy
QXR0YWNobWVudEtleV9EaXNwbGF5RW1wdHlNZWRpYUltbWVkaWF0ZWx5LCBDRlN0cmluZ1JlZikK
LSNkZWZpbmUga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9EaXNwbGF5RW1wdHlNZWRpYUlt
bWVkaWF0ZWx5IGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9EaXNw
bGF5RW1wdHlNZWRpYUltbWVkaWF0ZWx5KCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFdlYkNvcmUsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9EcmFpbkFm
dGVyRGVjb2RpbmcsIENGU3RyaW5nUmVmKQotI2RlZmluZSBrQ01TYW1wbGVCdWZmZXJBdHRhY2ht
ZW50S2V5X0RyYWluQWZ0ZXJEZWNvZGluZyBnZXRfQ29yZU1lZGlhX2tDTVNhbXBsZUJ1ZmZlckF0
dGFjaG1lbnRLZXlfRHJhaW5BZnRlckRlY29kaW5nKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1Jf
SEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9F
bXB0eU1lZGlhLCBDRlN0cmluZ1JlZikKLSNkZWZpbmUga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVu
dEtleV9FbXB0eU1lZGlhIGdldF9Db3JlTWVkaWFfa0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtl
eV9FbXB0eU1lZGlhKCkKLVNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIENv
cmVNZWRpYSwga0NNU2FtcGxlQnVmZmVyQXR0YWNobWVudEtleV9SZXNldERlY29kZXJCZWZvcmVE
ZWNvZGluZywgQ0ZTdHJpbmdSZWYpCi0jZGVmaW5lIGtDTVNhbXBsZUJ1ZmZlckF0dGFjaG1lbnRL
ZXlfUmVzZXREZWNvZGVyQmVmb3JlRGVjb2RpbmcgZ2V0X0NvcmVNZWRpYV9rQ01TYW1wbGVCdWZm
ZXJBdHRhY2htZW50S2V5X1Jlc2V0RGVjb2RlckJlZm9yZURlY29kaW5nKCkKLVNPRlRfTElOS19D
T05TVEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwga0NNVGltZWJhc2VOb3RpZmlj
YXRpb25fRWZmZWN0aXZlUmF0ZUNoYW5nZWQsIENGU3RyaW5nUmVmKQotI2RlZmluZSBrQ01UaW1l
YmFzZU5vdGlmaWNhdGlvbl9FZmZlY3RpdmVSYXRlQ2hhbmdlZCBnZXRfQ29yZU1lZGlhX2tDTVRp
bWViYXNlTm90aWZpY2F0aW9uX0VmZmVjdGl2ZVJhdGVDaGFuZ2VkKCkKLVNPRlRfTElOS19DT05T
VEFOVF9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwga0NNVGltZWJhc2VOb3RpZmljYXRp
b25fVGltZUp1bXBlZCwgQ0ZTdHJpbmdSZWYpCi0jZGVmaW5lIGtDTVRpbWViYXNlTm90aWZpY2F0
aW9uX1RpbWVKdW1wZWQgZ2V0X0NvcmVNZWRpYV9rQ01UaW1lYmFzZU5vdGlmaWNhdGlvbl9UaW1l
SnVtcGVkKCkKLQotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQotCi0jaWYgUExBVEZPUk0oSU9T
KQotCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENN
QXVkaW9DbG9ja0NyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENN
Q2xvY2tSZWYgKmNsb2NrT3V0KSwgKGFsbG9jYXRvciwgY2xvY2tPdXQpKQotI2RlZmluZSBDTUF1
ZGlvQ2xvY2tDcmVhdGUgc29mdExpbmtfQ29yZU1lZGlhX0NNQXVkaW9DbG9ja0NyZWF0ZQotU09G
VF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoV2ViQ29yZSwgQ29yZU1lZGlhLCBDTVRpbWVNYXhp
bXVtLCBDTVRpbWUsIChDTVRpbWUgdGltZTEsIENNVGltZSB0aW1lMiksICh0aW1lMSwgdGltZTIp
KQotI2RlZmluZSBDTVRpbWVNYXhpbXVtIHNvZnRMaW5rX0NvcmVNZWRpYV9DTVRpbWVNYXhpbXVt
Ci1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGlt
ZU1pbmltdW0sIENNVGltZSwgKENNVGltZSB0aW1lMSwgQ01UaW1lIHRpbWUyKSwgKHRpbWUxLCB0
aW1lMikpCi0jZGVmaW5lIENNVGltZU1pbmltdW0gc29mdExpbmtfQ29yZU1lZGlhX0NNVGltZU1p
bmltdW0KLVNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwg
Q01UaW1lUmFuZ2VDb250YWluc1RpbWUsIEJvb2xlYW4sIChDTVRpbWVSYW5nZSByYW5nZSwgQ01U
aW1lIHRpbWUpLCAocmFuZ2UsIHRpbWUpKQotI2RlZmluZSBDTVRpbWVSYW5nZUNvbnRhaW5zVGlt
ZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01UaW1lUmFuZ2VDb250YWluc1RpbWUKLVNPRlRfTElOS19G
VU5DVElPTl9GT1JfSEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1lUmFuZ2VNYWtlLCBD
TVRpbWVSYW5nZSwgKENNVGltZSBzdGFydCwgQ01UaW1lIGR1cmF0aW9uKSwgKHN0YXJ0LCBkdXJh
dGlvbikpCi0jZGVmaW5lIENNVGltZVJhbmdlTWFrZSBzb2Z0TGlua19Db3JlTWVkaWFfQ01UaW1l
UmFuZ2VNYWtlCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVk
aWEsIENNVGltZVN1YnRyYWN0LCBDTVRpbWUsIChDTVRpbWUgbWludWVuZCwgQ01UaW1lIHN1YnRy
YWhlbmQpLCAobWludWVuZCwgc3VidHJhaGVuZCkpCi0jZGVmaW5lIENNVGltZVN1YnRyYWN0IHNv
ZnRMaW5rX0NvcmVNZWRpYV9DTVRpbWVTdWJ0cmFjdAotCi1TT0ZUX0xJTktfQ09OU1RBTlRfRk9S
X0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIGtDTVRpbWVJbmRlZmluaXRlLCBDTVRpbWUpCi0j
ZGVmaW5lIGtDTVRpbWVJbmRlZmluaXRlIGdldF9Db3JlTWVkaWFfa0NNVGltZUluZGVmaW5pdGUo
KQotCi0jZW5kaWYgLy8gUExBVEZPUk0oSU9TKQotCi0jaWYgUExBVEZPUk0oTUFDKQotCi1TT0ZU
X0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNQXVkaW9EZXZp
Y2VDbG9ja0NyZWF0ZSwgT1NTdGF0dXMsIChDRkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGU3Ry
aW5nUmVmIGRldmljZVVJRCwgQ01DbG9ja1JlZiAqY2xvY2tPdXQpLCAoYWxsb2NhdG9yLCBkZXZp
Y2VVSUQsIGNsb2NrT3V0KSkKLSNkZWZpbmUgQ01BdWRpb0RldmljZUNsb2NrQ3JlYXRlICBzb2Z0
TGlua19Db3JlTWVkaWFfQ01BdWRpb0RldmljZUNsb2NrQ3JlYXRlCi0KLSNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCi0KLSNpZiBQTEFURk9STShXSU4pCi0KLVNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFdlYkNvcmUsIENvcmVNZWRpYSwgQ01UaW1lQWRkLCBDTVRpbWUsIChDTVRpbWUgYWRk
ZW5kMSwgQ01UaW1lIGFkZGVuZDIpLCAoYWRkZW5kMSwgYWRkZW5kMikpCi0jZGVmaW5lIENNVGlt
ZUFkZCBzb2Z0TGlua19Db3JlTWVkaWFfQ01UaW1lQWRkCi1TT0ZUX0xJTktfRlVOQ1RJT05fRk9S
X0hFQURFUihXZWJDb3JlLCBDb3JlTWVkaWEsIENNVGltZU1ha2VGcm9tRGljdGlvbmFyeSwgQ01U
aW1lLCAoQ0ZEaWN0aW9uYXJ5UmVmIGRpY3QpLCAoZGljdCkpCi0jZGVmaW5lIENNVGltZU1ha2VG
cm9tRGljdGlvbmFyeSBzb2Z0TGlua19Db3JlTWVkaWFfQ01UaW1lTWFrZUZyb21EaWN0aW9uYXJ5
Ci0KLSNlbmRpZiAvLyBQTEFURk9STShXSU4pCi0KLSNlbmRpZiAvLyBVU0UoQVZGT1VOREFUSU9O
KQotCi0jZW5kaWYgLy8gQ29yZU1lZGlhU29mdExpbmtfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc3
MzYyNjgyYjA3MDkxYzkwMjMxYTZiMTRiYmEzNTk3OWM4ZjBkNi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTWVkaWFUaW1lQVZG
b3VuZGF0aW9uLmgiCi0KLSNpZiBVU0UoQVZGT1VOREFUSU9OKQotCi0jaW5jbHVkZSAiQ29yZU1l
ZGlhU29mdExpbmsuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgYm9vbCBDTVRp
bWVIYXNGbGFncyhjb25zdCBDTVRpbWUmIGNtVGltZSwgdWludDMyX3QgZmxhZ3MpCi17Ci0gICAg
cmV0dXJuIChjbVRpbWUuZmxhZ3MgJiBmbGFncykgPT0gZmxhZ3M7Ci19Ci0KLU1lZGlhVGltZSB0
b01lZGlhVGltZShjb25zdCBDTVRpbWUmIGNtVGltZSkKLXsKLSAgICB1aW50MzJfdCBmbGFncyA9
IDA7Ci0gICAgaWYgKENNVGltZUhhc0ZsYWdzKGNtVGltZSwga0NNVGltZUZsYWdzX1ZhbGlkKSkK
LSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpWYWxpZDsKLSAgICBpZiAoQ01UaW1lSGFzRmxh
Z3MoY21UaW1lLCBrQ01UaW1lRmxhZ3NfVmFsaWQgfCBrQ01UaW1lRmxhZ3NfSGFzQmVlblJvdW5k
ZWQpKQotICAgICAgICBmbGFncyB8PSBNZWRpYVRpbWU6Okhhc0JlZW5Sb3VuZGVkOwotICAgIGlm
IChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFn
c19Qb3NpdGl2ZUluZmluaXR5KSkKLSAgICAgICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpQb3NpdGl2
ZUluZmluaXRlOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRpbWUsIGtDTVRpbWVGbGFnc19W
YWxpZCB8IGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmluaXR5KSkKLSAgICAgICAgZmxhZ3MgfD0g
TWVkaWFUaW1lOjpOZWdhdGl2ZUluZmluaXRlOwotICAgIGlmIChDTVRpbWVIYXNGbGFncyhjbVRp
bWUsIGtDTVRpbWVGbGFnc19WYWxpZCB8IGtDTVRpbWVGbGFnc19JbmRlZmluaXRlKSkKLSAgICAg
ICAgZmxhZ3MgfD0gTWVkaWFUaW1lOjpJbmRlZmluaXRlOwotCi0gICAgcmV0dXJuIE1lZGlhVGlt
ZShjbVRpbWUudmFsdWUsIGNtVGltZS50aW1lc2NhbGUsIGZsYWdzKTsKLX0KLQotQ01UaW1lIHRv
Q01UaW1lKGNvbnN0IE1lZGlhVGltZSYgbWVkaWFUaW1lKQotewotICAgIENNVGltZSB0aW1lOwot
Ci0gICAgaWYgKG1lZGlhVGltZS5oYXNEb3VibGVWYWx1ZSgpKQotICAgICAgICB0aW1lID0gQ01U
aW1lTWFrZVdpdGhTZWNvbmRzKG1lZGlhVGltZS50b0RvdWJsZSgpLCBtZWRpYVRpbWUudGltZVNj
YWxlKCkpOwotICAgIGVsc2UKLSAgICAgICAgdGltZSA9IENNVGltZU1ha2UobWVkaWFUaW1lLnRp
bWVWYWx1ZSgpLCBtZWRpYVRpbWUudGltZVNjYWxlKCkpOwotCi0gICAgaWYgKG1lZGlhVGltZS5p
c1ZhbGlkKCkpCi0gICAgICAgIHRpbWUuZmxhZ3MgfD0ga0NNVGltZUZsYWdzX1ZhbGlkOwotICAg
IGlmIChtZWRpYVRpbWUuaGFzQmVlblJvdW5kZWQoKSkKLSAgICAgICAgdGltZS5mbGFncyB8PSBr
Q01UaW1lRmxhZ3NfSGFzQmVlblJvdW5kZWQ7Ci0gICAgaWYgKG1lZGlhVGltZS5pc1Bvc2l0aXZl
SW5maW5pdGUoKSkKLSAgICAgICAgdGltZS5mbGFncyB8PSBrQ01UaW1lRmxhZ3NfUG9zaXRpdmVJ
bmZpbml0eTsKLSAgICBpZiAobWVkaWFUaW1lLmlzTmVnYXRpdmVJbmZpbml0ZSgpKQotICAgICAg
ICB0aW1lLmZsYWdzIHw9IGtDTVRpbWVGbGFnc19OZWdhdGl2ZUluZmluaXR5OwotCi0gICAgcmV0
dXJuIHRpbWU7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZG
b3VuZGF0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViOTE0ZWZmODlmMzE3
ZTNmY2Y1MTgxYjQ1ZGIxYjRlNWFkNDZhNzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIE1lZGlhVGltZUFWRm91bmRhdGlvbl9oCi0jZGVmaW5lIE1lZGlhVGltZUFWRm91bmRhdGlv
bl9oCi0KLSNpZiBVU0UoQVZGT1VOREFUSU9OKQotCi0jaW5jbHVkZSA8Q29yZU1lZGlhL0NNVGlt
ZS5oPgotI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1DTVRpbWUgdG9DTVRpbWUoY29uc3QgTWVkaWFUaW1lJik7Ci1NZWRpYVRpbWUgdG9NZWRpYVRp
bWUoY29uc3QgQ01UaW1lJik7Ci0KLX0KLQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NBLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOGFmMTI3YWUwNjI0YmM4M2IyNWI2Y2Q4YTY3MDk2NjQ5NzkzMjc5NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NBLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDEyMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShDT1JFQVVESU8pCi0KLSNpbmNsdWRl
ICJQbGF0Zm9ybUNsb2NrQ0EuaCIKLQotI2luY2x1ZGUgPEF1ZGlvVG9vbGJveC9Db3JlQXVkaW9D
bG9jay5oPgotI2luY2x1ZGUgPENvcmVBdWRpby9BdWRpb0hhcmR3YXJlLmg+Ci0KLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotCi1QbGF0Zm9ybUNsb2NrQ0E6OlBsYXRmb3JtQ2xvY2tDQSgpCi0g
ICAgOiBtX2Nsb2NrKDApCi0gICAgLCBtX3J1bm5pbmcoZmFsc2UpCi17Ci0gICAgQ0FDbG9ja05l
dygwLCAmbV9jbG9jayk7Ci0gICAgVUludDMyIHRpbWViYXNlID0ga0NBQ2xvY2tUaW1lYmFzZV9B
dWRpb0RldmljZTsKLSAgICBVSW50MzIgdGltZWJhc2VTaXplID0gc2l6ZW9mKHRpbWViYXNlKTsK
LSAgICBDQUNsb2NrU2V0UHJvcGVydHkobV9jbG9jaywga0NBQ2xvY2tQcm9wZXJ0eV9JbnRlcm5h
bFRpbWViYXNlLCB0aW1lYmFzZVNpemUsICZ0aW1lYmFzZSk7Ci0KLSAgICBBdWRpb09iamVjdElE
IGRlZmF1bHRBdWRpb091dHB1dCA9IDA7Ci0gICAgVUludDMyIGRlZmF1bHRBdWRpb091dHB1dFNp
emUgPSBzaXplb2YoZGVmYXVsdEF1ZGlvT3V0cHV0KTsKLQotICAgIEF1ZGlvT2JqZWN0UHJvcGVy
dHlBZGRyZXNzIGFkZHJlc3M7Ci0gICAgYWRkcmVzcy5tU2VsZWN0b3IgPSBrQXVkaW9IYXJkd2Fy
ZVByb3BlcnR5RGVmYXVsdE91dHB1dERldmljZTsKLSAgICBhZGRyZXNzLm1TY29wZSAgICA9IGtB
dWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWw7Ci0gICAgYWRkcmVzcy5tRWxlbWVudCAgPSBr
QXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXI7Ci0KLSAgICBBdWRpb09iamVjdEdldFBy
b3BlcnR5RGF0YShrQXVkaW9PYmplY3RTeXN0ZW1PYmplY3QsICZhZGRyZXNzLCAwLCAwLCAmZGVm
YXVsdEF1ZGlvT3V0cHV0U2l6ZSwgJmRlZmF1bHRBdWRpb091dHB1dCk7Ci0gICAgQ0FDbG9ja1Nl
dFByb3BlcnR5KG1fY2xvY2ssIGtDQUNsb2NrUHJvcGVydHlfVGltZWJhc2VTb3VyY2UsIGRlZmF1
bHRBdWRpb091dHB1dFNpemUsICZkZWZhdWx0QXVkaW9PdXRwdXQpOwotfQotCi1QbGF0Zm9ybUNs
b2NrQ0E6On5QbGF0Zm9ybUNsb2NrQ0EoKQotewotICAgIENBQ2xvY2tEaXNwb3NlKG1fY2xvY2sp
OwotfQotCi12b2lkIFBsYXRmb3JtQ2xvY2tDQTo6c2V0Q3VycmVudFRpbWUoZG91YmxlIHRpbWUp
Ci17Ci0gICAgaWYgKG1fcnVubmluZykKLSAgICAgICAgQ0FDbG9ja1N0b3AobV9jbG9jayk7Ci0g
ICAgQ0FDbG9ja1RpbWUgY2FUaW1lOwotICAgIGNhVGltZS5mb3JtYXQgPSBrQ0FDbG9ja1RpbWVG
b3JtYXRfU2Vjb25kczsKLSAgICBjYVRpbWUudGltZS5zZWNvbmRzID0gdGltZTsKLSAgICBDQUNs
b2NrU2V0Q3VycmVudFRpbWUobV9jbG9jaywgJmNhVGltZSk7Ci0gICAgaWYgKG1fcnVubmluZykK
LSAgICAgICAgQ0FDbG9ja1N0YXJ0KG1fY2xvY2spOwotfQotCi1kb3VibGUgUGxhdGZvcm1DbG9j
a0NBOjpjdXJyZW50VGltZSgpIGNvbnN0Ci17Ci0gICAgQ0FDbG9ja1RpbWUgY2FUaW1lOwotCi0g
ICAgLy8gQ0FDbG9jayBkb2VzIG5vdCByZXR1cm4gdGhlIGNvcnJlY3QgY3VycmVudCB0aW1lIHdo
ZW4gc3RvcHBlZC4gSW5zdGVhZCwgcXVlcnkgZm9yCi0gICAgLy8gd2hhdCBpcyB0aGUgc3RhcnQg
dGltZSwgaS5lLiB3aGF0IHRoZSBjdXJyZW50IHRpbWUgd2lsbCBiZSB3aGVuIHN0YXJ0ZWQuCi0g
ICAgaWYgKG1fcnVubmluZykgewotICAgICAgICBpZiAoQ0FDbG9ja0dldEN1cnJlbnRUaW1lKG1f
Y2xvY2ssIGtDQUNsb2NrVGltZUZvcm1hdF9TZWNvbmRzLCAmY2FUaW1lKSA9PSBub0VycikKLSAg
ICAgICAgICAgIHJldHVybiBjYVRpbWUudGltZS5zZWNvbmRzOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGlmIChDQUNsb2NrR2V0U3RhcnRUaW1lKG1fY2xvY2ssIGtDQUNsb2NrVGltZUZvcm1hdF9T
ZWNvbmRzLCAmY2FUaW1lKSA9PSBub0VycikKLSAgICAgICAgICAgIHJldHVybiBjYVRpbWUudGlt
ZS5zZWNvbmRzOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBQbGF0Zm9ybUNsb2Nr
Q0E6OnNldFBsYXlSYXRlKGRvdWJsZSByYXRlKQotewotICAgIENBQ2xvY2tTZXRQbGF5UmF0ZSht
X2Nsb2NrLCByYXRlKTsKLX0KLQotZG91YmxlIFBsYXRmb3JtQ2xvY2tDQTo6UGxhdGZvcm1DbG9j
a0NBOjpwbGF5UmF0ZSgpIGNvbnN0Ci17Ci0gICAgZG91YmxlIHJhdGUgPSAwOwotICAgIGlmIChD
QUNsb2NrR2V0UGxheVJhdGUobV9jbG9jaywgJnJhdGUpID09IG5vRXJyKQotICAgICAgICByZXR1
cm4gcmF0ZTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBQbGF0Zm9ybUNsb2NrQ0E6OnN0YXJ0
KCkKLXsKLSAgICBpZiAobV9ydW5uaW5nKQotICAgICAgICByZXR1cm47Ci0gICAgbV9ydW5uaW5n
ID0gdHJ1ZTsKLSAgICBDQUNsb2NrU3RhcnQobV9jbG9jayk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1D
bG9ja0NBOjpzdG9wKCkKLXsKLSAgICBpZiAoIW1fcnVubmluZykKLSAgICAgICAgcmV0dXJuOwot
ICAgIG1fcnVubmluZyA9IGZhbHNlOwotICAgIENBQ2xvY2tTdG9wKG1fY2xvY2spOwotfQotCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
Q2xvY2tDQS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDQS5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDU4MTlmMmVlNjFmZGE4ZjdkYzI5OTUx
YmY1MzAyNzMxZjE0MTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuaAorKysg
L2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQbGF0Zm9ybUNsb2NrQ0FfaAotI2RlZmluZSBQbGF0
Zm9ybUNsb2NrQ0FfaAotCi0jaWYgVVNFKENPUkVBVURJTykKLQotI2luY2x1ZGUgIkNsb2NrLmgi
Ci0KLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNBQ2xvY2sgKkNBQ2xvY2tSZWY7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgUGxhdGZvcm1DbG9ja0NBIGZpbmFsIDogcHVibGljIENsb2Nr
IHsKLXB1YmxpYzoKLSAgICBQbGF0Zm9ybUNsb2NrQ0EoKTsKLSAgICB2aXJ0dWFsIH5QbGF0Zm9y
bUNsb2NrQ0EoKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFRpbWUo
ZG91YmxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0
IG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRlKGRvdWJsZSkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBkb3VibGUgcGxheVJhdGUoKSBjb25zdCBvdmVycmlkZTsKLQotICAg
IHZpcnR1YWwgdm9pZCBzdGFydCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzUnVubmluZygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcnVubmluZzsgfQotCi0gICAgQ0FDbG9ja1JlZiBtX2Nsb2NrOwotICAgIGJvb2wg
bV9ydW5uaW5nOwotfTsKLQotfQotCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGQyNmY4Zjc4MDYzY2ZlOGM1MDFmNzIxMzkzZDg1YjIzZjgyOTQxYmYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDTS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFBsYXRmb3JtQ2xvY2tDTV9oCi0jZGVmaW5lIFBsYXRmb3JtQ2xvY2tDTV9oCi0KLSNpZiBVU0Uo
Q09SRU1FRElBKQotCi0jaW5jbHVkZSAiQ2xvY2suaCIKLSNpbmNsdWRlIDx3dGYvTWVkaWFUaW1l
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIHN0cnVjdCBPcGFxdWVD
TVRpbWViYXNlKiBDTVRpbWViYXNlUmVmOwotdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ01DbG9jayog
Q01DbG9ja1JlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQbGF0Zm9ybUNsb2Nr
Q00gZmluYWwgOiBwdWJsaWMgQ2xvY2sgewotcHVibGljOgotICAgIFBsYXRmb3JtQ2xvY2tDTSgp
OwotICAgIFBsYXRmb3JtQ2xvY2tDTShDTUNsb2NrUmVmKTsKLQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRDdXJyZW50VGltZShkb3VibGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZG91YmxlIGN1cnJl
bnRUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHNldEN1cnJlbnRNZWRpYVRpbWUo
Y29uc3QgTWVkaWFUaW1lJik7Ci0gICAgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25z
dDsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5UmF0ZShkb3VibGUpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgZG91YmxlIHBsYXlSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yYXRl
OyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3J1bm5pbmc7IH0KLQotICAgIENNVGltZWJhc2VSZWYgdGltZWJh
c2UoKSBjb25zdCB7IHJldHVybiBtX3RpbWViYXNlLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAg
dm9pZCBpbml0aWFsaXplV2l0aFRpbWluZ1NvdXJjZShDTUNsb2NrUmVmKTsKLQotICAgIFJldGFp
blB0cjxDTVRpbWViYXNlUmVmPiBtX3RpbWViYXNlOwotICAgIGRvdWJsZSBtX3JhdGU7Ci0gICAg
Ym9vbCBtX3J1bm5pbmc7Ci19OwotCi19Ci0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00ubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmNjEyMjhjMTU5ODIxNDIxZjNkMjQwNmU5NWQ4MzE1NTY5Zjk1MWU5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00ubW0KKysrIC9kZXYvbnVsbApAQCAtMSwx
MTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxNSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2lmIFVTRShDT1JFTUVESUEpCi0KLSNpbXBv
cnQgIlBsYXRmb3JtQ2xvY2tDTS5oIgotCi0jaW1wb3J0ICJNZWRpYVRpbWVBVkZvdW5kYXRpb24u
aCIKLQotI2ltcG9ydCAiQ29yZU1lZGlhU29mdExpbmsuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci0KLS8vIEEgZGVmYXVsdCB0aW1lIHNjYWxlIG9mIDEwMDAgYWxsb3dzIG1pbGxpLXNl
Y29uZCBDTVRpbWUgcHJlY2lzaW9uIHdpdGhvdXQgc2NhbGluZyB0aGUgdGltZWJhc2UuCi1zdGF0
aWMgY29uc3QgaW50MzJfdCBEZWZhdWx0VGltZVNjYWxlID0gMTAwMDsKLQotUGxhdGZvcm1DbG9j
a0NNOjpQbGF0Zm9ybUNsb2NrQ00oKQotICAgIDogbV90aW1lYmFzZSgwKQotICAgICwgbV9yYXRl
KDEpCi0gICAgLCBtX3J1bm5pbmcoZmFsc2UpCi17Ci0gICAgQ01DbG9ja1JlZiByYXdDbG9ja1B0
ciA9IDA7Ci0jaWYgUExBVEZPUk0oSU9TKQotICAgIENNQXVkaW9DbG9ja0NyZWF0ZShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAmcmF3Q2xvY2tQdHIpOwotI2Vsc2UKLSAgICBDTUF1ZGlvRGV2aWNlQ2xv
Y2tDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgJnJhd0Nsb2NrUHRyKTsKLSNlbmRp
ZgotICAgIFJldGFpblB0cjxDTUNsb2NrUmVmPiBjbG9jayA9IGFkb3B0Q0YocmF3Q2xvY2tQdHIp
OwotICAgIGluaXRpYWxpemVXaXRoVGltaW5nU291cmNlKGNsb2NrLmdldCgpKTsKLX0KLQotUGxh
dGZvcm1DbG9ja0NNOjpQbGF0Zm9ybUNsb2NrQ00oQ01DbG9ja1JlZiBjbG9jaykKLSAgICA6IG1f
dGltZWJhc2UoMCkKLSAgICAsIG1fcnVubmluZyhmYWxzZSkKLXsKLSAgICBpbml0aWFsaXplV2l0
aFRpbWluZ1NvdXJjZShjbG9jayk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1DbG9ja0NNOjppbml0aWFs
aXplV2l0aFRpbWluZ1NvdXJjZShDTUNsb2NrUmVmIGNsb2NrKQotewotICAgIENNVGltZWJhc2VS
ZWYgcmF3VGltZWJhc2VQdHIgPSAwOwotICAgIENNVGltZWJhc2VDcmVhdGVXaXRoTWFzdGVyQ2xv
Y2soa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2xvY2ssICZyYXdUaW1lYmFzZVB0cik7Ci0gICAgbV90
aW1lYmFzZSA9IGFkb3B0Q0YocmF3VGltZWJhc2VQdHIpOwotfQotCi12b2lkIFBsYXRmb3JtQ2xv
Y2tDTTo6c2V0Q3VycmVudFRpbWUoZG91YmxlIHRpbWUpCi17Ci0gICAgQ01UaW1lIGNtVGltZSA9
IENNVGltZU1ha2VXaXRoU2Vjb25kcyh0aW1lLCBEZWZhdWx0VGltZVNjYWxlKTsKLSAgICBDTVRp
bWViYXNlU2V0VGltZShtX3RpbWViYXNlLmdldCgpLCBjbVRpbWUpOwotfQotCi1kb3VibGUgUGxh
dGZvcm1DbG9ja0NNOjpjdXJyZW50VGltZSgpIGNvbnN0Ci17Ci0gICAgQ01UaW1lIGNtVGltZSA9
IENNVGltZWJhc2VHZXRUaW1lKG1fdGltZWJhc2UuZ2V0KCkpOwotICAgIHJldHVybiBDTVRpbWVH
ZXRTZWNvbmRzKGNtVGltZSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1DbG9ja0NNOjpzZXRDdXJyZW50
TWVkaWFUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGltZSkKLXsKLSAgICBDTVRpbWViYXNlU2V0VGlt
ZShtX3RpbWViYXNlLmdldCgpLCB0b0NNVGltZSh0aW1lKSk7Ci19Ci0KLU1lZGlhVGltZSBQbGF0
Zm9ybUNsb2NrQ006OmN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdAotewotICAgIHJldHVybiB0b01l
ZGlhVGltZShDTVRpbWViYXNlR2V0VGltZShtX3RpbWViYXNlLmdldCgpKSk7Ci19Ci0KLXZvaWQg
UGxhdGZvcm1DbG9ja0NNOjpzZXRQbGF5UmF0ZShkb3VibGUgcmF0ZSkKLXsKLSAgICBpZiAobV9y
YXRlID09IHJhdGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcmF0ZSA9IHJhdGU7Ci0gICAg
aWYgKG1fcnVubmluZykKLSAgICAgICAgQ01UaW1lYmFzZVNldFJhdGUobV90aW1lYmFzZS5nZXQo
KSwgcmF0ZSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1DbG9ja0NNOjpzdGFydCgpCi17Ci0gICAgaWYg
KG1fcnVubmluZykKLSAgICAgICAgcmV0dXJuOwotICAgIG1fcnVubmluZyA9IHRydWU7Ci0gICAg
Q01UaW1lYmFzZVNldFJhdGUobV90aW1lYmFzZS5nZXQoKSwgbV9yYXRlKTsKLX0KLQotdm9pZCBQ
bGF0Zm9ybUNsb2NrQ006OnN0b3AoKQotewotICAgIGlmICghbV9ydW5uaW5nKQotICAgICAgICBy
ZXR1cm47Ci0gICAgbV9ydW5uaW5nID0gZmFsc2U7Ci0gICAgQ01UaW1lYmFzZVNldFJhdGUobV90
aW1lYmFzZS5nZXQoKSwgMCk7Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1NvZnRMaW5raW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU29mdExpbmtpbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDU0YTBmNWU5
M2MwN2Q1MTAxMTVjMTIxYjc3NmU3YWQ4MzcxZGY2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU29mdExp
bmtpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4LCAyMDExLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwot
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTb2Z0TGlua2luZ19oCi0jZGVmaW5lIFNvZnRMaW5raW5n
X2gKLQotI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbXBvcnQgPGRsZmNuLmg+Ci0jaW1w
b3J0IDxvYmpjL3J1bnRpbWUuaD4KLQotI3ByYWdtYSBtYXJrIC0gU29mdC1saW5rIG1hY3JvcyBm
b3IgdXNlIHdpdGhpbiBhIHNpbmdsZSBzb3VyY2UgZmlsZQotCi0jZGVmaW5lIFNPRlRfTElOS19M
SUJSQVJZKGxpYikgXAotICAgIHN0YXRpYyB2b2lkKiBsaWIjI0xpYnJhcnkoKSBcCi0gICAgeyBc
Ci0gICAgICAgIHN0YXRpYyB2b2lkKiBkeWxpYiA9IGRsb3BlbigiL3Vzci9saWIvIiAjbGliICIu
ZHlsaWIiLCBSVExEX05PVyk7IFwKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkeWxpYiwg
IiVzIiwgZGxlcnJvcigpKTsgXAotICAgICAgICByZXR1cm4gZHlsaWI7IFwKLSAgICB9Ci0KLSNk
ZWZpbmUgU09GVF9MSU5LX0ZSQU1FV09SSyhmcmFtZXdvcmspIFwKLSAgICBzdGF0aWMgdm9pZCog
ZnJhbWV3b3JrIyNMaWJyYXJ5KCkgXAotICAgIHsgXAotICAgICAgICBzdGF0aWMgdm9pZCogZnJh
bWV3b3JrTGlicmFyeSA9IGRsb3BlbigiL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvIiAjZnJh
bWV3b3JrICIuZnJhbWV3b3JrLyIgI2ZyYW1ld29yaywgUlRMRF9OT1cpOyBcCi0gICAgICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoZnJhbWV3b3JrTGlicmFyeSwgIiVzIiwgZGxlcnJvcigpKTsgXAot
ICAgICAgICByZXR1cm4gZnJhbWV3b3JrTGlicmFyeTsgXAotICAgIH0KLQotI2RlZmluZSBTT0ZU
X0xJTktfUFJJVkFURV9GUkFNRVdPUksoZnJhbWV3b3JrKSBcCi0gICAgc3RhdGljIHZvaWQqIGZy
YW1ld29yayMjTGlicmFyeSgpIFwKLSAgICB7IFwKLSAgICAgICAgc3RhdGljIHZvaWQqIGZyYW1l
d29ya0xpYnJhcnkgPSAwOyBcCi0gICAgICAgIGlmICghZnJhbWV3b3JrTGlicmFyeSkgXAotICAg
ICAgICAgICAgZnJhbWV3b3JrTGlicmFyeSA9IGRsb3BlbigiL1N5c3RlbS9MaWJyYXJ5L1ByaXZh
dGVGcmFtZXdvcmtzLyIgI2ZyYW1ld29yayAiLmZyYW1ld29yay8iICNmcmFtZXdvcmssIFJUTERf
Tk9XKTsgXAotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGZyYW1ld29ya0xpYnJhcnksICIl
cyIsIGRsZXJyb3IoKSk7IFwKLSAgICAgICAgcmV0dXJuIGZyYW1ld29ya0xpYnJhcnk7IFwKLSAg
ICB9Ci0KLSNkZWZpbmUgU09GVF9MSU5LX0ZSQU1FV09SS19PUFRJT05BTChmcmFtZXdvcmspIFwK
LSAgICBzdGF0aWMgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KCkgXAotICAgIHsgXAotICAgICAg
ICBzdGF0aWMgdm9pZCogZnJhbWV3b3JrTGlicmFyeSA9IGRsb3BlbigiL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvIiAjZnJhbWV3b3JrICIuZnJhbWV3b3JrLyIgI2ZyYW1ld29yaywgUlRMRF9O
T1cpOyBcCi0gICAgICAgIHJldHVybiBmcmFtZXdvcmtMaWJyYXJ5OyBcCi0gICAgfQotCi0jZGVm
aW5lIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SS19PUFRJT05BTChmcmFtZXdvcmspIFwKLSAg
ICBzdGF0aWMgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KCkgXAotICAgIHsgXAotICAgICAgICBz
dGF0aWMgdm9pZCogZnJhbWV3b3JrTGlicmFyeSA9IGRsb3BlbigiL1N5c3RlbS9MaWJyYXJ5L1By
aXZhdGVGcmFtZXdvcmtzLyIgI2ZyYW1ld29yayAiLmZyYW1ld29yay8iICNmcmFtZXdvcmssIFJU
TERfTk9XKTsgXAotICAgICAgICByZXR1cm4gZnJhbWV3b3JrTGlicmFyeTsgXAotICAgIH0KLQot
I2RlZmluZSBTT0ZUX0xJTktfU1RBR0VEX0ZSQU1FV09SSyhmcmFtZXdvcmssIHVuc3RhZ2VkTG9j
YXRpb24sIHZlcnNpb24pIFwKLSAgICBzdGF0aWMgdm9pZCogZnJhbWV3b3JrIyNMaWJyYXJ5KCkg
XAotICAgIHsgXAotICAgICAgICBzdGF0aWMgdm9pZCogZnJhbWV3b3JrTGlicmFyeSA9IF57IFwK
LSAgICAgICAgICAgIHZvaWQqIHJlc3VsdCA9IGRsb3BlbigiL1N5c3RlbS9MaWJyYXJ5LyIgI3Vu
c3RhZ2VkTG9jYXRpb24gIi8iICNmcmFtZXdvcmsgIi5mcmFtZXdvcmsvVmVyc2lvbnMvIiAjdmVy
c2lvbiAiLyIgI2ZyYW1ld29yaywgUlRMRF9MQVpZKTsgXAotICAgICAgICAgICAgaWYgKCFyZXN1
bHQpIFwKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9T
dGFnZWRGcmFtZXdvcmtzL1NhZmFyaS8iICNmcmFtZXdvcmsgIi5mcmFtZXdvcmsvVmVyc2lvbnMv
IiAjdmVyc2lvbiAiLyIgI2ZyYW1ld29yaywgUlRMRF9MQVpZKTsgXAotICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsgXAotICAgICAgICB9KCk7IFwKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShmcmFtZXdvcmtMaWJyYXJ5LCAiJXMiLCBkbGVycm9yKCkpOyBcCi0gICAgICAgIHJldHVybiBm
cmFtZXdvcmtMaWJyYXJ5OyBcCi0gICAgfQotCi0jZGVmaW5lIFNPRlRfTElOS19GUkFNRVdPUktf
SU5fVU1CUkVMTEEodW1icmVsbGEsIGZyYW1ld29yaykgXAotICAgIHN0YXRpYyB2b2lkKiBmcmFt
ZXdvcmsjI0xpYnJhcnkoKSBcCi0gICAgeyBcCi0gICAgICAgIHN0YXRpYyB2b2lkKiBmcmFtZXdv
cmtMaWJyYXJ5ID0gZGxvcGVuKCIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy8iICN1bWJyZWxs
YSAiLmZyYW1ld29yay9GcmFtZXdvcmtzLyIgI2ZyYW1ld29yayAiLmZyYW1ld29yay8iICNmcmFt
ZXdvcmssIFJUTERfTk9XKTsgXAotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGZyYW1ld29y
a0xpYnJhcnksICIlcyIsIGRsZXJyb3IoKSk7IFwKLSAgICAgICAgcmV0dXJuIGZyYW1ld29ya0xp
YnJhcnk7IFwKLSAgICB9Ci0KLSNkZWZpbmUgU09GVF9MSU5LKGZyYW1ld29yaywgZnVuY3Rpb25O
YW1lLCByZXN1bHRUeXBlLCBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVzKSBc
Ci0gICAgV1RGX0VYVEVSTl9DX0JFR0lOIFwKLSAgICByZXN1bHRUeXBlIGZ1bmN0aW9uTmFtZSBw
YXJhbWV0ZXJEZWNsYXJhdGlvbnM7IFwKLSAgICBXVEZfRVhURVJOX0NfRU5EIFwKLSAgICBzdGF0
aWMgcmVzdWx0VHlwZSBpbml0IyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBc
Ci0gICAgc3RhdGljIHJlc3VsdFR5cGUgKCpzb2Z0TGluayMjZnVuY3Rpb25OYW1lKSBwYXJhbWV0
ZXJEZWNsYXJhdGlvbnMgPSBpbml0IyNmdW5jdGlvbk5hbWU7IFwKLSAgICBcCi0gICAgc3RhdGlj
IHJlc3VsdFR5cGUgaW5pdCMjZnVuY3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9ucyBcCi0g
ICAgeyBcCi0gICAgICAgIHNvZnRMaW5rIyNmdW5jdGlvbk5hbWUgPSAocmVzdWx0VHlwZSAoKikg
cGFyYW1ldGVyRGVjbGFyYXRpb25zKSBkbHN5bShmcmFtZXdvcmsjI0xpYnJhcnkoKSwgI2Z1bmN0
aW9uTmFtZSk7IFwKLSAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShzb2Z0TGluayMjZnVuY3Rp
b25OYW1lLCAiJXMiLCBkbGVycm9yKCkpOyBcCi0gICAgICAgIHJldHVybiBzb2Z0TGluayMjZnVu
Y3Rpb25OYW1lIHBhcmFtZXRlck5hbWVzOyBcCi0gICAgfSBcCi0gICAgXAotICAgIGlubGluZSBy
ZXN1bHRUeXBlIGZ1bmN0aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMgXAotICAgIHsgXAot
ICAgICAgICByZXR1cm4gc29mdExpbmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJOYW1lczsgXAot
ICAgIH0KLQotI2RlZmluZSBTT0ZUX0xJTktfTUFZX0ZBSUwoZnJhbWV3b3JrLCBmdW5jdGlvbk5h
bWUsIHJlc3VsdFR5cGUsIHBhcmFtZXRlckRlY2xhcmF0aW9ucywgcGFyYW1ldGVyTmFtZXMpIFwK
LSAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAotICAgIHJlc3VsdFR5cGUgZnVuY3Rpb25OYW1lIHBh
cmFtZXRlckRlY2xhcmF0aW9uczsgXAotICAgIFdURl9FWFRFUk5fQ19FTkQgXAotICAgIHN0YXRp
YyByZXN1bHRUeXBlICgqc29mdExpbmsjI2Z1bmN0aW9uTmFtZSkgcGFyYW1ldGVyRGVjbGFyYXRp
b25zID0gMDsgXAotICAgIFwKLSAgICBzdGF0aWMgYm9vbCBpbml0IyNmdW5jdGlvbk5hbWUoKSBc
Ci0gICAgeyBcCi0gICAgICAgIEFTU0VSVCghc29mdExpbmsjI2Z1bmN0aW9uTmFtZSk7IFwKLSAg
ICAgICAgc29mdExpbmsjI2Z1bmN0aW9uTmFtZSA9IChyZXN1bHRUeXBlICgqKSBwYXJhbWV0ZXJE
ZWNsYXJhdGlvbnMpIGRsc3ltKGZyYW1ld29yayMjTGlicmFyeSgpLCAjZnVuY3Rpb25OYW1lKTsg
XAotICAgICAgICByZXR1cm4gISFzb2Z0TGluayMjZnVuY3Rpb25OYW1lOyBcCi0gICAgfSBcCi0g
ICAgXAotICAgIHN0YXRpYyBib29sIGNhbkxvYWQjI2Z1bmN0aW9uTmFtZSgpIFwKLSAgICB7IFwK
LSAgICAgICAgc3RhdGljIGJvb2wgbG9hZGVkID0gaW5pdCMjZnVuY3Rpb25OYW1lKCk7IFwKLSAg
ICAgICAgcmV0dXJuIGxvYWRlZDsgXAotICAgIH0gXAotICAgIFwKLSAgICBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpIHJlc3VsdFR5cGUgZnVuY3Rpb25OYW1lIHBhcmFtZXRl
ckRlY2xhcmF0aW9ucyBcCi0gICAgeyBcCi0gICAgICAgIEFTU0VSVChzb2Z0TGluayMjZnVuY3Rp
b25OYW1lKTsgXAotICAgICAgICByZXR1cm4gc29mdExpbmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0
ZXJOYW1lczsgXAotICAgIH0KLQotLyogY2FsbGluZ0NvbnZlbnRpb24gaXMgdW51c2VkIG9uIE1h
YyBidXQgaXMgaGVyZSB0byBrZWVwIHRoZSBtYWNybyBwcm90b3R5cGUgdGhlIHNhbWUgYmV0d2Vl
biBNYWMgYW5kIFdpbmRvd3MuICovCi0jZGVmaW5lIFNPRlRfTElOS19PUFRJT05BTChmcmFtZXdv
cmssIGZ1bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgY2FsbGluZ0NvbnZlbnRpb24sIHBhcmFtZXRl
ckRlY2xhcmF0aW9ucykgXAotICAgIFdURl9FWFRFUk5fQ19CRUdJTiBcCi0gICAgcmVzdWx0VHlw
ZSBmdW5jdGlvbk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCi0gICAgV1RGX0VYVEVSTl9D
X0VORCBcCi0gICAgdHlwZWRlZiByZXN1bHRUeXBlICgqZnVuY3Rpb25OYW1lIyNQdHJUeXBlKSBw
YXJhbWV0ZXJEZWNsYXJhdGlvbnM7IFwKLSAgICBcCi0gICAgc3RhdGljIGZ1bmN0aW9uTmFtZSMj
UHRyVHlwZSBmdW5jdGlvbk5hbWUjI1B0cigpIFwKLSAgICB7IFwKLSAgICAgICAgc3RhdGljIGZ1
bmN0aW9uTmFtZSMjUHRyVHlwZSBwdHIgPSByZWludGVycHJldF9jYXN0PGZ1bmN0aW9uTmFtZSMj
UHRyVHlwZT4oZGxzeW0oZnJhbWV3b3JrIyNMaWJyYXJ5KCksICNmdW5jdGlvbk5hbWUpKTsgXAot
ICAgICAgICByZXR1cm4gcHRyOyBcCi0gICAgfQotCi0jZGVmaW5lIFNPRlRfTElOS19DTEFTUyhm
cmFtZXdvcmssIGNsYXNzTmFtZSkgXAotICAgIEBjbGFzcyBjbGFzc05hbWU7IFwKLSAgICBzdGF0
aWMgQ2xhc3MgaW5pdCMjY2xhc3NOYW1lKCk7IFwKLSAgICBzdGF0aWMgQ2xhc3MgKCpnZXQjI2Ns
YXNzTmFtZSMjQ2xhc3MpKCkgPSBpbml0IyNjbGFzc05hbWU7IFwKLSAgICBzdGF0aWMgQ2xhc3Mg
Y2xhc3MjI2NsYXNzTmFtZTsgXAotICAgIFwKLSAgICBzdGF0aWMgQ2xhc3MgY2xhc3NOYW1lIyNG
dW5jdGlvbigpIFwKLSAgICB7IFwKLSAgICAgICAgcmV0dXJuIGNsYXNzIyNjbGFzc05hbWU7IFwK
LSAgICB9IFwKLSAgICBcCi0gICAgc3RhdGljIENsYXNzIGluaXQjI2NsYXNzTmFtZSgpIFwKLSAg
ICB7IFwKLSAgICAgICAgZnJhbWV3b3JrIyNMaWJyYXJ5KCk7IFwKLSAgICAgICAgY2xhc3MjI2Ns
YXNzTmFtZSA9IG9iamNfZ2V0Q2xhc3MoI2NsYXNzTmFtZSk7IFwKLSAgICAgICAgQVNTRVJUKGNs
YXNzIyNjbGFzc05hbWUpOyBcCi0gICAgICAgIGdldCMjY2xhc3NOYW1lIyNDbGFzcyA9IGNsYXNz
TmFtZSMjRnVuY3Rpb247IFwKLSAgICAgICAgcmV0dXJuIGNsYXNzIyNjbGFzc05hbWU7IFwKLSAg
ICB9IFwKLSAgICBfUHJhZ21hKCJjbGFuZyBkaWFnbm9zdGljIHB1c2giKSBcCi0gICAgX1ByYWdt
YSgiY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVd1bnVzZWQtZnVuY3Rpb25cIiIpIFwKLSAg
ICBzdGF0aWMgY2xhc3NOYW1lICphbGxvYyMjY2xhc3NOYW1lIyNJbnN0YW5jZSgpIFwKLSAgICB7
IFwKLSAgICAgICAgcmV0dXJuIFtnZXQjI2NsYXNzTmFtZSMjQ2xhc3MoKSBhbGxvY107IFwKLSAg
ICB9IFwKLSAgICBfUHJhZ21hKCJjbGFuZyBkaWFnbm9zdGljIHBvcCIpCi0KLSNkZWZpbmUgU09G
VF9MSU5LX0NMQVNTX09QVElPTkFMKGZyYW1ld29yaywgY2xhc3NOYW1lKSBcCi0gICAgQGNsYXNz
IGNsYXNzTmFtZTsgXAotICAgIHN0YXRpYyBDbGFzcyBpbml0IyNjbGFzc05hbWUoKTsgXAotICAg
IHN0YXRpYyBDbGFzcyAoKmdldCMjY2xhc3NOYW1lIyNDbGFzcykoKSA9IGluaXQjI2NsYXNzTmFt
ZTsgXAotICAgIHN0YXRpYyBDbGFzcyBjbGFzcyMjY2xhc3NOYW1lOyBcCi0gICAgXAotICAgIHN0
YXRpYyBDbGFzcyBjbGFzc05hbWUjI0Z1bmN0aW9uKCkgXAotICAgIHsgXAotICAgICAgICByZXR1
cm4gY2xhc3MjI2NsYXNzTmFtZTsgXAotICAgIH0gXAotICAgIFwKLSAgICBzdGF0aWMgQ2xhc3Mg
aW5pdCMjY2xhc3NOYW1lKCkgXAotICAgIHsgXAotICAgICAgICBmcmFtZXdvcmsjI0xpYnJhcnko
KTsgXAotICAgICAgICBjbGFzcyMjY2xhc3NOYW1lID0gb2JqY19nZXRDbGFzcygjY2xhc3NOYW1l
KTsgXAotICAgICAgICBnZXQjI2NsYXNzTmFtZSMjQ2xhc3MgPSBjbGFzc05hbWUjI0Z1bmN0aW9u
OyBcCi0gICAgICAgIHJldHVybiBjbGFzcyMjY2xhc3NOYW1lOyBcCi0gICAgfSBcCi0gICAgX1By
YWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBwdXNoIikgXAotICAgIF9QcmFnbWEoImNsYW5nIGRpYWdu
b3N0aWMgaWdub3JlZCBcIi1XdW51c2VkLWZ1bmN0aW9uXCIiKSBcCi0gICAgc3RhdGljIGNsYXNz
TmFtZSAqYWxsb2MjI2NsYXNzTmFtZSMjSW5zdGFuY2UoKSBcCi0gICAgeyBcCi0gICAgICAgIHJl
dHVybiBbZ2V0IyNjbGFzc05hbWUjI0NsYXNzKCkgYWxsb2NdOyBcCi0gICAgfSBcCi0gICAgX1By
YWdtYSgiY2xhbmcgZGlhZ25vc3RpYyBwb3AiKQotCi0jZGVmaW5lIFNPRlRfTElOS19QT0lOVEVS
KGZyYW1ld29yaywgbmFtZSwgdHlwZSkgXAotICAgIHN0YXRpYyB0eXBlIGluaXQjI25hbWUoKTsg
XAotICAgIHN0YXRpYyB0eXBlICgqZ2V0IyNuYW1lKSgpID0gaW5pdCMjbmFtZTsgXAotICAgIHN0
YXRpYyB0eXBlIHBvaW50ZXIjI25hbWU7IFwKLSAgICBcCi0gICAgc3RhdGljIHR5cGUgbmFtZSMj
RnVuY3Rpb24oKSBcCi0gICAgeyBcCi0gICAgICAgIHJldHVybiBwb2ludGVyIyNuYW1lOyBcCi0g
ICAgfSBcCi0gICAgXAotICAgIHN0YXRpYyB0eXBlIGluaXQjI25hbWUoKSBcCi0gICAgeyBcCi0g
ICAgICAgIHZvaWQqKiBwb2ludGVyID0gc3RhdGljX2Nhc3Q8dm9pZCoqPihkbHN5bShmcmFtZXdv
cmsjI0xpYnJhcnkoKSwgI25hbWUpKTsgXAotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHBv
aW50ZXIsICIlcyIsIGRsZXJyb3IoKSk7IFwKLSAgICAgICAgcG9pbnRlciMjbmFtZSA9IHN0YXRp
Y19jYXN0PHR5cGU+KCpwb2ludGVyKTsgXAotICAgICAgICBnZXQjI25hbWUgPSBuYW1lIyNGdW5j
dGlvbjsgXAotICAgICAgICByZXR1cm4gcG9pbnRlciMjbmFtZTsgXAotICAgIH0KLQotI2RlZmlu
ZSBTT0ZUX0xJTktfUE9JTlRFUl9PUFRJT05BTChmcmFtZXdvcmssIG5hbWUsIHR5cGUpIFwKLSAg
ICBzdGF0aWMgdHlwZSBpbml0IyNuYW1lKCk7IFwKLSAgICBzdGF0aWMgdHlwZSAoKmdldCMjbmFt
ZSkoKSA9IGluaXQjI25hbWU7IFwKLSAgICBzdGF0aWMgdHlwZSBwb2ludGVyIyNuYW1lOyBcCi0g
ICAgXAotICAgIHN0YXRpYyB0eXBlIG5hbWUjI0Z1bmN0aW9uKCkgXAotICAgIHsgXAotICAgICAg
ICByZXR1cm4gcG9pbnRlciMjbmFtZTsgXAotICAgIH0gXAotICAgIFwKLSAgICBzdGF0aWMgdHlw
ZSBpbml0IyNuYW1lKCkgXAotICAgIHsgXAotICAgICAgICB2b2lkKiogcG9pbnRlciA9IHN0YXRp
Y19jYXN0PHZvaWQqKj4oZGxzeW0oZnJhbWV3b3JrIyNMaWJyYXJ5KCksICNuYW1lKSk7IFwKLSAg
ICAgICAgaWYgKHBvaW50ZXIpIFwKLSAgICAgICAgICAgIHBvaW50ZXIjI25hbWUgPSBzdGF0aWNf
Y2FzdDx0eXBlPigqcG9pbnRlcik7IFwKLSAgICAgICAgZ2V0IyNuYW1lID0gbmFtZSMjRnVuY3Rp
b247IFwKLSAgICAgICAgcmV0dXJuIHBvaW50ZXIjI25hbWU7IFwKLSAgICB9Ci0KLSNkZWZpbmUg
U09GVF9MSU5LX0NPTlNUQU5UKGZyYW1ld29yaywgbmFtZSwgdHlwZSkgXAotICAgIHN0YXRpYyB0
eXBlIGluaXQjI25hbWUoKTsgXAotICAgIHN0YXRpYyB0eXBlICgqZ2V0IyNuYW1lKSgpID0gaW5p
dCMjbmFtZTsgXAotICAgIHN0YXRpYyB0eXBlIGNvbnN0YW50IyNuYW1lOyBcCi0gICAgXAotICAg
IHN0YXRpYyB0eXBlIG5hbWUjI0Z1bmN0aW9uKCkgXAotICAgIHsgXAotICAgICAgICByZXR1cm4g
Y29uc3RhbnQjI25hbWU7IFwKLSAgICB9IFwKLSAgICBcCi0gICAgc3RhdGljIHR5cGUgaW5pdCMj
bmFtZSgpIFwKLSAgICB7IFwKLSAgICAgICAgdm9pZCogY29uc3RhbnQgPSBkbHN5bShmcmFtZXdv
cmsjI0xpYnJhcnkoKSwgI25hbWUpOyBcCi0gICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoY29u
c3RhbnQsICIlcyIsIGRsZXJyb3IoKSk7IFwKLSAgICAgICAgY29uc3RhbnQjI25hbWUgPSAqc3Rh
dGljX2Nhc3Q8dHlwZSo+KGNvbnN0YW50KTsgXAotICAgICAgICBnZXQjI25hbWUgPSBuYW1lIyNG
dW5jdGlvbjsgXAotICAgICAgICByZXR1cm4gY29uc3RhbnQjI25hbWU7IFwKLSAgICB9Ci0KLSNk
ZWZpbmUgU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMKGZyYW1ld29yaywgbmFtZSwgdHlwZSkg
XAotICAgIHN0YXRpYyBib29sIGluaXQjI25hbWUoKTsgXAotICAgIHN0YXRpYyB0eXBlICgqZ2V0
IyNuYW1lKSgpID0gMDsgXAotICAgIHN0YXRpYyB0eXBlIGNvbnN0YW50IyNuYW1lOyBcCi0gICAg
XAotICAgIHN0YXRpYyB0eXBlIG5hbWUjI0Z1bmN0aW9uKCkgXAotICAgIHsgXAotICAgICAgICBy
ZXR1cm4gY29uc3RhbnQjI25hbWU7IFwKLSAgICB9IFwKLSAgICBcCi0gICAgc3RhdGljIGJvb2wg
Y2FuTG9hZCMjbmFtZSgpIFwKLSAgICB7IFwKLSAgICAgICAgc3RhdGljIGJvb2wgbG9hZGVkID0g
aW5pdCMjbmFtZSgpOyBcCi0gICAgICAgIHJldHVybiBsb2FkZWQ7IFwKLSAgICB9IFwKLSAgICBc
Ci0gICAgc3RhdGljIGJvb2wgaW5pdCMjbmFtZSgpIFwKLSAgICB7IFwKLSAgICAgICAgQVNTRVJU
KCFnZXQjI25hbWUpOyBcCi0gICAgICAgIHZvaWQqIGNvbnN0YW50ID0gZGxzeW0oZnJhbWV3b3Jr
IyNMaWJyYXJ5KCksICNuYW1lKTsgXAotICAgICAgICBpZiAoIWNvbnN0YW50KSBcCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7IFwKLSAgICAgICAgY29uc3RhbnQjI25hbWUgPSAqc3RhdGljX2Nh
c3Q8dHlwZSo+KGNvbnN0YW50KTsgXAotICAgICAgICBnZXQjI25hbWUgPSBuYW1lIyNGdW5jdGlv
bjsgXAotICAgICAgICByZXR1cm4gdHJ1ZTsgXAotICAgIH0KLQotI3ByYWdtYSBtYXJrIC0gU29m
dC1saW5rIG1hY3JvcyBmb3Igc2hhcmluZyBhY3Jvc3MgbXVsdGlwbGUgc291cmNlIGZpbGVzCi0K
LS8vIFNlZSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9Db3JlTWVkaWFTb2Z0TGluay57Y3Bw
LGh9IGZvciBhbiBleGFtcGxlIGltcGxlbWVudGF0aW9uLgotCi0jZGVmaW5lIFNPRlRfTElOS19G
UkFNRVdPUktfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrKSBcCi0gICAg
bmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAotICAgIGV4dGVybiB2b2lkKiBmcmFtZXdv
cmsjI0xpYnJhcnkoYm9vbCBpc09wdGlvbmFsID0gZmFsc2UpOyBcCi0gICAgYm9vbCBpcyMjZnJh
bWV3b3JrIyNGcmFtZXdvcmtBdmFpbGFibGUoKTsgXAotICAgIGlubGluZSBib29sIGlzIyNmcmFt
ZXdvcmsjI0ZyYW1ld29ya0F2YWlsYWJsZSgpIHsgXAotICAgICAgICByZXR1cm4gZnJhbWV3b3Jr
IyNMaWJyYXJ5KHRydWUpICE9IG51bGxwdHI7IFwKLSAgICB9IFwKLSAgICB9Ci0KLSNkZWZpbmUg
U09GVF9MSU5LX0ZSQU1FV09SS19GT1JfU09VUkNFKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdv
cmspIFwKLSAgICBuYW1lc3BhY2UgZnVuY3Rpb25OYW1lc3BhY2UgeyBcCi0gICAgdm9pZCogZnJh
bWV3b3JrIyNMaWJyYXJ5KGJvb2wgaXNPcHRpb25hbCA9IGZhbHNlKTsgXAotICAgIHZvaWQqIGZy
YW1ld29yayMjTGlicmFyeShib29sIGlzT3B0aW9uYWwpIFwKLSAgICB7IFwKLSAgICAgICAgc3Rh
dGljIHZvaWQqIGZyYW1ld29ya0xpYnJhcnk7IFwKLSAgICAgICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlOyBcCi0gICAgICAgIGRpc3BhdGNoX29uY2UoJm9uY2UsIF57IFwKLSAgICAgICAg
ICAgIGZyYW1ld29ya0xpYnJhcnkgPSBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
LyIgI2ZyYW1ld29yayAiLmZyYW1ld29yay8iICNmcmFtZXdvcmssIFJUTERfTk9XKTsgXAotICAg
ICAgICB9KTsgXAotICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFX1VOVVNFRChpc09wdGlvbmFs
LCBpc09wdGlvbmFsIHx8IGZyYW1ld29ya0xpYnJhcnksICIlcyIsIGRsZXJyb3IoKSk7IFwKLSAg
ICAgICAgcmV0dXJuIGZyYW1ld29ya0xpYnJhcnk7IFwKLSAgICB9IFwKLSAgICB9Ci0KLSNkZWZp
bmUgU09GVF9MSU5LX0NMQVNTX0ZPUl9IRUFERVIoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29y
aywgY2xhc3NOYW1lKSBcCi0gICAgQGNsYXNzIGNsYXNzTmFtZTsgXAotICAgIG5hbWVzcGFjZSBm
dW5jdGlvbk5hbWVzcGFjZSB7IFwKLSAgICBleHRlcm4gQ2xhc3MgKCpnZXRfIyNmcmFtZXdvcmsj
I18jI2NsYXNzTmFtZSMjQ2xhc3MpKCk7IFwKLSAgICBjbGFzc05hbWUgKmFsbG9jIyNjbGFzc05h
bWUjI0luc3RhbmNlKCk7IFwKLSAgICBpbmxpbmUgY2xhc3NOYW1lICphbGxvYyMjY2xhc3NOYW1l
IyNJbnN0YW5jZSgpIFwKLSAgICB7IFwKLSAgICAgICAgcmV0dXJuIFtnZXRfIyNmcmFtZXdvcmsj
I18jI2NsYXNzTmFtZSMjQ2xhc3MoKSBhbGxvY107IFwKLSAgICB9IFwKLSAgICB9Ci0KLSNkZWZp
bmUgU09GVF9MSU5LX0NMQVNTX0ZPUl9TT1VSQ0UoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29y
aywgY2xhc3NOYW1lKSBcCi0gICAgQGNsYXNzIGNsYXNzTmFtZTsgXAotICAgIG5hbWVzcGFjZSBm
dW5jdGlvbk5hbWVzcGFjZSB7IFwKLSAgICBzdGF0aWMgQ2xhc3MgaW5pdCMjY2xhc3NOYW1lKCk7
IFwKLSAgICBDbGFzcyAoKmdldF8jI2ZyYW1ld29yayMjXyMjY2xhc3NOYW1lIyNDbGFzcykoKSA9
IGluaXQjI2NsYXNzTmFtZTsgXAotICAgIHN0YXRpYyBDbGFzcyBjbGFzcyMjY2xhc3NOYW1lOyBc
Ci0gICAgXAotICAgIHN0YXRpYyBDbGFzcyBjbGFzc05hbWUjI0Z1bmN0aW9uKCkgXAotICAgIHsg
XAotICAgICAgICByZXR1cm4gY2xhc3MjI2NsYXNzTmFtZTsgXAotICAgIH0gXAotICAgIFwKLSAg
ICBzdGF0aWMgQ2xhc3MgaW5pdCMjY2xhc3NOYW1lKCkgXAotICAgIHsgXAotICAgICAgICBzdGF0
aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7IFwKLSAgICAgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwg
XnsgXAotICAgICAgICAgICAgZnJhbWV3b3JrIyNMaWJyYXJ5KCk7IFwKLSAgICAgICAgICAgIGNs
YXNzIyNjbGFzc05hbWUgPSBvYmpjX2dldENsYXNzKCNjbGFzc05hbWUpOyBcCi0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChjbGFzcyMjY2xhc3NOYW1lKTsgXAotICAgICAgICAgICAgZ2V0XyMj
ZnJhbWV3b3JrIyNfIyNjbGFzc05hbWUjI0NsYXNzID0gY2xhc3NOYW1lIyNGdW5jdGlvbjsgXAot
ICAgICAgICB9KTsgXAotICAgICAgICByZXR1cm4gY2xhc3MjI2NsYXNzTmFtZTsgXAotICAgIH0g
XAotICAgIH0KLQotI2RlZmluZSBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihmdW5jdGlv
bk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAotICAg
IFdURl9FWFRFUk5fQ19CRUdJTiBcCi0gICAgZXh0ZXJuIGNvbnN0IHZhcmlhYmxlVHlwZSB2YXJp
YWJsZU5hbWU7IFwKLSAgICBXVEZfRVhURVJOX0NfRU5EIFwKLSAgICBuYW1lc3BhY2UgZnVuY3Rp
b25OYW1lc3BhY2UgeyBcCi0gICAgdmFyaWFibGVUeXBlIGdldF8jI2ZyYW1ld29yayMjXyMjdmFy
aWFibGVOYW1lKCk7IFwKLSAgICB9Ci0KLSNkZWZpbmUgU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9T
T1VSQ0UoZnVuY3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgdmFyaWFibGVOYW1lLCB2YXJpYWJs
ZVR5cGUpIFwKLSAgICBXVEZfRVhURVJOX0NfQkVHSU4gXAotICAgIGV4dGVybiBjb25zdCB2YXJp
YWJsZVR5cGUgdmFyaWFibGVOYW1lOyBcCi0gICAgV1RGX0VYVEVSTl9DX0VORCBcCi0gICAgbmFt
ZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAotICAgIHZhcmlhYmxlVHlwZSBnZXRfIyNmcmFt
ZXdvcmsjI18jI3ZhcmlhYmxlTmFtZSgpOyBcCi0gICAgdmFyaWFibGVUeXBlIGdldF8jI2ZyYW1l
d29yayMjXyMjdmFyaWFibGVOYW1lKCkgXAotICAgIHsgXAotICAgICAgICBzdGF0aWMgdmFyaWFi
bGVUeXBlIGNvbnN0YW50IyNmcmFtZXdvcmsjI3ZhcmlhYmxlTmFtZTsgXAotICAgICAgICBzdGF0
aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7IFwKLSAgICAgICAgZGlzcGF0Y2hfb25jZSgmb25jZSwg
XnsgXAotICAgICAgICAgICAgdm9pZCogY29uc3RhbnQgPSBkbHN5bShmcmFtZXdvcmsjI0xpYnJh
cnkoKSwgI3ZhcmlhYmxlTmFtZSk7IFwKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhf
TUVTU0FHRShjb25zdGFudCwgIiVzIiwgZGxlcnJvcigpKTsgXAotICAgICAgICAgICAgY29uc3Rh
bnQjI2ZyYW1ld29yayMjdmFyaWFibGVOYW1lID0gKnN0YXRpY19jYXN0PHZhcmlhYmxlVHlwZSo+
KGNvbnN0YW50KTsgXAotICAgICAgICB9KTsgXAotICAgICAgICByZXR1cm4gY29uc3RhbnQjI2Zy
YW1ld29yayMjdmFyaWFibGVOYW1lOyBcCi0gICAgfSBcCi0gICAgfQotCi0jZGVmaW5lIFNPRlRf
TElOS19GVU5DVElPTl9GT1JfSEVBREVSKGZ1bmN0aW9uTmFtZXNwYWNlLCBmcmFtZXdvcmssIGZ1
bmN0aW9uTmFtZSwgcmVzdWx0VHlwZSwgcGFyYW1ldGVyRGVjbGFyYXRpb25zLCBwYXJhbWV0ZXJO
YW1lcykgXAotICAgIFdURl9FWFRFUk5fQ19CRUdJTiBcCi0gICAgcmVzdWx0VHlwZSBmdW5jdGlv
bk5hbWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCi0gICAgV1RGX0VYVEVSTl9DX0VORCBcCi0g
ICAgbmFtZXNwYWNlIGZ1bmN0aW9uTmFtZXNwYWNlIHsgXAotICAgIGV4dGVybiByZXN1bHRUeXBl
ICgqc29mdExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lKSBwYXJhbWV0ZXJEZWNsYXJhdGlv
bnM7IFwKLSAgICBpbmxpbmUgcmVzdWx0VHlwZSBzb2Z0TGlua18jI2ZyYW1ld29yayMjXyMjZnVu
Y3Rpb25OYW1lIHBhcmFtZXRlckRlY2xhcmF0aW9ucyBcCi0gICAgeyBcCi0gICAgICAgIHJldHVy
biBzb2Z0TGluayMjZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyTmFtZXM7IFwKLSAg
ICB9IFwKLSAgICB9Ci0KLSNkZWZpbmUgU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0UoZnVu
Y3Rpb25OYW1lc3BhY2UsIGZyYW1ld29yaywgZnVuY3Rpb25OYW1lLCByZXN1bHRUeXBlLCBwYXJh
bWV0ZXJEZWNsYXJhdGlvbnMsIHBhcmFtZXRlck5hbWVzKSBcCi0gICAgV1RGX0VYVEVSTl9DX0JF
R0lOIFwKLSAgICByZXN1bHRUeXBlIGZ1bmN0aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnM7
IFwKLSAgICBXVEZfRVhURVJOX0NfRU5EIFwKLSAgICBuYW1lc3BhY2UgZnVuY3Rpb25OYW1lc3Bh
Y2UgeyBcCi0gICAgc3RhdGljIHJlc3VsdFR5cGUgaW5pdCMjZnJhbWV3b3JrIyNmdW5jdGlvbk5h
bWUgcGFyYW1ldGVyRGVjbGFyYXRpb25zOyBcCi0gICAgcmVzdWx0VHlwZSAoKnNvZnRMaW5rIyNm
cmFtZXdvcmsjI2Z1bmN0aW9uTmFtZSkgcGFyYW1ldGVyRGVjbGFyYXRpb25zID0gaW5pdCMjZnJh
bWV3b3JrIyNmdW5jdGlvbk5hbWU7IFwKLSAgICBzdGF0aWMgcmVzdWx0VHlwZSBpbml0IyNmcmFt
ZXdvcmsjI2Z1bmN0aW9uTmFtZSBwYXJhbWV0ZXJEZWNsYXJhdGlvbnMgXAotICAgIHsgXAotICAg
ICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2U7IFwKLSAgICAgICAgZGlzcGF0Y2hfb25j
ZSgmb25jZSwgXnsgXAotICAgICAgICAgICAgc29mdExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25O
YW1lID0gKHJlc3VsdFR5cGUgKCopIHBhcmFtZXRlckRlY2xhcmF0aW9ucykgZGxzeW0oZnJhbWV3
b3JrIyNMaWJyYXJ5KCksICNmdW5jdGlvbk5hbWUpOyBcCi0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9XSVRIX01FU1NBR0Uoc29mdExpbmsjI2ZyYW1ld29yayMjZnVuY3Rpb25OYW1lLCAiJXMi
LCBkbGVycm9yKCkpOyBcCi0gICAgICAgIH0pOyBcCi0gICAgICAgIHJldHVybiBzb2Z0TGluayMj
ZnJhbWV3b3JrIyNmdW5jdGlvbk5hbWUgcGFyYW1ldGVyTmFtZXM7IFwKLSAgICB9IFwKLSAgICB9
Ci0KLSNkZWZpbmUgU09GVF9MSU5LX1BPSU5URVJfRk9SX0hFQURFUihmdW5jdGlvbk5hbWVzcGFj
ZSwgZnJhbWV3b3JrLCB2YXJpYWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAotICAgIG5hbWVzcGFj
ZSBmdW5jdGlvbk5hbWVzcGFjZSB7IFwKLSAgICBleHRlcm4gdmFyaWFibGVUeXBlICgqZ2V0XyMj
ZnJhbWV3b3JrIyNfIyN2YXJpYWJsZU5hbWUpKCk7IFwKLSAgICB9Ci0KLSNkZWZpbmUgU09GVF9M
SU5LX1BPSU5URVJfRk9SX1NPVVJDRShmdW5jdGlvbk5hbWVzcGFjZSwgZnJhbWV3b3JrLCB2YXJp
YWJsZU5hbWUsIHZhcmlhYmxlVHlwZSkgXAotICAgIG5hbWVzcGFjZSBmdW5jdGlvbk5hbWVzcGFj
ZSB7IFwKLSAgICBzdGF0aWMgdmFyaWFibGVUeXBlIGluaXQjI2ZyYW1ld29yayMjdmFyaWFibGVO
YW1lKCk7IFwKLSAgICB2YXJpYWJsZVR5cGUgKCpnZXRfIyNmcmFtZXdvcmsjI18jI3ZhcmlhYmxl
TmFtZSkoKSA9IGluaXQjI2ZyYW1ld29yayMjdmFyaWFibGVOYW1lOyBcCi0gICAgc3RhdGljIHZh
cmlhYmxlVHlwZSBwb2ludGVyIyNmcmFtZXdvcmsjI3ZhcmlhYmxlTmFtZTsgXAotICAgIFwKLSAg
ICBzdGF0aWMgdmFyaWFibGVUeXBlIHBvaW50ZXIjI2ZyYW1ld29yayMjdmFyaWFibGVOYW1lIyNG
dW5jdGlvbigpIFwKLSAgICB7IFwKLSAgICAgICAgcmV0dXJuIHBvaW50ZXIjI2ZyYW1ld29yayMj
dmFyaWFibGVOYW1lOyBcCi0gICAgfSBcCi0gICAgXAotICAgIHN0YXRpYyB2YXJpYWJsZVR5cGUg
aW5pdCMjZnJhbWV3b3JrIyN2YXJpYWJsZU5hbWUoKSBcCi0gICAgeyBcCi0gICAgICAgIHN0YXRp
YyBkaXNwYXRjaF9vbmNlX3Qgb25jZTsgXAotICAgICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlLCBe
eyBcCi0gICAgICAgICAgICB2b2lkKiogcG9pbnRlciA9IHN0YXRpY19jYXN0PHZvaWQqKj4oZGxz
eW0oZnJhbWV3b3JrIyNMaWJyYXJ5KCksICN2YXJpYWJsZU5hbWUpKTsgXAotICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKHBvaW50ZXIsICIlcyIsIGRsZXJyb3IoKSk7IFwK
LSAgICAgICAgICAgIHBvaW50ZXIjI2ZyYW1ld29yayMjdmFyaWFibGVOYW1lID0gc3RhdGljX2Nh
c3Q8dmFyaWFibGVUeXBlPigqcG9pbnRlcik7IFwKLSAgICAgICAgICAgIGdldF8jI2ZyYW1ld29y
ayMjXyMjdmFyaWFibGVOYW1lID0gcG9pbnRlciMjZnJhbWV3b3JrIyN2YXJpYWJsZU5hbWUjI0Z1
bmN0aW9uOyBcCi0gICAgICAgIH0pOyBcCi0gICAgICAgIHJldHVybiBwb2ludGVyIyNmcmFtZXdv
cmsjI3ZhcmlhYmxlTmFtZTsgXAotICAgIH0gXAotICAgIH0KLQotI2VuZGlmIC8vIFNvZnRMaW5r
aW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9Db3JlTWVk
aWFTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9Db3JlTWVkaWFTUEkuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkxMDczMWM4NmNiZjhkYzY4YjMyNTQ3OGMx
MmMyYjhlNzY0ZDA2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ29yZU1lZGlhU1BJLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgQ29yZU1lZGlhU1BJX2gKLSNkZWZpbmUgQ29yZU1lZGlh
U1BJX2gKLQotI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KLQotI2lmIFBMQVRGT1JN
KENPQ09BKQotCi0jaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNpbmNsdWRlIDxDb3JlTWVk
aWEvQ01Ob3RpZmljYXRpb25DZW50ZXIuaD4KLSNlbHNlCi10eXBlZGVmIHN0cnVjdCBvcGFxdWVD
TU5vdGlmaWNhdGlvbkNlbnRlciAqQ01Ob3RpZmljYXRpb25DZW50ZXJSZWY7Ci10eXBlZGVmIHZv
aWQgKCpDTU5vdGlmaWNhdGlvbkNhbGxiYWNrKShDTU5vdGlmaWNhdGlvbkNlbnRlclJlZiBpbkNl
bnRlciwgY29uc3Qgdm9pZCAqaW5MaXN0ZW5lciwgQ0ZTdHJpbmdSZWYgaW5Ob3RpZmljYXRpb25O
YW1lLCBjb25zdCB2b2lkICppbk5vdGlmeWluZ09iamVjdCwgQ0ZUeXBlUmVmIGluTm90aWZpY2F0
aW9uUGF5bG9hZCk7Ci0jZW5kaWYKLQotV1RGX0VYVEVSTl9DX0JFR0lOCi1DTU5vdGlmaWNhdGlv
bkNlbnRlclJlZiBDTU5vdGlmaWNhdGlvbkNlbnRlckdldERlZmF1bHRMb2NhbENlbnRlcih2b2lk
KTsKLU9TU3RhdHVzIENNTm90aWZpY2F0aW9uQ2VudGVyQWRkTGlzdGVuZXIoQ01Ob3RpZmljYXRp
b25DZW50ZXJSZWYgaW5DZW50ZXIsIGNvbnN0IHZvaWQgKmluTGlzdGVuZXIsIENNTm90aWZpY2F0
aW9uQ2FsbGJhY2sgaW5DYWxsQmFjaywgQ0ZTdHJpbmdSZWYgaW5Ob3RpZmljYXRpb25OYW1lLCBj
b25zdCB2b2lkICppbk9iamVjdFRvT2JzZXJ2ZSwgVUludDMyIGluRmxhZ3MpOwotT1NTdGF0dXMg
Q01Ob3RpZmljYXRpb25DZW50ZXJSZW1vdmVMaXN0ZW5lcihDTU5vdGlmaWNhdGlvbkNlbnRlclJl
ZiBpbkNlbnRlciwgY29uc3Qgdm9pZCAqaW5MaXN0ZW5lciwgQ01Ob3RpZmljYXRpb25DYWxsYmFj
ayBpbkNhbGxCYWNrLCBDRlN0cmluZ1JlZiBpbk5vdGlmaWNhdGlvbk5hbWUsIGNvbnN0IHZvaWQg
KmluT2JqZWN0KTsKLVdURl9FWFRFUk5fQ19FTkQKLQotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09B
KQotCi0jaWYgUExBVEZPUk0oV0lOKQotCi10eXBlZGVmIHN0cnVjdCBPcGFxdWVDTUJsb2NrQnVm
ZmVyKiBDTUJsb2NrQnVmZmVyUmVmOwotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3Jt
YXREZXNjcmlwdGlvbiogQ01Gb3JtYXREZXNjcmlwdGlvblJlZjsKLXR5cGVkZWYgc3RydWN0IG9w
YXF1ZUNNU2FtcGxlQnVmZmVyKiBDTVNhbXBsZUJ1ZmZlclJlZjsKLQotI2lmbmRlZiBDTVNBTVBM
RUJVRkZFUl9ICi1XVEZfRVhURVJOX0NfQkVHSU4KLSNwcmFnbWEgcGFjayhwdXNoLCA0KQotdHlw
ZWRlZiBzdHJ1Y3QgewotICAgIENNVGltZSBkdXJhdGlvbjsKLSAgICBDTVRpbWUgcHJlc2VudGF0
aW9uVGltZVN0YW1wOwotICAgIENNVGltZSBkZWNvZGVUaW1lU3RhbXA7Ci19IENNU2FtcGxlVGlt
aW5nSW5mbzsKLSNwcmFnbWEgcGFjayhwb3ApCi1XVEZfRVhURVJOX0NfRU5ECi0jZW5kaWYKLSNl
bmRpZiAvLyBQTEFURk9STShXSU4pCi0KLSNlbmRpZiAvLyBDb3JlTWVkaWFTUElfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253295</attachid>
            <date>2015-05-17 13:16:01 -0700</date>
            <delta_ts>2015-05-17 22:58:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20150517131559.patch</filename>
            <type>text/plain</type>
            <size>43902</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRjMTRiZjRjMzVlODk3
ZmFkNzY4ODZlNmY0OTliNzgzMGJmMDIyNC4uMDViNGI1MGRmYTgwOWM2MmZjZDk3MzYzNGVjMTRj
MjBhN2M0NDM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA1LTE2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgV2ViQ29yZSB0
YXJnZXQgYW5kIHN0YXRpYyBsaWJyYXJ5LiBUaGlzIGlzIGludGVuZGVkIHRvIGJlCisgICAgICAg
IHRoZSBkZXN0aW5hdGlvbiB0YXJnZXQgdG8gYnVpbGQgY29kZSB0aGF0IGN1cnJlbnRseSByZXNp
ZGVzIGluCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0uIEZpbGVzIHdpbGwgYmUgbW92ZWQgaW50
byB0aGF0IHRhcmdldCBmaWxlIGJ5IGZpbGUuCisgICAgICAgIFNlcGFyYXRpbmcgdGhpcyBwbGF0
Zm9ybSBjb2RlIGludG8gaXRzIG93biBzdGF0aWMgbGlicmFyeSBlbmZvcmNlcworICAgICAgICBs
YXllcmluZywgYXMgd2VsbCBhcyBlbmNvdXJhZ2VzL2FpZHMgdW5pdCB0ZXN0aW5nIG9mIHRoaXMg
cGxhdGZvcm0gY29kZS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIGEgc21hbGwgZGVwZW5k
ZW5jeSB0cmVlLCBjb25zaXN0aW5nIG9mIHRoZSBDbG9jayBjbGFzcworICAgICAgICBhbmQgaXRz
IGRlcGVuZGVudHMsIGludG8gUEFMLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1BB
TC54Y2NvbmZpZzogQWRkZWQuCisgICAgICAgICogUEFMLyo6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS8KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXIuaDogVXBkYXRlIGZvcndhcmQg
ZGVjbGFyYXRpb24uCisKIDIwMTUtMDUtMTYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChTdWJwaXhlbCk6IERhc2hlZCB1bmRlcmxpbmUgaXMg
bWlzc2luZyB3aGVuIGJveCBpcyBwb3NpdGlvbmVkIGF0IHN1YnBpeGVscy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWM3NDk2ZDk2MDMy
NzRkZjI5ZjY0ZGI3NTlmOTk5MDRhMWJmMDY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnCkBAIC0wLDAgKzEsMzQgQEAKKy8vIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKworI2luY2x1ZGUgIkZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnIgorI2luY2x1ZGUgIlZlcnNpb24ueGNjb25maWciCisKK0hFQURFUl9TRUFSQ0hf
UEFUSFMgPSBGb3J3YXJkaW5nSGVhZGVycyAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2Nh
bC9pbmNsdWRlIiAkKGluaGVyaXRlZCk7CitQUk9EVUNUX05BTUUgPSBQQUw7CitTS0lQX0lOU1RB
TEwgPSBZRVM7CisKKy8vIEZJWE1FOiBVc2UgYSBoZWFkZXJtYXAgb25jZSB3ZSBjYW4gZ2V0IEhF
QURFUk1BUF9JTkNMVURFU19QUk9KRUNUX0hFQURFUlMgdG8gd29yay4KK0hFQURFUk1BUF9JTkNM
VURFU19QUk9KRUNUX0hFQURFUlMgPSBOTzsKK1VTRV9IRUFERVJNQVAgPSBOTzsKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtRXhwb3J0TWFjcm9zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzYzZmFlY2Jl
NjVjMjFhODhmMDk3OGIxNjU5YzZlN2YxNWQ4Nzk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML1BsYXRmb3JtRXhwb3J0TWFjcm9zLmgKQEAgLTAsMCArMSw1MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICogVGhpcyBmaWxlIGhh
bmRsZXMgc2hhcmVkIGxpYnJhcnkgc3ltYm9sIGV4cG9ydCBkZWNvcmF0aW9ucy4gSXQgaXMgcmVj
b21tZW5kZWQKKyAqIHRoYXQgYWxsIFdlYktpdCBwcm9qZWN0cyB1c2UgdGhlc2UgZGVmaW5pdGlv
bnMgc28gdGhhdCBzeW1ib2wgZXhwb3J0cyB3b3JrCisgKiBwcm9wZXJseSBvbiBhbGwgcGxhdGZv
cm1zIGFuZCBjb21waWxlcnMgdGhhdCBXZWJLaXQgYnVpbGRzIHVuZGVyLgorICovCisjaWZuZGVm
IFBsYXRmb3JtRXhwb3J0TWFjcm9zX2gKKyNkZWZpbmUgUGxhdGZvcm1FeHBvcnRNYWNyb3NfaAor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5o
PgorCisvLyBTZWUgbm90ZSBpbiB3dGYvUGxhdGZvcm0uaCBmb3IgbW9yZSBpbmZvIG9uIEVYUE9S
VF9NQUNST1MuCisjaWYgVVNFKEVYUE9SVF9NQUNST1MpCisKKyNpZiAhUExBVEZPUk0oV0lOKQor
I2RlZmluZSBXRUJDT1JFX0VYUE9SVCBXVEZfRVhQT1JUCisjZGVmaW5lIFdFQkNPUkVfVEVTVFNV
UFBPUlRfRVhQT1JUIFdURl9FWFBPUlQKKyNlbHNlCisvLyBXaW5kb3dzIG11c3Qgc2V0IHRoaXMg
cGVyLXByb2plY3QKKyNlbmRpZgorCisjZWxzZSAvLyAhVVNFKEVYUE9SVF9NQUNST1MpCisjZGVm
aW5lIFdFQkNPUkVfRVhQT1JUCisjZGVmaW5lIFdFQkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JUCisK
KyNlbmRpZiAvLyBVU0UoRVhQT1JUX01BQ1JPUykKKworI2VuZGlmIC8vIFBsYXRmb3JtRXhwb3J0
TWFjcm9zX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODk4NTdkN2M2ODJkOTIwNjdmZDQ5
MjJmN2RiYzQ4NzBlOTUxZGJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L2NvbmZpZy5oCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKwor
I2lmIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgJiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJV
SUxESU5HX1dJVEhfQ01BS0UpCisjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKKyNlbmRpZgorCisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyNkZWZpbmUg
VVNFX0ZJTEVfTE9DSyAxCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikgJiYgIVVTRShXSU5H
REkpCisjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlSGVhZGVyRGV0ZWN0aW9uLmg+CisjZW5kaWYK
KworI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKyNpbmNsdWRlICJQbGF0Zm9ybUV4cG9y
dE1hY3Jvcy5oIgorCisjaW5jbHVkZSA8cnVudGltZS9KU0V4cG9ydE1hY3Jvcy5oPgorCisjaWZk
ZWYgX19BUFBMRV9fCisjZGVmaW5lIEhBVkVfRlVOQ19VU0xFRVAgMQorI2VuZGlmIC8qIF9fQVBQ
TEVfXyAqLworCisjaWYgT1MoV0lORE9XUykKKworI2lmbmRlZiBfV0lOMzJfV0lOTlQKKyNkZWZp
bmUgX1dJTjMyX1dJTk5UIDB4NjAxCisjZW5kaWYKKworI2lmbmRlZiBXSU5WRVIKKyNkZWZpbmUg
V0lOVkVSIDB4MDYwMQorI2VuZGlmCisKKy8vIENVUkwgbmVlZHMgd2luc29jaywgc28gZG9uJ3Qg
cHJldmVudCBpbmNsdXNpb24gb2YgaXQKKyNpZiAhVVNFKENVUkwpCisjaWZuZGVmIF9XSU5TT0NL
QVBJXworI2RlZmluZSBfV0lOU09DS0FQSV8gLy8gUHJldmVudCBpbmNsdXNpb24gb2Ygd2luc29j
ay5oIGluIHdpbmRvd3MuaAorI2VuZGlmCisjZW5kaWYKKworI2VuZGlmIC8qIE9TKFdJTkRPV1Mp
ICovCisKKy8vIFVzaW5nIENNYWtlIHdpdGggVW5peCBtYWtlZmlsZXMgZG9lcyBub3QgdXNlIHBy
ZWZpeCBoZWFkZXJzLgorI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZChCVUlMRElOR19XSVRI
X0NNQUtFKQorI2luY2x1ZGUgIldlYkNvcmVQcmVmaXguaCIKKyNlbmRpZgorCisjaWZkZWYgX19j
cGx1c3BsdXMKKworLy8gVGhlc2UgdW5kZWZzIG1hdGNoIHVwIHdpdGggZGVmaW5lcyBpbiBXZWJD
b3JlUHJlZml4LmggZm9yIE1hYyBPUyBYLgorLy8gSGVscHMgdXMgY2F0Y2ggaWYgYW55b25lIHVz
ZXMgbmV3IG9yIGRlbGV0ZSBieSBhY2NpZGVudCBpbiBjb2RlIGFuZCBkb2Vzbid0IGluY2x1ZGUg
ImNvbmZpZy5oIi4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgorCisjaW5jbHVkZSA8Y2lzbzY0Nj4KKworI2VuZGlmCisKKyNpbmNsdWRlIDx3
dGYvRGlzYWxsb3dDVHlwZS5oPgorCisjaWYgQ09NUElMRVIoTVNWQykKKyNkZWZpbmUgU0tJUF9T
VEFUSUNfQ09OU1RSVUNUT1JTX09OX01TVkMgMQorI2Vsc2UKKyNkZWZpbmUgU0tJUF9TVEFUSUNf
Q09OU1RSVUNUT1JTX09OX0dDQyAxCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBQ
TEFURk9STShXSU5fQ0FJUk8pCisjdW5kZWYgVVNFX0NHCisjZGVmaW5lIFVTRV9DQUlSTyAxCisj
ZGVmaW5lIFVTRV9DVVJMIDEKKyNpZm5kZWYgX1dJTlNPQ0tBUElfCisjZGVmaW5lIF9XSU5TT0NL
QVBJXyAvLyBQcmV2ZW50IGluY2x1c2lvbiBvZiB3aW5zb2NrLmggaW4gd2luZG93cy5oCisjZW5k
aWYKKyNlbGlmICFVU0UoV0lOR0RJKQorI2RlZmluZSBVU0VfQ0cgMQorI3VuZGVmIFVTRV9DQUlS
TworI3VuZGVmIFVTRV9DVVJMCisjZW5kaWYKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQor
I2RlZmluZSBVU0VfTkVXX1RIRU1FIDEKKyNlbmRpZgorCisjaWYgVVNFKENHKQorI2lmbmRlZiBD
R0ZMT0FUX0RFRklORUQKKyNpZiAoZGVmaW5lZChfX0xQNjRfXykgJiYgX19MUDY0X18pIHx8IChk
ZWZpbmVkKF9feDg2XzY0X18pICYmIF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSB8fCBk
ZWZpbmVkKF9fYW1kNjRfXykKK3R5cGVkZWYgZG91YmxlIENHRmxvYXQ7CisjZWxzZQordHlwZWRl
ZiBmbG9hdCBDR0Zsb2F0OworI2VuZGlmCisjZGVmaW5lIENHRkxPQVRfREVGSU5FRCAxCisjZW5k
aWYKKyNlbmRpZiAvKiBVU0UoQ0cpICovCisKKyNpZiBQTEFURk9STShJT1MpCisjZGVmaW5lIFdF
QkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNIHdrR2V0UGxhdGZvcm1OYW1lRm9yTmF2aWdhdG9yKCk7
CisjZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9SX1ZFTkRPUiB3a0dldFZlbmRvck5hbWVGb3JOYXZp
Z2F0b3IoKTsKKyNlbmRpZgorCisvLyBGSVhNRTogTW92ZSB0aGlzIHRvIEphdmFTY3JpcHRDb3Jl
L3d0Zi9QbGF0Zm9ybS5oLCB3aGljaCBpcyB3aGVyZSB3ZSBkZWZpbmUgVVNFX0FWRk9VTkRBVElP
TiBvbiB0aGUgTWFjLgorLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY3MzM0CisjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQ0cpICYmIEhBVkUoQVZDRikKKyNkZWZp
bmUgVVNFX0FWRk9VTkRBVElPTiAxCisKKyNpZiBIQVZFKEFWQ0ZfTEVHSUJMRV9PVVRQVVQpCisj
ZGVmaW5lIFVTRV9BVkZPVU5EQVRJT04gMQorI2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9NRURJ
QV9TRUxFQ1RJT05fR1JPVVAgMQorI2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9MRUdJQkxFX09V
VFBVVF9TVVBQT1JUIDEKKyNkZWZpbmUgSEFWRV9NRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09S
SyAxCisjZW5kaWYKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9p
b3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
aW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQxNmI5NTM4
NGViNzA1YTE0YWZhNWQ5MjJhMmYxNGUzYWMwZjA1MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwCkBAIC0w
LDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dC5oIgorCisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KKworI2lmIFBMQVRGT1JNKElPUykKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQmIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6c2lu
Z2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RmxvYXRpbmdQb2ludEVudmly
b25tZW50PiBmbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ7CisgICAgcmV0dXJuIGZsb2F0aW5nUG9p
bnRFbnZpcm9ubWVudDsKK30KKworRmxvYXRpbmdQb2ludEVudmlyb25tZW50OjpGbG9hdGluZ1Bv
aW50RW52aXJvbm1lbnQoKQorICAgIDogbV9pc0luaXRpYWxpemVkKGZhbHNlKQoreworfQorCit2
b2lkIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6ZW5hYmxlRGVub3JtYWxTdXBwb3J0KCkKK3sK
KyAgICBSRUxFQVNFX0FTU0VSVChpc1VJVGhyZWFkKCkpOworI2lmIGRlZmluZWQgX0FSTV9BUkNI
XzcKKyAgICBmZW52X3QgZW52OyAKKyAgICBmZWdldGVudigmZW52KTsgCisgICAgZW52Ll9fZnBz
Y3IgJj0gfjB4MDEwMDAwMDBVOworICAgIGZlc2V0ZW52KCZlbnYpOyAKKyNlbmRpZgorICAgIC8v
IFN1cHBvcnRpbmcgZGVub3JtYWwgbW9kZSBpcyBhbHJlYWR5IHRoZSBkZWZhdWx0IG9uIHg4Niwg
eDg2XzY0LCBhbmQgQVJNNjQuCit9CisKK3ZvaWQgRmxvYXRpbmdQb2ludEVudmlyb25tZW50Ojpz
YXZlTWFpblRocmVhZEVudmlyb25tZW50KCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0lu
aXRpYWxpemVkKTsKKyAgICBSRUxFQVNFX0FTU0VSVChpc1VJVGhyZWFkKCkpOworICAgIGZlZ2V0
ZW52KCZtX21haW5UaHJlYWRFbnZpcm9ubWVudCk7CisgICAgbV9pc0luaXRpYWxpemVkID0gdHJ1
ZTsKK30KKwordm9pZCBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OnByb3BhZ2F0ZU1haW5UaHJl
YWRFbnZpcm9ubWVudCgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9pc0luaXRpYWxpemVkKTsK
KyAgICBSRUxFQVNFX0FTU0VSVCghaXNVSVRocmVhZCgpKTsKKyAgICBmZXNldGVudigmbV9tYWlu
VGhyZWFkRW52aXJvbm1lbnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvaW9zL3dh
ay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9pb3Mvd2Fr
L0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1MTFiZjBlMDc1OWIxNTI3
Y2FhYTRlMzNlYTdhZTNhMWFkN2QyODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
RmxvYXRpbmdQb2ludEVudmlyb25tZW50X2gKKyNkZWZpbmUgRmxvYXRpbmdQb2ludEVudmlyb25t
ZW50X2gKKworI2lmIFRBUkdFVF9PU19JUEhPTkUKKworI2ltcG9ydCA8ZmVudi5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCB7CitwdWJs
aWM6CisgICAgRmxvYXRpbmdQb2ludEVudmlyb25tZW50KCk7CisKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGVuYWJsZURlbm9ybWFsU3VwcG9ydCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpOworICAgIHZvaWQgcHJvcGFnYXRlTWFpblRocmVh
ZEVudmlyb25tZW50KCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRmxvYXRpbmdQb2lu
dEVudmlyb25tZW50JiBzaW5nbGV0b24oKTsKKworcHJpdmF0ZToKKworICAgIGZlbnZfdCBtX21h
aW5UaHJlYWRFbnZpcm9ubWVudDsKKyAgICBib29sIG1faXNJbml0aWFsaXplZDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKwordXNpbmcgV2ViQ29yZTo6RmxvYXRpbmdQb2ludEVudmly
b25tZW50OworCisjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQorCisjZW5kaWYgLy8gRmxvYXRp
bmdQb2ludEVudmlyb25tZW50X2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGIwODVhMDcwNzJkNjA5OGQxNzk0NDAzZTUwZjFl
NDM3MGFkNmE4ZDEuLjUyMWRiZDdjMmVhOTRiZDk1NTBmMjNmMzA5ZjA4ZmVlNDllNTQ4MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTk0MSw2ICs5NDEsNyBAQAogCQkxQzI0MTdCQTE5OTJDMDQxMDBFRjk5MzggLyogU3BlbGxp
bmdEb3RAM3gucG5nIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzI0MTdCOTE5OTJDMDQxMDBFRjk5MzggLyogU3BlbGxpbmdEb3RAM3gucG5nICovOyB9
OwogCQkxQzI2NDk3QTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNjQ5NzkwRDdF
MjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCAqLzsgfTsKIAkJMUMyNjQ5N0Mw
RDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNjQ5N0IwRDdFMjRFQzAwQkQxMEYyIC8qIFBhZ2VNYWMu
Y3BwICovOyB9OworCQkxQzI5RUMyRDFBRkMxMzFEMDA5RTBBODIgLyogbGliUEFMLmEgaW4gRnJh
bWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI5RUMyODFBRkMx
MkY1MDA5RTBBODIgLyogbGliUEFMLmEgKi87IH07CiAJCTFDNjQ2NjI1MUExMkMzOEUwMDk0NjAz
QyAvKiBDb3JlVGV4dFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUM1RTk4MEYxQTAyQ0VGQTAwMkRCNTVGIC8qIENvcmVUZXh0U1BJLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUM2NDY2MjgxQTEy
QzQyMDAwOTQ2MDNDIC8qIE5TRm9udFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUM2NDY2MjcxQTEyQzNGOTAwOTQ2MDNDIC8qIE5TRm9udFNQSS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDODFC
OTVBMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1NjBFOTczMzA4MDAyNjZF
MDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC01NjI3LDYgKzU2MjgsMTAgQEAKIAkJQzBGMkE0NDExMzg2
OUFBQjAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVwcm9j
ZXNzb3IucG0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQzEwNURBNjIwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMDVEQTYx
MEYzQUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAgKi87IH07CiAJ
CUMxMDVEQTY0MEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEwNURBNjMwRjNBQTZC
ODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi87IH07CisJCUMyNEZBRENGMUIw
ODY4NDMwMERBMjIwNyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMjRGQUREMDFC
MDg2ODREMDBEQTIyMDcgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjNGNzdBMTQ4NENBNEMwMDhDNkRCRSAv
KiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUMyOUZGOUZFMUIwODUxN0QwMDlBMEI1QyAvKiBGbG9hdGluZ1Bv
aW50RW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFNjk5ODcwMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1l
bnQuaCAqLzsgfTsKKwkJQzJDNEZEQ0UxQjA4MTkxMDAwODNDNjA4IC8qIEZsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTY5OTg2RjE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50
LmNwcCAqLzsgfTsKIAkJQzMzMEEyMjMxM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzMEEyMjEx
M0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMzM0VFNUM0MTRGQjQ5NjEwMDAyMDk1QSAvKiBC
YXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMzNFRTVDMjE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNs
aWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwICovOyB9OwogCQlDMzNFRTVDNTE0RkI0OTYxMDAw
MjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzM0VFNUMzMTRGQjQ5NjEwMDAyMDk1QSAv
KiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oICovOyB9OwpAQCAtNjc3MCw4ICs2Nzc1
LDYgQEAKIAkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNjE2
NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRkU0NTZGMTkx
Njc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8qIERh
dGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUZFNjkzOEI2MTA0NUQ2N0UwMDhFQUJCNiAvKiBFdmVudEhhbmRsZXJJT1MubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5MzhCNTEw
NDVENjdFMDA4RUFCQjYgLyogRXZlbnRIYW5kbGVySU9TLm1tICovOyB9OwotCQlGRTY5OTg3MTE5
MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjk5ODZGMTkyMDg3RTcwMDY5
MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwICovOyB9OwotCQlGRTY5OTg3MjE5
MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5OTg3MDE5MjA4N0U3MDA2OTM2
QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2RkQ0OEQwRjY3NkU5MzAwMDkyODczIC8qIEpT
Q29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU2RkQ0OEIwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9
OwogCQlGRTZGRDQ4RTBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEMwRjY3NkU5MzAw
MDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuaCAqLzsgfTsKIAkJRkU4MEQ3QUIwRTlDMUVEMjAwMEQ2
Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9j
YXRpb25DdXN0b20uY3BwICovOyB9OwpAQCAtNjgxMCw2ICs2ODEzLDEzIEBACiAvKiBFbmQgUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNl
Y3Rpb24gKi8KKwkJMUNFRkJBMTMxQUZDMTQ1RTAwNjlGMkE3IC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5l
clBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsK
KwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDFDMjlFQzI3MUFG
QzEyRjUwMDlFMEE4MjsKKwkJCXJlbW90ZUluZm8gPSBQQUw7CisJCX07CiAJCTQxN0RBNkQ0MTM3
MzRFMEQwMDdDNTdGQiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQw
MjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC04MDQ1LDYgKzgwNTUsNyBAQAog
CQkxQzI0MTdCOTE5OTJDMDQxMDBFRjk5MzggLyogU3BlbGxpbmdEb3RAM3gucG5nICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRo
ID0gIlNwZWxsaW5nRG90QDN4LnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
MjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdl
TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VNYWMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzI5RUMyODFBRkMxMkY1MDA5RTBBODIg
LyogbGliUEFMLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYlBBTC5hOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQzVFOTgwRjFBMDJDRUZBMDAyREI1
NUYgLyogQ29yZVRleHRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZVRleHRTUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NDY2MjcxQTEyQzNGOTAwOTQ2MDNDIC8qIE5TRm9u
dFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOU0ZvbnRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODA2OCw2ICs4MDc5LDcgQEAKIAkJMUNG
NkJFMTIwRTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gT2JqQ05vZGVGaWx0ZXJDb25kaXRp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjZCRTEzMEU5QkI0NjcwMDI1
RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQ0ZBRTMyMjBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5t
YWNoLW8uZHlsaWIiOyBuYW1lID0gbGlib2JqYy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9i
amMuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTFDRkRCNTRCMUFGQzE3
N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gUEFMLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjNDM0JFODEzNUNBRjNDMDBCOEMxQUMgLyog
TWVkaWFDb250cm9scy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
ZWRpYUNvbnRyb2xzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzQzNCRTkx
MzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTWVkaWFDb250cm9scy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxRjcyQkYwODE4N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVy
SU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbGVDb250cm9s
bGVyTWVtb3J5SGFuZGxlcklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NDUxNCw2ICsxNDUyNiwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTFDMjlFQzI1
MUFGQzEyRjUwMDlFMEE4MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmls
ZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCX07CiAJCTQxN0RBNkNFMTM3MzRFMDIwMDdDNTdGQiAvKiBGcmFtZXdvcmtzICovID0gewog
CQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwpAQCAtMTQ1MjgsNiArMTQ1NDcsNyBAQAogCQkJaXNhID0gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMg
PSAoCisJCQkJMUMyOUVDMkQxQUZDMTMxRDAwOUUwQTgyIC8qIGxpYlBBTC5hIGluIEZyYW1ld29y
a3MgKi8sCiAJCQkJRkQyREJGMTIxMkIwNDhBMzAwRUQ5OEM2IC8qIEFjY2VsZXJhdGUuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTMxMkIwNDhBMzAwRUQ5OEM2IC8qIEF1
ZGlvVG9vbGJveC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxNTEyQjA0
OEEzMDBFRDk4QzYgLyogQ29yZUF1ZGlvLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLApAQCAt
MTQ1NzMsNiArMTQ1OTMsNyBAQAogCQkJCUUxQkE2NzE2MTc0MkJERTAwMEMyMDI1MSAvKiBsaWJX
ZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8sCiAJCQkJNDE3REE2RDAxMzczNEUwMjAwN0M1N0ZCIC8q
IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQk5M0YxOUIxQTA4MjQ1RTVBMDAx
RTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi8sCisJCQkJMUMyOUVDMjgxQUZDMTJGNTAwOUUw
QTgyIC8qIGxpYlBBTC5hICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJj
ZVRyZWUgPSBTT1VSQ0VfUk9PVDsKQEAgLTE0OTIxLDcgKzE0OTQyLDYgQEAKIAkJMDg2N0Q2OTFG
RTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICov
LAogCQkJCUVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8sCiAJ
CQkJOTMwNzA2MTMwOUUwQ0E4MjAwQjE3RkU0IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCiAJ
CQkJOTNGMTlCMTkwODI0NUU1OTAwMUU5QUJDIC8qIEluZm8ucGxpc3QgKi8sCkBAIC0xNDk0Myw2
ICsxNDk2Myw3IEBACiAJCQkJRkFCRTcyRUMxMDU5QzFFQjAwRDk5OUREIC8qIG1hdGhtbCAqLywK
IAkJCQk2NUJGMDIxODA5NzQ4MDYzMDBDNDMxOTYgLyogcGFnZSAqLywKIAkJCQlCQ0YxQTVCQTA5
NzgzMjA5MDA2MUExMjMgLyogcGxhdGZvcm0gKi8sCisJCQkJQzJGMzFGMTkxQjAwNkI0NjAwNkE4
OEZBIC8qIFBBTCAqLywKIAkJCQk1RENGODM2OTBENTkxNTc4MDA5NTNCQzYgLyogcGx1Z2lucyAq
LywKIAkJCQlGNTIzRDJGMzAyREU0NDNCMDE4NjM1Q0EgLyogcmVuZGVyaW5nICovLAogCQkJCTk5
RTQ1QTEzMThBMDIxNzYwMDI2RDg4RiAvKiByZXBsYXkgKi8sCkBAIC0xNTU2MCw2ICsxNTU4MSw3
IEBACiAJCQkJMUNERDQ1RTUwQkE5Qzg0NjAwRjkwMTQ3IC8qIFdlYkNvcmUueGNjb25maWcgKi8s
CiAJCQkJRTFCQTY2RjIxNzQyQkRDQzAwQzIwMjUxIC8qIFdlYkNvcmVUZXN0U2hpbS54Y2NvbmZp
ZyAqLywKIAkJCQk0MTgxNzA3RDEzODZFREYyMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0
LnhjY29uZmlnICovLAorCQkJCTFDRkRCNTRCMUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25m
aWcgKi8sCiAJCQkpOwogCQkJcGF0aCA9IENvbmZpZ3VyYXRpb25zOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTE4Nzc3LDggKzE4Nzk5LDYgQEAKIAkJQTE0ODMyOEIxODdGNTA2ODAw
REE2M0E2IC8qIHdhayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJRkU2OTk4NkYxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dC5jcHAgKi8sCi0JCQkJRkU2OTk4NzAxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudC5oICovLAogCQkJCUExNDgzMjhDMTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBL
aXRTdHVicy5oICovLAogCQkJCUExNDgzMjhEMTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBLaXRT
dHVicy5tICovLAogCQkJCUExNDgzMjhFMTg3RjUwODcwMERBNjNBNiAvKiBXQUtDbGlwVmlldy5o
ICovLApAQCAtMjE3ODIsNyArMjE4MDIsNiBAQAogCQkJCUM1Rjc2NUI0MTRFMUQ0MTQwMDZDODk5
QiAvKiBQYXN0ZWJvYXJkU3RyYXRlZ3kuaCAqLywKIAkJCQlBMTQ5Nzg3MDFBQkFGM0E1MDBDRUY3
RTQgLyogUGxhdGZvcm1Db250ZW50RmlsdGVyLmggKi8sCiAJCQkJQkM1Qzc2MjkxNDk3RkUxNDAw
QkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuaCAqLywKLQkJCQlBNzIzRjc3QTE0ODRDQTRDMDA4QzZE
QkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCAqLywKIAkJCQk1MTVFNUZFRjE5NTEwMTQ3MDA4
NkNBNUUgLyogUGxhdGZvcm1HYW1lcGFkLmggKi8sCiAJCQkJOTM1QzQ3NjYwOUFDNEQ0MzAwQTZB
QUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oICovLAogCQkJCTkzMjg3MUJGMEIyMERFQjcw
MDQ5MDM1QSAvKiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oICovLApAQCAtMjE4NjksNiArMjE4
ODgsMzMgQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQzJD
NEZEQ0MxQjA4MTg2NTAwODNDNjA4IC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJQzJDNEZEQ0QxQjA4MTg3ODAwODNDNjA4IC8qIHdhayAqLywK
KwkJCSk7CisJCQlwYXRoID0gaW9zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
KwkJQzJDNEZEQ0QxQjA4MTg3ODAwODNDNjA4IC8qIHdhayAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRkU2OTk4NkYxOTIwODdFNzAwNjkzNkJEIC8qIEZs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAgKi8sCisJCQkJRkU2OTk4NzAxOTIwODdFNzAwNjkz
NkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oICovLAorCQkJKTsKKwkJCXBhdGggPSB3
YWs7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDMkYzMUYxOTFCMDA2QjQ2
MDA2QTg4RkEgLyogUEFMICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8sCisJCQkJQTcy
M0Y3N0ExNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggKi8sCisJCQkJ
QzJDNEZEQ0MxQjA4MTg2NTAwODNDNjA4IC8qIGlvcyAqLywKKwkJCSk7CisJCQlwYXRoID0gUEFM
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQ0QwREJCM0UxNDIyNzRFNjAw
MjgwMjYzIC8qIGF1ZGlvICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTIzNjc5LDYgKzIzNzI1LDE2IEBACiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTFDMjlFQzI2MUFG
QzEyRjUwMDlFMEE4MiAvKiBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkJQzI0RkFEQ0YxQjA4Njg0MzAwREEyMjA3IC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQzI0RkFERDAxQjA4Njg0RDAwREEyMjA3IC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDMkM0RkRDRTFCMDgxOTEwMDA4M0M2MDggLyogRmxvYXRpbmdQb2lu
dEVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJNDE3REE2Q0MxMzczNEUwMjAwN0M1N0ZC
IC8qIEhlYWRlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0yNDcxNiw3ICsyNDc3Miw2IEBACiAJCQkJ
QThDRkYwNEYwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTlBNTI4RTg0MTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09i
amVjdHMuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFNjk5ODcyMTkyMDg3RTcwMDY5MzZCRCAvKiBG
bG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTY5MEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkUyN0NB
MDBCMEYyQjA5MDBGMTdDN0IgLyogRmxvYXRQb2ludDNELmggaW4gSGVhZGVycyAqLywKIAkJCQk2
RUM0ODBBMjE2RUE2MzhBMDBBNDhEQ0IgLyogRmxvYXRQb2x5Z29uLmggaW4gSGVhZGVycyAqLywK
QEAgLTI2MDYyLDYgKzI2MTE3LDcgQEAKIAkJCQkzN0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyog
UG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OURFMDgyNDVF
NTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMkMxNEY0
RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUMy
OUZGOUZFMUIwODUxN0QwMDlBMEI1QyAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3NDZBRjJFMTRGNERERTYwMDNFN0E3MCAvKiBQb3NpdGlvbkVycm9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYzMDE0RjREREU2MDAzRTdBNzAgLyogUG9zaXRp
b25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzkxOUMyNDBCN0QxODg2MDBB
NTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzI1Myw2ICsy
NzMwOSwyMyBAQAogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMUMyOUVDMjcxQUZDMTJGNTAwOUUw
QTgyIC8qIFBBTCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSAxQzI5RUMyQzFBRkMxMkY2MDA5RTBBODIgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIgKi87CisJCQlidWlsZFBoYXNl
cyA9ICgKKwkJCQkxQzI5RUMyNjFBRkMxMkY1MDA5RTBBODIgLyogSGVhZGVycyAqLywKKwkJCQkx
QzI5RUMyNDFBRkMxMkY1MDA5RTBBODIgLyogU291cmNlcyAqLywKKwkJCQkxQzI5RUMyNTFBRkMx
MkY1MDA5RTBBODIgLyogRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAor
CQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gUEFMOworCQkJcHJv
ZHVjdE5hbWUgPSBQQUw7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMUMyOUVDMjgxQUZDMTJGNTAw
OUUwQTgyIC8qIGxpYlBBTC5hICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1
Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyI7CisJCX07CiAJCTQxN0RBNkNGMTM3MzRFMDIwMDdDNTdG
QiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7
CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNDE3REE2RDgxMzczNEU0NzAwN0M1N0ZCIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJDb3JlVGVz
dFN1cHBvcnQiICovOwpAQCAtMjcyOTEsNiArMjczNjQsNyBAQAogCQkJYnVpbGRSdWxlcyA9ICgK
IAkJCSk7CiAJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMUNFRkJBMTQxQUZDMTQ1RTAwNjlGMkE3
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJREQwNDFGRjEwOUQ5RTMyNTAwMTBBRjJB
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFdlYkNvcmU7CkBA
IC0yNzM0OSw2ICsyNzQyMyw3IEBACiAJCQkJREQwNDFGQkUwOUQ5RERCRTAwMTBBRjJBIC8qIERl
cml2ZWQgU291cmNlcyAqLywKIAkJCQk0MTdEQTZDRjEzNzM0RTAyMDA3QzU3RkIgLyogV2ViQ29y
ZVRlc3RTdXBwb3J0ICovLAogCQkJCUUxQkE2NkYzMTc0MkJERTAwMEMyMDI1MSAvKiBXZWJDb3Jl
VGVzdFNoaW0gKi8sCisJCQkJMUMyOUVDMjcxQUZDMTJGNTAwOUUwQTgyIC8qIFBBTCAqLywKIAkJ
CSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCkBAIC0yNzQ3NCw2ICsyNzU0
OSwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMUMyOUVDMjQxQUZDMTJG
NTAwOUUwQTgyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlD
MkM0RkRDRTFCMDgxOTEwMDA4M0M2MDggLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQl9OwogCQk0MTdEQTZDRDEzNzM0RTAyMDA3QzU3RkIgLyogU291cmNlcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKQEAgLTI4MjQyLDcgKzI4MzI1LDYgQEAKIAkJCQk0OUVDRUI2RjE0OTk3OTBE
MDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENG
RjA0RDBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5QTUyOEU4MzE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUZFNjk5ODcxMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1Bv
aW50RW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NjgwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJFMjdDOUYwQjBG
MkIwOTAwRjE3QzdCIC8qIEZsb2F0UG9pbnQzRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1
MzU1OTBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMzA1MzMsNiArMzA2MTUsMTEgQEAKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLworCQkxQ0VG
QkExNDFBRkMxNDVFMDA2OUYyQTcgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlz
YSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAxQzI5RUMyNzFBRkMxMkY1MDA5
RTBBODIgLyogUEFMICovOworCQkJdGFyZ2V0UHJveHkgPSAxQ0VGQkExMzFBRkMxNDVFMDA2OUYy
QTcgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQk0MTdEQTZENTEzNzM0RTBE
MDA3QzU3RkIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSA5M0YxOThBNTA4MjQ1RTU5MDAxRTlBQkMgLyogV2Vi
Q29yZSAqLzsKQEAgLTMwNjMzLDYgKzMwNzIwLDI3IEBACiAJCQl9OwogCQkJbmFtZSA9IFByb2R1
Y3Rpb247CiAJCX07CisJCTFDMjlFQzI5MUFGQzEyRjYwMDlFMEE4MiAvKiBEZWJ1ZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSAxQ0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEgLyogUEFMLnhjY29uZmlnICovOworCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTFDMjlF
QzJBMUFGQzEyRjYwMDlFMEE4MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDRkRCNTRCMUFG
QzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxQzI5RUMyQjFBRkMxMkY2MDA5RTBB
ODIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQ0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEg
LyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1l
ID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJNDE3REE2RDExMzczNEUwMjAwN0M1N0ZCIC8qIERlYnVn
ICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDQxODE3MDdEMTM4NkVERjIwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1
cHBvcnQueGNjb25maWcgKi87CkBAIC0zMDc0Myw2ICszMDg1MSwxNiBAQAogCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UHJvZHVjdGlvbjsKIAkJfTsKKwkJMUMyOUVDMkMxQUZDMTJGNjAwOUUwQTgyIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJQQUwiICovID0geworCQkJaXNh
ID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJ
MUMyOUVDMjkxQUZDMTJGNjAwOUUwQTgyIC8qIERlYnVnICovLAorCQkJCTFDMjlFQzJBMUFGQzEy
RjYwMDlFMEE4MiAvKiBSZWxlYXNlICovLAorCQkJCTFDMjlFQzJCMUFGQzEyRjYwMDlFMEE4MiAv
KiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJ
CTQxN0RBNkQ4MTM3MzRFNDcwMDdDNTdGQiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWE5hdGl2ZVRhcmdldCAiV2ViQ29yZVRlc3RTdXBwb3J0IiAqLyA9IHsKIAkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29uZmlnLmggYi9Tb3VyY2UvV2ViQ29yZS9jb25maWcuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg5ODU3ZDdjNjgyZDkyMDY3ZmQ0OTIyZjdkYmM0
ODcwZTk1MWRiYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmIGRlZmluZWQoSEFWRV9DT05GSUdfSCkg
JiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCi0jaW5jbHVk
ZSAiY21ha2Vjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0K
LSNpZiBQTEFURk9STShDT0NPQSkKLSNkZWZpbmUgVVNFX0ZJTEVfTE9DSyAxCi0jZW5kaWYKLQot
I2lmIFBMQVRGT1JNKFdJTikgJiYgIVVTRShXSU5HREkpCi0jaW5jbHVkZSA8V2ViQ29yZS9XZWJD
b3JlSGVhZGVyRGV0ZWN0aW9uLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNy
b3MuaD4KLSNpbmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgotCi0jaW5jbHVkZSA8cnVu
dGltZS9KU0V4cG9ydE1hY3Jvcy5oPgotCi0jaWZkZWYgX19BUFBMRV9fCi0jZGVmaW5lIEhBVkVf
RlVOQ19VU0xFRVAgMQotI2VuZGlmIC8qIF9fQVBQTEVfXyAqLwotCi0jaWYgT1MoV0lORE9XUykK
LQotI2lmbmRlZiBfV0lOMzJfV0lOTlQKLSNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4NjAxCi0jZW5k
aWYKLQotI2lmbmRlZiBXSU5WRVIKLSNkZWZpbmUgV0lOVkVSIDB4MDYwMQotI2VuZGlmCi0KLS8v
IENVUkwgbmVlZHMgd2luc29jaywgc28gZG9uJ3QgcHJldmVudCBpbmNsdXNpb24gb2YgaXQKLSNp
ZiAhVVNFKENVUkwpCi0jaWZuZGVmIF9XSU5TT0NLQVBJXwotI2RlZmluZSBfV0lOU09DS0FQSV8g
Ly8gUHJldmVudCBpbmNsdXNpb24gb2Ygd2luc29jay5oIGluIHdpbmRvd3MuaAotI2VuZGlmCi0j
ZW5kaWYKLQotI2VuZGlmIC8qIE9TKFdJTkRPV1MpICovCi0KLS8vIFVzaW5nIENNYWtlIHdpdGgg
VW5peCBtYWtlZmlsZXMgZG9lcyBub3QgdXNlIHByZWZpeCBoZWFkZXJzLgotI2lmIFBMQVRGT1JN
KE1BQykgJiYgZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQotI2luY2x1ZGUgIldlYkNvcmVQ
cmVmaXguaCIKLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLQotLy8gVGhlc2UgdW5kZWZz
IG1hdGNoIHVwIHdpdGggZGVmaW5lcyBpbiBXZWJDb3JlUHJlZml4LmggZm9yIE1hYyBPUyBYLgot
Ly8gSGVscHMgdXMgY2F0Y2ggaWYgYW55b25lIHVzZXMgbmV3IG9yIGRlbGV0ZSBieSBhY2NpZGVu
dCBpbiBjb2RlIGFuZCBkb2Vzbid0IGluY2x1ZGUgImNvbmZpZy5oIi4KLSN1bmRlZiBuZXcKLSN1
bmRlZiBkZWxldGUKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi0jaW5jbHVkZSA8Y2lz
bzY0Nj4KLQotI2VuZGlmCi0KLSNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgotCi0jaWYg
Q09NUElMRVIoTVNWQykKLSNkZWZpbmUgU0tJUF9TVEFUSUNfQ09OU1RSVUNUT1JTX09OX01TVkMg
MQotI2Vsc2UKLSNkZWZpbmUgU0tJUF9TVEFUSUNfQ09OU1RSVUNUT1JTX09OX0dDQyAxCi0jZW5k
aWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpZiBQTEFURk9STShXSU5fQ0FJUk8pCi0jdW5kZWYg
VVNFX0NHCi0jZGVmaW5lIFVTRV9DQUlSTyAxCi0jZGVmaW5lIFVTRV9DVVJMIDEKLSNpZm5kZWYg
X1dJTlNPQ0tBUElfCi0jZGVmaW5lIF9XSU5TT0NLQVBJXyAvLyBQcmV2ZW50IGluY2x1c2lvbiBv
ZiB3aW5zb2NrLmggaW4gd2luZG93cy5oCi0jZW5kaWYKLSNlbGlmICFVU0UoV0lOR0RJKQotI2Rl
ZmluZSBVU0VfQ0cgMQotI3VuZGVmIFVTRV9DQUlSTwotI3VuZGVmIFVTRV9DVVJMCi0jZW5kaWYK
LSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQotI2RlZmluZSBVU0VfTkVXX1RIRU1FIDEKLSNl
bmRpZgotCi0jaWYgVVNFKENHKQotI2lmbmRlZiBDR0ZMT0FUX0RFRklORUQKLSNpZiAoZGVmaW5l
ZChfX0xQNjRfXykgJiYgX19MUDY0X18pIHx8IChkZWZpbmVkKF9feDg2XzY0X18pICYmIF9feDg2
XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKF9fYW1kNjRfXykKLXR5cGVkZWYg
ZG91YmxlIENHRmxvYXQ7Ci0jZWxzZQotdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwotI2VuZGlmCi0j
ZGVmaW5lIENHRkxPQVRfREVGSU5FRCAxCi0jZW5kaWYKLSNlbmRpZiAvKiBVU0UoQ0cpICovCi0K
LSNpZiBQTEFURk9STShJT1MpCi0jZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNIHdr
R2V0UGxhdGZvcm1OYW1lRm9yTmF2aWdhdG9yKCk7Ci0jZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9S
X1ZFTkRPUiB3a0dldFZlbmRvck5hbWVGb3JOYXZpZ2F0b3IoKTsKLSNlbmRpZgotCi0vLyBGSVhN
RTogTW92ZSB0aGlzIHRvIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oLCB3aGljaCBpcyB3
aGVyZSB3ZSBkZWZpbmUgVVNFX0FWRk9VTkRBVElPTiBvbiB0aGUgTWFjLgotLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MzM0Ci0jaWYgUExBVEZPUk0oV0lOKSAm
JiBVU0UoQ0cpICYmIEhBVkUoQVZDRikKLSNkZWZpbmUgVVNFX0FWRk9VTkRBVElPTiAxCi0KLSNp
ZiBIQVZFKEFWQ0ZfTEVHSUJMRV9PVVRQVVQpCi0jZGVmaW5lIFVTRV9BVkZPVU5EQVRJT04gMQot
I2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVAgMQotI2RlZmlu
ZSBIQVZFX0FWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUIDEKLSNkZWZpbmUgSEFW
RV9NRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSyAxCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzYzZmFlY2JlNjVjMjFhODhmMDk3OGIxNjU5YzZlN2Yx
NWQ4Nzk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqCi0gKiBUaGlzIGZpbGUgaGFuZGxlcyBzaGFyZWQgbGlicmFyeSBzeW1ib2wgZXhwb3J0
IGRlY29yYXRpb25zLiBJdCBpcyByZWNvbW1lbmRlZAotICogdGhhdCBhbGwgV2ViS2l0IHByb2pl
Y3RzIHVzZSB0aGVzZSBkZWZpbml0aW9ucyBzbyB0aGF0IHN5bWJvbCBleHBvcnRzIHdvcmsKLSAq
IHByb3Blcmx5IG9uIGFsbCBwbGF0Zm9ybXMgYW5kIGNvbXBpbGVycyB0aGF0IFdlYktpdCBidWls
ZHMgdW5kZXIuCi0gKi8KLSNpZm5kZWYgUGxhdGZvcm1FeHBvcnRNYWNyb3NfaAotI2RlZmluZSBQ
bGF0Zm9ybUV4cG9ydE1hY3Jvc19oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLSNpbmNs
dWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+Ci0KLS8vIFNlZSBub3RlIGluIHd0Zi9QbGF0Zm9ybS5o
IGZvciBtb3JlIGluZm8gb24gRVhQT1JUX01BQ1JPUy4KLSNpZiBVU0UoRVhQT1JUX01BQ1JPUykK
LQotI2lmICFQTEFURk9STShXSU4pCi0jZGVmaW5lIFdFQkNPUkVfRVhQT1JUIFdURl9FWFBPUlQK
LSNkZWZpbmUgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgV1RGX0VYUE9SVAotI2Vsc2UKLS8v
IFdpbmRvd3MgbXVzdCBzZXQgdGhpcyBwZXItcHJvamVjdAotI2VuZGlmCi0KLSNlbHNlIC8vICFV
U0UoRVhQT1JUX01BQ1JPUykKLSNkZWZpbmUgV0VCQ09SRV9FWFBPUlQKLSNkZWZpbmUgV0VCQ09S
RV9URVNUU1VQUE9SVF9FWFBPUlQKLQotI2VuZGlmIC8vIFVTRShFWFBPUlRfTUFDUk9TKQotCi0j
ZW5kaWYgLy8gUGxhdGZvcm1FeHBvcnRNYWNyb3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTZiOTUzODRlYjcwNWExNGFmYTVkOTIyYTJm
MTRlM2FjMGYwNTM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25t
ZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIgotCi0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotI2lmIFBMQVRGT1JNKElP
UykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQmIEZs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8RmxvYXRpbmdQb2ludEVudmlyb25tZW50PiBmbG9hdGluZ1BvaW50RW52aXJvbm1l
bnQ7Ci0gICAgcmV0dXJuIGZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDsKLX0KLQotRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50OjpGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQoKQotICAgIDogbV9pc0lu
aXRpYWxpemVkKGZhbHNlKQotewotfQotCi12b2lkIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6
ZW5hYmxlRGVub3JtYWxTdXBwb3J0KCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChpc1VJVGhyZWFk
KCkpOwotI2lmIGRlZmluZWQgX0FSTV9BUkNIXzcKLSAgICBmZW52X3QgZW52OyAKLSAgICBmZWdl
dGVudigmZW52KTsgCi0gICAgZW52Ll9fZnBzY3IgJj0gfjB4MDEwMDAwMDBVOwotICAgIGZlc2V0
ZW52KCZlbnYpOyAKLSNlbmRpZgotICAgIC8vIFN1cHBvcnRpbmcgZGVub3JtYWwgbW9kZSBpcyBh
bHJlYWR5IHRoZSBkZWZhdWx0IG9uIHg4NiwgeDg2XzY0LCBhbmQgQVJNNjQuCi19Ci0KLXZvaWQg
RmxvYXRpbmdQb2ludEVudmlyb25tZW50OjpzYXZlTWFpblRocmVhZEVudmlyb25tZW50KCkKLXsK
LSAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0luaXRpYWxpemVkKTsKLSAgICBSRUxFQVNFX0FTU0VS
VChpc1VJVGhyZWFkKCkpOwotICAgIGZlZ2V0ZW52KCZtX21haW5UaHJlYWRFbnZpcm9ubWVudCk7
Ci0gICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKLX0KLQotdm9pZCBGbG9hdGluZ1BvaW50RW52
aXJvbm1lbnQ6OnByb3BhZ2F0ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpCi17Ci0gICAgUkVMRUFT
RV9BU1NFUlQobV9pc0luaXRpYWxpemVkKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghaXNVSVRocmVh
ZCgpKTsKLSAgICBmZXNldGVudigmbV9tYWluVGhyZWFkRW52aXJvbm1lbnQpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJv
bm1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUxMWJmMGUwNzU5YjE1Mjdj
YWFhNGUzM2VhN2FlM2ExYWQ3ZDI4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9p
bnRFbnZpcm9ubWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEZsb2F0aW5nUG9p
bnRFbnZpcm9ubWVudF9oCi0jZGVmaW5lIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudF9oCi0KLSNp
ZiBUQVJHRVRfT1NfSVBIT05FCi0KLSNpbXBvcnQgPGZlbnYuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQgewotcHVibGljOgotICAgIEZs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudCgpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmFi
bGVEZW5vcm1hbFN1cHBvcnQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNhdmVNYWluVGhy
ZWFkRW52aXJvbm1lbnQoKTsKLSAgICB2b2lkIHByb3BhZ2F0ZU1haW5UaHJlYWRFbnZpcm9ubWVu
dCgpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dCYgc2luZ2xldG9uKCk7Ci0KLXByaXZhdGU6Ci0KLSAgICBmZW52X3QgbV9tYWluVGhyZWFkRW52
aXJvbm1lbnQ7Ci0gICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLXVzaW5nIFdlYkNvcmU6OkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDsKLQot
I2VuZGlmIC8vIFRBUkdFVF9PU19JUEhPTkUKLQotI2VuZGlmIC8vIEZsb2F0aW5nUG9pbnRFbnZp
cm9ubWVudF9oCi0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253303</attachid>
            <date>2015-05-17 22:58:24 -0700</date>
            <delta_ts>2015-05-26 13:56:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20150517225822.patch</filename>
            <type>text/plain</type>
            <size>45491</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTYyZWM0NGY0YmJlYjYz
NDM2YzExNTk1MDFjZWQwNzM3YWJhMDYzZS4uYjFmZGJlNmIzMjgyZDllNmRkMmYzYmNjY2UxOWQ1
ZDQxODVkNjUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA1LTE3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgV2ViQ29yZSB0
YXJnZXQgYW5kIHN0YXRpYyBsaWJyYXJ5LiBUaGlzIGlzIGludGVuZGVkIHRvIGJlCisgICAgICAg
IHRoZSBkZXN0aW5hdGlvbiB0YXJnZXQgdG8gYnVpbGQgY29kZSB0aGF0IGN1cnJlbnRseSByZXNp
ZGVzIGluCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0uIEZpbGVzIHdpbGwgYmUgbW92ZWQgaW50
byB0aGF0IHRhcmdldCBmaWxlIGJ5IGZpbGUuCisgICAgICAgIFNlcGFyYXRpbmcgdGhpcyBwbGF0
Zm9ybSBjb2RlIGludG8gaXRzIG93biBzdGF0aWMgbGlicmFyeSBlbmZvcmNlcworICAgICAgICBs
YXllcmluZywgYXMgd2VsbCBhcyBlbmNvdXJhZ2VzL2FpZHMgdW5pdCB0ZXN0aW5nIG9mIHRoaXMg
cGxhdGZvcm0gY29kZS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIGEgc21hbGwgZGVwZW5k
ZW5jeSB0cmVlLCBjb25zaXN0aW5nIG9mIHRoZSBDbG9jayBjbGFzcworICAgICAgICBhbmQgaXRz
IGRlcGVuZGVudHMsIGludG8gUEFMLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1BB
TC54Y2NvbmZpZzogQWRkZWQuCisgICAgICAgICogUEFMLyo6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS8KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogaHRtbC9NZWRpYUNvbnRyb2xsZXIuaDogVXBkYXRlIGZvcndhcmQg
ZGVjbGFyYXRpb24uCisKIDIwMTUtMDUtMTcgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2Fs
dmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlvdWVubi5mYWJsZXRAY3JmLmNh
bm9uLmZyPgogCiAgICAgICAgIFtTdHJlYW1zIEFQSV0gRGVsZWdhdGUgUmVhZGFibGVTdHJlYW1S
ZWFkZXIgcmVmZXJlbmNlIGNvdW50aW5nIHRvIFJlYWRhYmxlU3RyZWFtCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcgYi9Tb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVjNzQ5NmQ5NjAzMjc0
ZGYyOWY2NGRiNzU5Zjk5OTA0YTFiZjA2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NvbmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZwpAQCAtMCwwICsxLDM0IEBACisvLyBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
Ly8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNsdWRlICJGZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZyIKKyNpbmNsdWRlICJWZXJzaW9uLnhjY29uZmlnIgorCitIRUFERVJfU0VBUkNIX1BB
VEhTID0gRm9yd2FyZGluZ0hlYWRlcnMgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwv
aW5jbHVkZSIgJChpbmhlcml0ZWQpOworUFJPRFVDVF9OQU1FID0gUEFMOworU0tJUF9JTlNUQUxM
ID0gWUVTOworCisvLyBGSVhNRTogVXNlIGEgaGVhZGVybWFwIG9uY2Ugd2UgY2FuIGdldCBIRUFE
RVJNQVBfSU5DTFVERVNfUFJPSkVDVF9IRUFERVJTIHRvIHdvcmsuCitIRUFERVJNQVBfSU5DTFVE
RVNfUFJPSkVDVF9IRUFERVJTID0gTk87CitVU0VfSEVBREVSTUFQID0gTk87CisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGIvU291cmNlL1dl
YkNvcmUvUEFML1BsYXRmb3JtRXhwb3J0TWFjcm9zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M2M2ZhZWNiZTY1
YzIxYTg4ZjA5NzhiMTY1OWM2ZTdmMTVkODc5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqIFRoaXMgZmlsZSBoYW5k
bGVzIHNoYXJlZCBsaWJyYXJ5IHN5bWJvbCBleHBvcnQgZGVjb3JhdGlvbnMuIEl0IGlzIHJlY29t
bWVuZGVkCisgKiB0aGF0IGFsbCBXZWJLaXQgcHJvamVjdHMgdXNlIHRoZXNlIGRlZmluaXRpb25z
IHNvIHRoYXQgc3ltYm9sIGV4cG9ydHMgd29yaworICogcHJvcGVybHkgb24gYWxsIHBsYXRmb3Jt
cyBhbmQgY29tcGlsZXJzIHRoYXQgV2ViS2l0IGJ1aWxkcyB1bmRlci4KKyAqLworI2lmbmRlZiBQ
bGF0Zm9ybUV4cG9ydE1hY3Jvc19oCisjZGVmaW5lIFBsYXRmb3JtRXhwb3J0TWFjcm9zX2gKKwor
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4K
KworLy8gU2VlIG5vdGUgaW4gd3RmL1BsYXRmb3JtLmggZm9yIG1vcmUgaW5mbyBvbiBFWFBPUlRf
TUFDUk9TLgorI2lmIFVTRShFWFBPUlRfTUFDUk9TKQorCisjaWYgIVBMQVRGT1JNKFdJTikKKyNk
ZWZpbmUgV0VCQ09SRV9FWFBPUlQgV1RGX0VYUE9SVAorI2RlZmluZSBXRUJDT1JFX1RFU1RTVVBQ
T1JUX0VYUE9SVCBXVEZfRVhQT1JUCisjZWxzZQorLy8gV2luZG93cyBtdXN0IHNldCB0aGlzIHBl
ci1wcm9qZWN0CisjZW5kaWYKKworI2Vsc2UgLy8gIVVTRShFWFBPUlRfTUFDUk9TKQorI2RlZmlu
ZSBXRUJDT1JFX0VYUE9SVAorI2RlZmluZSBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVAorCisj
ZW5kaWYgLy8gVVNFKEVYUE9SVF9NQUNST1MpCisKKyNlbmRpZiAvLyBQbGF0Zm9ybUV4cG9ydE1h
Y3Jvc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg5ODU3ZDdjNjgyZDkyMDY3ZmQ0OTIy
ZjdkYmM0ODcwZTk1MWRiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9j
b25maWcuaApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
ZiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICYmIEhBVkVfQ09ORklHX0ggJiYgZGVmaW5lZChCVUlM
RElOR19XSVRIX0NNQUtFKQorI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCisjZW5kaWYKKworI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgUExBVEZPUk0oQ09DT0EpCisjZGVmaW5lIFVT
RV9GSUxFX0xPQ0sgMQorI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pICYmICFVU0UoV0lOR0RJ
KQorI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUhlYWRlckRldGVjdGlvbi5oPgorI2VuZGlmCisK
KyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CisjaW5jbHVkZSAiUGxhdGZvcm1FeHBvcnRN
YWNyb3MuaCIKKworI2luY2x1ZGUgPHJ1bnRpbWUvSlNFeHBvcnRNYWNyb3MuaD4KKworI2lmZGVm
IF9fQVBQTEVfXworI2RlZmluZSBIQVZFX0ZVTkNfVVNMRUVQIDEKKyNlbmRpZiAvKiBfX0FQUExF
X18gKi8KKworI2lmIE9TKFdJTkRPV1MpCisKKyNpZm5kZWYgX1dJTjMyX1dJTk5UCisjZGVmaW5l
IF9XSU4zMl9XSU5OVCAweDYwMQorI2VuZGlmCisKKyNpZm5kZWYgV0lOVkVSCisjZGVmaW5lIFdJ
TlZFUiAweDA2MDEKKyNlbmRpZgorCisvLyBDVVJMIG5lZWRzIHdpbnNvY2ssIHNvIGRvbid0IHBy
ZXZlbnQgaW5jbHVzaW9uIG9mIGl0CisjaWYgIVVTRShDVVJMKQorI2lmbmRlZiBfV0lOU09DS0FQ
SV8KKyNkZWZpbmUgX1dJTlNPQ0tBUElfIC8vIFByZXZlbnQgaW5jbHVzaW9uIG9mIHdpbnNvY2su
aCBpbiB3aW5kb3dzLmgKKyNlbmRpZgorI2VuZGlmCisKKyNlbmRpZiAvKiBPUyhXSU5ET1dTKSAq
LworCisvLyBVc2luZyBDTWFrZSB3aXRoIFVuaXggbWFrZWZpbGVzIGRvZXMgbm90IHVzZSBwcmVm
aXggaGVhZGVycy4KKyNpZiBQTEFURk9STShNQUMpICYmIGRlZmluZWQoQlVJTERJTkdfV0lUSF9D
TUFLRSkKKyNpbmNsdWRlICJXZWJDb3JlUHJlZml4LmgiCisjZW5kaWYKKworI2lmZGVmIF9fY3Bs
dXNwbHVzCisKKy8vIFRoZXNlIHVuZGVmcyBtYXRjaCB1cCB3aXRoIGRlZmluZXMgaW4gV2ViQ29y
ZVByZWZpeC5oIGZvciBNYWMgT1MgWC4KKy8vIEhlbHBzIHVzIGNhdGNoIGlmIGFueW9uZSB1c2Vz
IG5ldyBvciBkZWxldGUgYnkgYWNjaWRlbnQgaW4gY29kZSBhbmQgZG9lc24ndCBpbmNsdWRlICJj
b25maWcuaCIuCisjdW5kZWYgbmV3CisjdW5kZWYgZGVsZXRlCisjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KKworI2luY2x1ZGUgPGNpc282NDY+CisKKyNlbmRpZgorCisjaW5jbHVkZSA8d3Rm
L0Rpc2FsbG93Q1R5cGUuaD4KKworI2lmIENPTVBJTEVSKE1TVkMpCisjZGVmaW5lIFNLSVBfU1RB
VElDX0NPTlNUUlVDVE9SU19PTl9NU1ZDIDEKKyNlbHNlCisjZGVmaW5lIFNLSVBfU1RBVElDX0NP
TlNUUlVDVE9SU19PTl9HQ0MgMQorI2VuZGlmCisKKyNpZiBQTEFURk9STShXSU4pCisjaWYgUExB
VEZPUk0oV0lOX0NBSVJPKQorI3VuZGVmIFVTRV9DRworI2RlZmluZSBVU0VfQ0FJUk8gMQorI2Rl
ZmluZSBVU0VfQ1VSTCAxCisjaWZuZGVmIF9XSU5TT0NLQVBJXworI2RlZmluZSBfV0lOU09DS0FQ
SV8gLy8gUHJldmVudCBpbmNsdXNpb24gb2Ygd2luc29jay5oIGluIHdpbmRvd3MuaAorI2VuZGlm
CisjZWxpZiAhVVNFKFdJTkdESSkKKyNkZWZpbmUgVVNFX0NHIDEKKyN1bmRlZiBVU0VfQ0FJUk8K
KyN1bmRlZiBVU0VfQ1VSTAorI2VuZGlmCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKKyNk
ZWZpbmUgVVNFX05FV19USEVNRSAxCisjZW5kaWYKKworI2lmIFVTRShDRykKKyNpZm5kZWYgQ0dG
TE9BVF9ERUZJTkVECisjaWYgKGRlZmluZWQoX19MUDY0X18pICYmIF9fTFA2NF9fKSB8fCAoZGVm
aW5lZChfX3g4Nl82NF9fKSAmJiBfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9NX1g2NCkgfHwgZGVm
aW5lZChfX2FtZDY0X18pCit0eXBlZGVmIGRvdWJsZSBDR0Zsb2F0OworI2Vsc2UKK3R5cGVkZWYg
ZmxvYXQgQ0dGbG9hdDsKKyNlbmRpZgorI2RlZmluZSBDR0ZMT0FUX0RFRklORUQgMQorI2VuZGlm
CisjZW5kaWYgLyogVVNFKENHKSAqLworCisjaWYgUExBVEZPUk0oSU9TKQorI2RlZmluZSBXRUJD
T1JFX05BVklHQVRPUl9QTEFURk9STSB3a0dldFBsYXRmb3JtTmFtZUZvck5hdmlnYXRvcigpOwor
I2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9WRU5ET1Igd2tHZXRWZW5kb3JOYW1lRm9yTmF2aWdh
dG9yKCk7CisjZW5kaWYKKworLy8gRklYTUU6IE1vdmUgdGhpcyB0byBKYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaCwgd2hpY2ggaXMgd2hlcmUgd2UgZGVmaW5lIFVTRV9BVkZPVU5EQVRJT04g
b24gdGhlIE1hYy4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NzMzNAorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENHKSAmJiBIQVZFKEFWQ0YpCisjZGVmaW5l
IFVTRV9BVkZPVU5EQVRJT04gMQorCisjaWYgSEFWRShBVkNGX0xFR0lCTEVfT1VUUFVUKQorI2Rl
ZmluZSBVU0VfQVZGT1VOREFUSU9OIDEKKyNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05fTUVESUFf
U0VMRUNUSU9OX0dST1VQIDEKKyNkZWZpbmUgSEFWRV9BVkZPVU5EQVRJT05fTEVHSUJMRV9PVVRQ
VVRfU1VQUE9SVCAxCisjZGVmaW5lIEhBVkVfTUVESUFfQUNDRVNTSUJJTElUWV9GUkFNRVdPUksg
MQorI2VuZGlmCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvaW9z
L3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML2lv
cy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMTZiOTUzODRl
YjcwNWExNGFmYTVkOTIyYTJmMTRlM2FjMGYwNTM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcApAQCAtMCww
ICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQu
aCIKKworI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CisKKyNpZiBQTEFURk9STShJT1MpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
RmxvYXRpbmdQb2ludEVudmlyb25tZW50JiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OnNpbmds
ZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEZsb2F0aW5nUG9pbnRFbnZpcm9u
bWVudD4gZmxvYXRpbmdQb2ludEVudmlyb25tZW50OworICAgIHJldHVybiBmbG9hdGluZ1BvaW50
RW52aXJvbm1lbnQ7Cit9CisKK0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6RmxvYXRpbmdQb2lu
dEVudmlyb25tZW50KCkKKyAgICA6IG1faXNJbml0aWFsaXplZChmYWxzZSkKK3sKK30KKwordm9p
ZCBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OmVuYWJsZURlbm9ybWFsU3VwcG9ydCgpCit7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoaXNVSVRocmVhZCgpKTsKKyNpZiBkZWZpbmVkIF9BUk1fQVJDSF83
CisgICAgZmVudl90IGVudjsgCisgICAgZmVnZXRlbnYoJmVudik7IAorICAgIGVudi5fX2Zwc2Ny
ICY9IH4weDAxMDAwMDAwVTsKKyAgICBmZXNldGVudigmZW52KTsgCisjZW5kaWYKKyAgICAvLyBT
dXBwb3J0aW5nIGRlbm9ybWFsIG1vZGUgaXMgYWxyZWFkeSB0aGUgZGVmYXVsdCBvbiB4ODYsIHg4
Nl82NCwgYW5kIEFSTTY0LgorfQorCit2b2lkIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6c2F2
ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNJbml0
aWFsaXplZCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNVSVRocmVhZCgpKTsKKyAgICBmZWdldGVu
digmbV9tYWluVGhyZWFkRW52aXJvbm1lbnQpOworICAgIG1faXNJbml0aWFsaXplZCA9IHRydWU7
Cit9CisKK3ZvaWQgRmxvYXRpbmdQb2ludEVudmlyb25tZW50Ojpwcm9wYWdhdGVNYWluVGhyZWFk
RW52aXJvbm1lbnQoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKG1faXNJbml0aWFsaXplZCk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoIWlzVUlUaHJlYWQoKSk7CisgICAgZmVzZXRlbnYoJm1fbWFpblRo
cmVhZEVudmlyb25tZW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2lvcy93YWsv
RmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvaW9zL3dhay9G
bG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NTExYmYwZTA3NTliMTUyN2Nh
YWE0ZTMzZWE3YWUzYTFhZDdkMjg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmgKQEAgLTAsMCArMSw1OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEZs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudF9oCisjZGVmaW5lIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dF9oCisKKyNpZiBUQVJHRVRfT1NfSVBIT05FCisKKyNpbXBvcnQgPGZlbnYuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQgeworcHVibGlj
OgorICAgIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCgpOworCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlbmFibGVEZW5vcm1hbFN1cHBvcnQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNh
dmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKTsKKyAgICB2b2lkIHByb3BhZ2F0ZU1haW5UaHJlYWRF
bnZpcm9ubWVudCgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudCYgc2luZ2xldG9uKCk7CisKK3ByaXZhdGU6CisKKyAgICBmZW52X3QgbV9tYWlu
VGhyZWFkRW52aXJvbm1lbnQ7CisgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKK3VzaW5nIFdlYkNvcmU6OkZsb2F0aW5nUG9pbnRFbnZpcm9u
bWVudDsKKworI2VuZGlmIC8vIFRBUkdFVF9PU19JUEhPTkUKKworI2VuZGlmIC8vIEZsb2F0aW5n
UG9pbnRFbnZpcm9ubWVudF9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMDg1YTA3MDcyZDYwOThkMTc5NDQwM2U1MGYxZTQz
NzBhZDZhOGQxLi4wNzRhYjZjYzUyMjQ0N2YwZjlhZTBiMDc0MmI2ZDBmYmYxYjEzZjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC05NDEsNiArOTQxLDcgQEAKIAkJMUMyNDE3QkExOTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxsaW5n
RG90QDN4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUMyNDE3QjkxOTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyAqLzsgfTsK
IAkJMUMyNjQ5N0EwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3VtZW50TG9hZGVyTWFjLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjY0OTc5MEQ3RTI0
OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi87IH07CiAJCTFDMjY0OTdDMEQ3
RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNw
cCAqLzsgfTsKKwkJMUMyOUVDMkQxQUZDMTMxRDAwOUUwQTgyIC8qIGxpYlBBTC5hIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyOUVDMjgxQUZDMTJG
NTAwOUUwQTgyIC8qIGxpYlBBTC5hICovOyB9OwogCQkxQzY0NjYyNTFBMTJDMzhFMDA5NDYwM0Mg
LyogQ29yZVRleHRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDNUU5ODBGMUEwMkNFRkEwMDJEQjU1RiAvKiBDb3JlVGV4dFNQSS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDNjQ2NjI4MUExMkM0
MjAwMDk0NjAzQyAvKiBOU0ZvbnRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDNjQ2NjI3MUExMkMzRjkwMDk0NjAzQyAvKiBOU0ZvbnRTUEkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1
QTBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3
IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtOTQ4LDYgKzk0OSw4IEBACiAJCTFDODFCOTVDMEU5NzMzMDgw
MDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOTU4MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JD
bGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxQ0ExOUUwNTBEQzI1NTk1MDA2NUE5OTQgLyogRXZlbnRMb29wTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBMTlFMDMwREMyNTU5NTAwNjVB
OTk0IC8qIEV2ZW50TG9vcE1hYy5tbSAqLzsgfTsKIAkJMUNBMTlFMTYwREMyNTVDQTAwNjVBOTk0
IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNBMTlFMTUwREMyNTVDQTAwNjVBOTk0IC8qIEV2ZW50TG9vcC5oICovOyB9OworCQkx
Q0E5NEVENDFCMDlCMkNEMDBEODlDQ0MgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjk5ODZGMTky
MDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwICovOyB9OworCQkx
Q0E5NEVENTFCMDlCNDlDMDBEODlDQ0MgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5OTg3MDE5MjA4
N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNBRjM0ODEwQTZDNDA1MjAwQUJF
MDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVj
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFD
QUYzNDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUw
NkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FGMzQ4MzBBNkM0MDUyMDBBQkUw
NkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlw
dE9iamVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNTYyNyw2ICs1NjMwLDEwIEBACiAJCUMwRjJBNDQxMTM4NjlBQUIwMDY2QzUz
NCAvKiBwcmVwcm9jZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxMDVEQTYy
MEYzQUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MTBGM0FBNjhGMDAx
REQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovOyB9OwogCQlDMTA1REE2NDBG
M0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMDVEQTYzMEYzQUE2QjgwMDFERDQ0RiAv
KiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oICovOyB9OworCQlDMjRGQURDRjFCMDg2ODQzMDBEQTIy
MDcgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzI0RkFERDAxQjA4Njg0RDAwREEy
MjA3IC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIzRjc3QTE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1F
eHBvcnRNYWNyb3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDMjlGRjlGRTFCMDg1MTdEMDA5QTBCNUMgLyogRmxvYXRpbmdQb2ludEVudmlyb25t
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5
OTg3MDE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzJDNEZEQ0UxQjA4
MTkxMDAwODNDNjA4IC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAgaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5OTg2RjE5MjA4N0U3MDA2OTM2
QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJQzMzMEEyMjMxM0VD
MTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hv
b3Nlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMzM0VFNUM0MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMzNF
RTVDMjE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3Bw
ICovOyB9OwogCQlDMzNFRTVDNTE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhL
ZXlJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMzM0VFNUMzMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0
VHlwZS5oICovOyB9OwpAQCAtNjc3MCw4ICs2Nzc3LDYgQEAKIAkJRkU0NTZGMTgxNjc3RDc0RTAw
NUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VN
YW5hZ2VyLmNwcCAqLzsgfTsKIAkJRkU0NTZGMTkxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNl
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFNjkzOEI2MTA0NUQ2N0Uw
MDhFQUJCNiAvKiBFdmVudEhhbmRsZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5MzhCNTEwNDVENjdFMDA4RUFCQjYgLyogRXZlbnRIYW5k
bGVySU9TLm1tICovOyB9OwotCQlGRTY5OTg3MTE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFNjk5ODZGMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJv
bm1lbnQuY3BwICovOyB9OwotCQlGRTY5OTg3MjE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTY5OTg3MDE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25t
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RkU2RkQ0OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEIwRjY3NkU5MzAwMDky
ODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9OwogCQlGRTZGRDQ4RTBGNjc2RTkzMDAwOTI4
NzMgLyogSlNDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU2RkQ0OEMwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuaCAq
LzsgfTsKIAkJRkU4MEQ3QUIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3
QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovOyB9OwpAQCAt
NjgxMCw2ICs2ODE1LDEzIEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMUNFRkJBMTMxQUZDMTQ1
RTAwNjlGMkE3IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENv
bnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZD
MDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1v
dGVHbG9iYWxJRFN0cmluZyA9IDFDMjlFQzI3MUFGQzEyRjUwMDlFMEE4MjsKKwkJCXJlbW90ZUlu
Zm8gPSBQQUw7CisJCX07CiAJCTQxN0RBNkQ0MTM3MzRFMEQwMDdDNTdGQiAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CkBAIC04MDQ1LDYgKzgwNTcsNyBAQAogCQkxQzI0MTdCOTE5OTJDMDQxMDBFRjk5Mzgg
LyogU3BlbGxpbmdEb3RAM3gucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gIlNwZWxsaW5nRG90QDN4LnBuZyI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBE
b2N1bWVudExvYWRlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEb2N1bWVudExvYWRlck1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
MjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzI5RUMyODFBRkMxMkY1MDA5RTBBODIgLyogbGliUEFMLmEgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbklu
ZGV4ID0gMDsgcGF0aCA9IGxpYlBBTC5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQkxQzVFOTgwRjFBMDJDRUZBMDAyREI1NUYgLyogQ29yZVRleHRTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29yZVRleHRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM2
NDY2MjcxQTEyQzNGOTAwOTQ2MDNDIC8qIE5TRm9udFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0Zv
bnRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUM4MUI5NTYwRTk3MzMwODAw
MjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODA2OCw2ICs4MDgxLDcgQEAKIAkJMUNGNkJFMTIwRTlCQjQ2NzAwMjVFMUNEIC8qIE9i
akNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDRjZCRTEzMEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRp
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPYmpDTm9kZUZpbHRlckNv
bmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0ZBRTMyMjBBNkQ2QTNG
MDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGlib2Jq
Yy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFi
c29sdXRlPiI7IH07CisJCTFDRkRCNTRCMUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gUEFMLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxRjNDM0JFODEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNvbnRyb2xzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzQzNCRTkxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29u
dHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFDb250cm9scy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjcyQkYwODE4N0ZENDI3MDAwOUJDQjMg
LyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDUxNCw2ICsxNDUyOCwxMyBAQAogLyogRW5k
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTFDMjlFQzI1MUFGQzEyRjUwMDlFMEE4MiAvKiBGcmFtZXdv
cmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTQxN0RBNkNFMTM3MzRFMDIw
MDdDNTdGQiAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTQ1MjgsNiArMTQ1
NDksNyBAQAogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJMUMyOUVDMkQxQUZDMTMxRDAw
OUUwQTgyIC8qIGxpYlBBTC5hIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTIxMkIwNDhB
MzAwRUQ5OEM2IC8qIEFjY2VsZXJhdGUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJ
RkQyREJGMTMxMkIwNDhBMzAwRUQ5OEM2IC8qIEF1ZGlvVG9vbGJveC5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxNTEyQjA0OEEzMDBFRDk4QzYgLyogQ29yZUF1ZGlvLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovLApAQCAtMTQ1NzMsNiArMTQ1OTUsNyBAQAogCQkJCUUx
QkE2NzE2MTc0MkJERTAwMEMyMDI1MSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8sCiAJ
CQkJNDE3REE2RDAxMzczNEUwMjAwN0M1N0ZCIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxp
YiAqLywKIAkJCQk5M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsg
Ki8sCisJCQkJMUMyOUVDMjgxQUZDMTJGNTAwOUUwQTgyIC8qIGxpYlBBTC5hICovLAogCQkJKTsK
IAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsKQEAgLTE0
OTIxLDcgKzE0OTQ0LDYgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJNjVDOTdBRjIw
OEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovLAogCQkJCUVERUM5ODAyMEFFRDdFMTcwMDU5
MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8sCiAJCQkJOTMwNzA2MTMwOUUwQ0E4MjAwQjE3RkU0
IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCiAJCQkJOTNGMTlCMTkwODI0NUU1OTAwMUU5QUJD
IC8qIEluZm8ucGxpc3QgKi8sCkBAIC0xNDk0Myw2ICsxNDk2NSw3IEBACiAJCQkJRkFCRTcyRUMx
MDU5QzFFQjAwRDk5OUREIC8qIG1hdGhtbCAqLywKIAkJCQk2NUJGMDIxODA5NzQ4MDYzMDBDNDMx
OTYgLyogcGFnZSAqLywKIAkJCQlCQ0YxQTVCQTA5NzgzMjA5MDA2MUExMjMgLyogcGxhdGZvcm0g
Ki8sCisJCQkJQzJGMzFGMTkxQjAwNkI0NjAwNkE4OEZBIC8qIFBBTCAqLywKIAkJCQk1RENGODM2
OTBENTkxNTc4MDA5NTNCQzYgLyogcGx1Z2lucyAqLywKIAkJCQlGNTIzRDJGMzAyREU0NDNCMDE4
NjM1Q0EgLyogcmVuZGVyaW5nICovLAogCQkJCTk5RTQ1QTEzMThBMDIxNzYwMDI2RDg4RiAvKiBy
ZXBsYXkgKi8sCkBAIC0xNTU2MCw2ICsxNTU4Myw3IEBACiAJCQkJMUNERDQ1RTUwQkE5Qzg0NjAw
RjkwMTQ3IC8qIFdlYkNvcmUueGNjb25maWcgKi8sCiAJCQkJRTFCQTY2RjIxNzQyQkRDQzAwQzIw
MjUxIC8qIFdlYkNvcmVUZXN0U2hpbS54Y2NvbmZpZyAqLywKIAkJCQk0MTgxNzA3RDEzODZFREYy
MDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LnhjY29uZmlnICovLAorCQkJCTFDRkRCNTRC
MUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcgKi8sCiAJCQkpOwogCQkJcGF0aCA9IENv
bmZpZ3VyYXRpb25zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE4Nzc3LDggKzE4
ODAxLDYgQEAKIAkJQTE0ODMyOEIxODdGNTA2ODAwREE2M0E2IC8qIHdhayAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJRkU2OTk4NkYxOTIwODdFNzAwNjkz
NkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAgKi8sCi0JCQkJRkU2OTk4NzAxOTIw
ODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oICovLAogCQkJCUExNDgz
MjhDMTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5oICovLAogCQkJCUExNDgzMjhE
MTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5tICovLAogCQkJCUExNDgzMjhFMTg3
RjUwODcwMERBNjNBNiAvKiBXQUtDbGlwVmlldy5oICovLApAQCAtMjE3ODIsNyArMjE4MDQsNiBA
QAogCQkJCUM1Rjc2NUI0MTRFMUQ0MTQwMDZDODk5QiAvKiBQYXN0ZWJvYXJkU3RyYXRlZ3kuaCAq
LywKIAkJCQlBMTQ5Nzg3MDFBQkFGM0E1MDBDRUY3RTQgLyogUGxhdGZvcm1Db250ZW50RmlsdGVy
LmggKi8sCiAJCQkJQkM1Qzc2MjkxNDk3RkUxNDAwQkM0Nzc1IC8qIFBsYXRmb3JtRXZlbnQuaCAq
LywKLQkJCQlBNzIzRjc3QTE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3Mu
aCAqLywKIAkJCQk1MTVFNUZFRjE5NTEwMTQ3MDA4NkNBNUUgLyogUGxhdGZvcm1HYW1lcGFkLmgg
Ki8sCiAJCQkJOTM1QzQ3NjYwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dC5oICovLAogCQkJCTkzMjg3MUJGMEIyMERFQjcwMDQ5MDM1QSAvKiBQbGF0Zm9ybU1lbnVEZXNj
cmlwdGlvbi5oICovLApAQCAtMjE4NjksNiArMjE4OTAsMzMgQEAKIAkJCXRhYldpZHRoID0gNDsK
IAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQzJDNEZEQ0MxQjA4MTg2NTAwODNDNjA4IC8qIGlv
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzJDNEZE
Q0QxQjA4MTg3ODAwODNDNjA4IC8qIHdhayAqLywKKwkJCSk7CisJCQlwYXRoID0gaW9zOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzJDNEZEQ0QxQjA4MTg3ODAwODNDNjA4
IC8qIHdhayAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RkU2OTk4NkYxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAg
Ki8sCisJCQkJRkU2OTk4NzAxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9u
bWVudC5oICovLAorCQkJKTsKKwkJCXBhdGggPSB3YWs7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworCQlDMkYzMUYxOTFCMDA2QjQ2MDA2QTg4RkEgLyogUEFMICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2NUM5N0FGMjA4RUE5MDg4MDBB
Q0QyNzMgLyogY29uZmlnLmggKi8sCisJCQkJQTcyM0Y3N0ExNDg0Q0E0QzAwOEM2REJFIC8qIFBs
YXRmb3JtRXhwb3J0TWFjcm9zLmggKi8sCisJCQkJQzJDNEZEQ0MxQjA4MTg2NTAwODNDNjA4IC8q
IGlvcyAqLywKKwkJCSk7CisJCQlwYXRoID0gUEFMOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKIAkJQ0QwREJCM0UxNDIyNzRFNjAwMjgwMjYzIC8qIGF1ZGlvICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIzNjc5LDYgKzIzNzI3LDE3IEBA
CiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCisJCTFDMjlFQzI2MUFGQzEyRjUwMDlFMEE4MiAvKiBIZWFkZXJzICov
ID0geworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQzI0RkFEQ0YxQjA4Njg0MzAwREEyMjA3
IC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzI0RkFERDAxQjA4Njg0RDAwREEyMjA3
IC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMkM0RkRDRTFC
MDgxOTEwMDA4M0M2MDggLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCBpbiBIZWFkZXJz
ICovLAorCQkJCTFDQTk0RUQ1MUIwOUI0OUMwMEQ4OUNDQyAvKiBGbG9hdGluZ1BvaW50RW52aXJv
bm1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQk0MTdEQTZDQzEzNzM0RTAyMDA3QzU3RkIgLyogSGVh
ZGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTI0NzE2LDcgKzI0Nzc1LDYgQEAKIAkJCQlBOENGRjA0
RjBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMwNzNCQUEwQzM5OUIxRjAwMEY1OTc5IC8qIEZsb2F0Q29udmVyc2lvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOUE1MjhFODQxN0Q3RjUyRjAwQUE5NTE4IC8qIEZsb2F0aW5nT2JqZWN0cy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJRkU2OTk4NzIxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5n
UG9pbnRFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NjkwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0UG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyRTI3Q0EwMEIwRjJC
MDkwMEYxN0M3QiAvKiBGbG9hdFBvaW50M0QuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFQzQ4MEEy
MTZFQTYzOEEwMEE0OERDQiAvKiBGbG9hdFBvbHlnb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjYw
NjIsNiArMjYxMjAsNyBAQAogCQkJCTM3RjU2N0NFMTY1MzU4RjQwMERERTkyQiAvKiBQb3B1cE9w
ZW5pbmdPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5REUwODI0NUU1OTAwMUU5
QUJDIC8qIFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYyQzE0RjREREU2MDAz
RTdBNzAgLyogUG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzI5RkY5RkUx
QjA4NTE3RDAwOUEwQjVDIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTc0NkFGMkUxNEY0RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uRXJyb3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3NDZBRjMwMTRGNERERTYwMDNFN0E3MCAvKiBQb3NpdGlvbkVycm9y
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OTE5QzI0MEI3RDE4ODYwMEE1Njk5OCAv
KiBQb3NpdGlvbkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MjUzLDYgKzI3MzEyLDIz
IEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkxQzI5RUMyNzFBRkMxMkY1MDA5RTBBODIgLyog
UEFMICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0
aW9uTGlzdCA9IDFDMjlFQzJDMUFGQzEyRjYwMDlFMEE4MiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUEFMIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAor
CQkJCTFDMjlFQzI2MUFGQzEyRjUwMDlFMEE4MiAvKiBIZWFkZXJzICovLAorCQkJCTFDMjlFQzI0
MUFGQzEyRjUwMDlFMEE4MiAvKiBTb3VyY2VzICovLAorCQkJCTFDMjlFQzI1MUFGQzEyRjUwMDlF
MEE4MiAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOwor
CQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBQQUw7CisJCQlwcm9kdWN0TmFt
ZSA9IFBBTDsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxQzI5RUMyODFBRkMxMkY1MDA5RTBBODIg
LyogbGliUEFMLmEgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBl
LmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKIAkJNDE3REE2Q0YxMzczNEUwMjAwN0M1N0ZCIC8qIFdl
YkNvcmVUZXN0U3VwcG9ydCAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA0MTdEQTZEODEzNzM0RTQ3MDA3QzU3RkIgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIldlYkNvcmVUZXN0U3VwcG9y
dCIgKi87CkBAIC0yNzI5MSw2ICsyNzM2Nyw3IEBACiAJCQlidWlsZFJ1bGVzID0gKAogCQkJKTsK
IAkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkxQ0VGQkExNDFBRkMxNDVFMDA2OUYyQTcgLyogUEJY
VGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQlERDA0MUZGMTA5RDlFMzI1MDAxMEFGMkEgLyogUEJY
VGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCSk7CiAJCQluYW1lID0gV2ViQ29yZTsKQEAgLTI3MzQ5
LDYgKzI3NDI2LDcgQEAKIAkJCQlERDA0MUZCRTA5RDlEREJFMDAxMEFGMkEgLyogRGVyaXZlZCBT
b3VyY2VzICovLAogCQkJCTQxN0RBNkNGMTM3MzRFMDIwMDdDNTdGQiAvKiBXZWJDb3JlVGVzdFN1
cHBvcnQgKi8sCiAJCQkJRTFCQTY2RjMxNzQyQkRFMDAwQzIwMjUxIC8qIFdlYkNvcmVUZXN0U2hp
bSAqLywKKwkJCQkxQzI5RUMyNzFBRkMxMkY1MDA5RTBBODIgLyogUEFMICovLAogCQkJKTsKIAkJ
fTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KQEAgLTI3NDc0LDYgKzI3NTUyLDE0IEBA
CiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzI5RUMyNDFBRkMxMkY1MDA5RTBB
ODIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTFDQTk0RUQ0
MUIwOUIyQ0QwMEQ4OUNDQyAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCX07CiAJCTQxN0RBNkNEMTM3MzRFMDIwMDdDNTdGQiAvKiBTb3VyY2VzICovID0gewogCQkJ
aXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwpAQCAtMjgyNDIsNyArMjgzMjgsNiBAQAogCQkJCTQ5RUNFQjZGMTQ5OTc5MEQwMENERDNB
NCAvKiBGaWx0ZXJPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4Q0ZGMDREMEEx
NTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTlBNTI4RTgzMTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJRkU2OTk4NzExOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZp
cm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU2ODBCMDUzODE0MDAyQ0U2NEYg
LyogRmxvYXRQb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkUyN0M5RjBCMEYyQjA5MDBG
MTdDN0IgLyogRmxvYXRQb2ludDNELmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTU5MEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50Q0cuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDUz
Myw2ICszMDYxOCwxMSBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTFDRUZCQTE0MUFG
QzE0NUUwMDY5RjJBNyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJY
VGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDFDMjlFQzI3MUFGQzEyRjUwMDlFMEE4MiAv
KiBQQUwgKi87CisJCQl0YXJnZXRQcm94eSA9IDFDRUZCQTEzMUFGQzE0NUUwMDY5RjJBNyAvKiBQ
QlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTQxN0RBNkQ1MTM3MzRFMEQwMDdDNTdG
QiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5k
ZW5jeTsKIAkJCXRhcmdldCA9IDkzRjE5OEE1MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlICov
OwpAQCAtMzA2MzMsNiArMzA3MjMsMjcgQEAKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsK
IAkJfTsKKwkJMUMyOUVDMjkxQUZDMTJGNjAwOUUwQTgyIC8qIERlYnVnICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9
IDFDRkRCNTRCMUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMUMyOUVDMkExQUZD
MTJGNjAwOUUwQTgyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUNGREI1NEIxQUZDMTc3RTAw
OTRFRjIxIC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9Owor
CQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTFDMjlFQzJCMUFGQzEyRjYwMDlFMEE4MiAvKiBQ
cm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNl
Q29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDRkRCNTRCMUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwu
eGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBQcm9k
dWN0aW9uOworCQl9OwogCQk0MTdEQTZEMTEzNzM0RTAyMDA3QzU3RkIgLyogRGVidWcgKi8gPSB7
CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVm
ZXJlbmNlID0gNDE4MTcwN0QxMzg2RURGMjAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC54
Y2NvbmZpZyAqLzsKQEAgLTMwNzQzLDYgKzMwODU0LDE2IEBACiAJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0
aW9uOwogCQl9OworCQkxQzI5RUMyQzFBRkMxMkY2MDA5RTBBODIgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIgKi8gPSB7CisJCQlpc2EgPSBYQ0Nv
bmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxQzI5RUMy
OTFBRkMxMkY2MDA5RTBBODIgLyogRGVidWcgKi8sCisJCQkJMUMyOUVDMkExQUZDMTJGNjAwOUUw
QTgyIC8qIFJlbGVhc2UgKi8sCisJCQkJMUMyOUVDMkIxQUZDMTJGNjAwOUUwQTgyIC8qIFByb2R1
Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwor
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJNDE3REE2
RDgxMzczNEU0NzAwN0M1N0ZCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJXZWJDb3JlVGVzdFN1cHBvcnQiICovID0gewogCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb25maWcuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbmZpZy5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA4ODk4NTdkN2M2ODJkOTIwNjdmZDQ5MjJmN2RiYzQ4NzBlOTUx
ZGJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWYgZGVmaW5lZChIQVZFX0NPTkZJR19IKSAmJiBIQVZF
X0NPTkZJR19IICYmIGRlZmluZWQoQlVJTERJTkdfV0lUSF9DTUFLRSkKLSNpbmNsdWRlICJjbWFr
ZWNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLQotI2lmIFBM
QVRGT1JNKENPQ09BKQotI2RlZmluZSBVU0VfRklMRV9MT0NLIDEKLSNlbmRpZgotCi0jaWYgUExB
VEZPUk0oV0lOKSAmJiAhVVNFKFdJTkdESSkKLSNpbmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVIZWFk
ZXJEZXRlY3Rpb24uaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgot
I2luY2x1ZGUgIlBsYXRmb3JtRXhwb3J0TWFjcm9zLmgiCi0KLSNpbmNsdWRlIDxydW50aW1lL0pT
RXhwb3J0TWFjcm9zLmg+Ci0KLSNpZmRlZiBfX0FQUExFX18KLSNkZWZpbmUgSEFWRV9GVU5DX1VT
TEVFUCAxCi0jZW5kaWYgLyogX19BUFBMRV9fICovCi0KLSNpZiBPUyhXSU5ET1dTKQotCi0jaWZu
ZGVmIF9XSU4zMl9XSU5OVAotI2RlZmluZSBfV0lOMzJfV0lOTlQgMHg2MDEKLSNlbmRpZgotCi0j
aWZuZGVmIFdJTlZFUgotI2RlZmluZSBXSU5WRVIgMHgwNjAxCi0jZW5kaWYKLQotLy8gQ1VSTCBu
ZWVkcyB3aW5zb2NrLCBzbyBkb24ndCBwcmV2ZW50IGluY2x1c2lvbiBvZiBpdAotI2lmICFVU0Uo
Q1VSTCkKLSNpZm5kZWYgX1dJTlNPQ0tBUElfCi0jZGVmaW5lIF9XSU5TT0NLQVBJXyAvLyBQcmV2
ZW50IGluY2x1c2lvbiBvZiB3aW5zb2NrLmggaW4gd2luZG93cy5oCi0jZW5kaWYKLSNlbmRpZgot
Ci0jZW5kaWYgLyogT1MoV0lORE9XUykgKi8KLQotLy8gVXNpbmcgQ01ha2Ugd2l0aCBVbml4IG1h
a2VmaWxlcyBkb2VzIG5vdCB1c2UgcHJlZml4IGhlYWRlcnMuCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCi0jaW5jbHVkZSAiV2ViQ29yZVByZWZpeC5o
IgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotCi0vLyBUaGVzZSB1bmRlZnMgbWF0Y2gg
dXAgd2l0aCBkZWZpbmVzIGluIFdlYkNvcmVQcmVmaXguaCBmb3IgTWFjIE9TIFguCi0vLyBIZWxw
cyB1cyBjYXRjaCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5IGFjY2lkZW50IGluIGNv
ZGUgYW5kIGRvZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgotI3VuZGVmIG5ldwotI3VuZGVmIGRl
bGV0ZQotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0KLSNpbmNsdWRlIDxjaXNvNjQ2Pgot
Ci0jZW5kaWYKLQotI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+Ci0KLSNpZiBDT01QSUxF
UihNU1ZDKQotI2RlZmluZSBTS0lQX1NUQVRJQ19DT05TVFJVQ1RPUlNfT05fTVNWQyAxCi0jZWxz
ZQotI2RlZmluZSBTS0lQX1NUQVRJQ19DT05TVFJVQ1RPUlNfT05fR0NDIDEKLSNlbmRpZgotCi0j
aWYgUExBVEZPUk0oV0lOKQotI2lmIFBMQVRGT1JNKFdJTl9DQUlSTykKLSN1bmRlZiBVU0VfQ0cK
LSNkZWZpbmUgVVNFX0NBSVJPIDEKLSNkZWZpbmUgVVNFX0NVUkwgMQotI2lmbmRlZiBfV0lOU09D
S0FQSV8KLSNkZWZpbmUgX1dJTlNPQ0tBUElfIC8vIFByZXZlbnQgaW5jbHVzaW9uIG9mIHdpbnNv
Y2suaCBpbiB3aW5kb3dzLmgKLSNlbmRpZgotI2VsaWYgIVVTRShXSU5HREkpCi0jZGVmaW5lIFVT
RV9DRyAxCi0jdW5kZWYgVVNFX0NBSVJPCi0jdW5kZWYgVVNFX0NVUkwKLSNlbmRpZgotI2VuZGlm
Ci0KLSNpZiBQTEFURk9STShNQUMpCi0jZGVmaW5lIFVTRV9ORVdfVEhFTUUgMQotI2VuZGlmCi0K
LSNpZiBVU0UoQ0cpCi0jaWZuZGVmIENHRkxPQVRfREVGSU5FRAotI2lmIChkZWZpbmVkKF9fTFA2
NF9fKSAmJiBfX0xQNjRfXykgfHwgKGRlZmluZWQoX194ODZfNjRfXykgJiYgX194ODZfNjRfXykg
fHwgZGVmaW5lZChfTV9YNjQpIHx8IGRlZmluZWQoX19hbWQ2NF9fKQotdHlwZWRlZiBkb3VibGUg
Q0dGbG9hdDsKLSNlbHNlCi10eXBlZGVmIGZsb2F0IENHRmxvYXQ7Ci0jZW5kaWYKLSNkZWZpbmUg
Q0dGTE9BVF9ERUZJTkVEIDEKLSNlbmRpZgotI2VuZGlmIC8qIFVTRShDRykgKi8KLQotI2lmIFBM
QVRGT1JNKElPUykKLSNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0gd2tHZXRQbGF0
Zm9ybU5hbWVGb3JOYXZpZ2F0b3IoKTsKLSNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfVkVORE9S
IHdrR2V0VmVuZG9yTmFtZUZvck5hdmlnYXRvcigpOwotI2VuZGlmCi0KLS8vIEZJWE1FOiBNb3Zl
IHRoaXMgdG8gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgsIHdoaWNoIGlzIHdoZXJlIHdl
IGRlZmluZSBVU0VfQVZGT1VOREFUSU9OIG9uIHRoZSBNYWMuCi0vLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjczMzQKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShD
RykgJiYgSEFWRShBVkNGKQotI2RlZmluZSBVU0VfQVZGT1VOREFUSU9OIDEKLQotI2lmIEhBVkUo
QVZDRl9MRUdJQkxFX09VVFBVVCkKLSNkZWZpbmUgVVNFX0FWRk9VTkRBVElPTiAxCi0jZGVmaW5l
IEhBVkVfQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCAxCi0jZGVmaW5lIEhBVkVf
QVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQgMQotI2RlZmluZSBIQVZFX01FRElB
X0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLIDEKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGNjNjNmYWVjYmU2NWMyMWE4OGYwOTc4YjE2NTljNmU3ZjE1ZDg3OTUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FeHBvcnRNYWNyb3MuaAorKysgL2Rldi9udWxsCkBAIC0x
LDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICoK
LSAqIFRoaXMgZmlsZSBoYW5kbGVzIHNoYXJlZCBsaWJyYXJ5IHN5bWJvbCBleHBvcnQgZGVjb3Jh
dGlvbnMuIEl0IGlzIHJlY29tbWVuZGVkCi0gKiB0aGF0IGFsbCBXZWJLaXQgcHJvamVjdHMgdXNl
IHRoZXNlIGRlZmluaXRpb25zIHNvIHRoYXQgc3ltYm9sIGV4cG9ydHMgd29yawotICogcHJvcGVy
bHkgb24gYWxsIHBsYXRmb3JtcyBhbmQgY29tcGlsZXJzIHRoYXQgV2ViS2l0IGJ1aWxkcyB1bmRl
ci4KLSAqLwotI2lmbmRlZiBQbGF0Zm9ybUV4cG9ydE1hY3Jvc19oCi0jZGVmaW5lIFBsYXRmb3Jt
RXhwb3J0TWFjcm9zX2gKLQotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgotI2luY2x1ZGUgPHd0
Zi9FeHBvcnRNYWNyb3MuaD4KLQotLy8gU2VlIG5vdGUgaW4gd3RmL1BsYXRmb3JtLmggZm9yIG1v
cmUgaW5mbyBvbiBFWFBPUlRfTUFDUk9TLgotI2lmIFVTRShFWFBPUlRfTUFDUk9TKQotCi0jaWYg
IVBMQVRGT1JNKFdJTikKLSNkZWZpbmUgV0VCQ09SRV9FWFBPUlQgV1RGX0VYUE9SVAotI2RlZmlu
ZSBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBXVEZfRVhQT1JUCi0jZWxzZQotLy8gV2luZG93
cyBtdXN0IHNldCB0aGlzIHBlci1wcm9qZWN0Ci0jZW5kaWYKLQotI2Vsc2UgLy8gIVVTRShFWFBP
UlRfTUFDUk9TKQotI2RlZmluZSBXRUJDT1JFX0VYUE9SVAotI2RlZmluZSBXRUJDT1JFX1RFU1RT
VVBQT1JUX0VYUE9SVAotCi0jZW5kaWYgLy8gVVNFKEVYUE9SVF9NQUNST1MpCi0KLSNlbmRpZiAv
LyBQbGF0Zm9ybUV4cG9ydE1hY3Jvc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNmI5NTM4NGViNzA1YTE0YWZhNWQ5MjJhMmYxNGUzYWMw
ZjA1MzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRmxv
YXRpbmdQb2ludEVudmlyb25tZW50LmgiCi0KLSNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgot
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi0jaWYgUExBVEZPUk0oSU9TKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCYgRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50OjpzaW5nbGV0b24oKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ+IGZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDsKLSAg
ICByZXR1cm4gZmxvYXRpbmdQb2ludEVudmlyb25tZW50OwotfQotCi1GbG9hdGluZ1BvaW50RW52
aXJvbm1lbnQ6OkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCgpCi0gICAgOiBtX2lzSW5pdGlhbGl6
ZWQoZmFsc2UpCi17Ci19Ci0KLXZvaWQgRmxvYXRpbmdQb2ludEVudmlyb25tZW50OjplbmFibGVE
ZW5vcm1hbFN1cHBvcnQoKQotewotICAgIFJFTEVBU0VfQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0j
aWYgZGVmaW5lZCBfQVJNX0FSQ0hfNwotICAgIGZlbnZfdCBlbnY7IAotICAgIGZlZ2V0ZW52KCZl
bnYpOyAKLSAgICBlbnYuX19mcHNjciAmPSB+MHgwMTAwMDAwMFU7Ci0gICAgZmVzZXRlbnYoJmVu
dik7IAotI2VuZGlmCi0gICAgLy8gU3VwcG9ydGluZyBkZW5vcm1hbCBtb2RlIGlzIGFscmVhZHkg
dGhlIGRlZmF1bHQgb24geDg2LCB4ODZfNjQsIGFuZCBBUk02NC4KLX0KLQotdm9pZCBGbG9hdGlu
Z1BvaW50RW52aXJvbm1lbnQ6OnNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKQotewotICAgIFJF
TEVBU0VfQVNTRVJUKCFtX2lzSW5pdGlhbGl6ZWQpOwotICAgIFJFTEVBU0VfQVNTRVJUKGlzVUlU
aHJlYWQoKSk7Ci0gICAgZmVnZXRlbnYoJm1fbWFpblRocmVhZEVudmlyb25tZW50KTsKLSAgICBt
X2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwotfQotCi12b2lkIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dDo6cHJvcGFnYXRlTWFpblRocmVhZEVudmlyb25tZW50KCkKLXsKLSAgICBSRUxFQVNFX0FTU0VS
VChtX2lzSW5pdGlhbGl6ZWQpOwotICAgIFJFTEVBU0VfQVNTRVJUKCFpc1VJVGhyZWFkKCkpOwot
ICAgIGZlc2V0ZW52KCZtX21haW5UaHJlYWRFbnZpcm9ubWVudCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTExYmYwZTA3NTliMTUyN2NhYWE0ZTMz
ZWE3YWUzYTFhZDdkMjg0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmly
b25tZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgRmxvYXRpbmdQb2ludEVudmly
b25tZW50X2gKLSNkZWZpbmUgRmxvYXRpbmdQb2ludEVudmlyb25tZW50X2gKLQotI2lmIFRBUkdF
VF9PU19JUEhPTkUKLQotI2ltcG9ydCA8ZmVudi5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCB7Ci1wdWJsaWM6Ci0gICAgRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50KCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGVuYWJsZURlbm9y
bWFsU3VwcG9ydCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2F2ZU1haW5UaHJlYWRFbnZp
cm9ubWVudCgpOwotICAgIHZvaWQgcHJvcGFnYXRlTWFpblRocmVhZEVudmlyb25tZW50KCk7Ci0K
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRmxvYXRpbmdQb2ludEVudmlyb25tZW50JiBzaW5n
bGV0b24oKTsKLQotcHJpdmF0ZToKLQotICAgIGZlbnZfdCBtX21haW5UaHJlYWRFbnZpcm9ubWVu
dDsKLSAgICBib29sIG1faXNJbml0aWFsaXplZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotdXNpbmcgV2ViQ29yZTo6RmxvYXRpbmdQb2ludEVudmlyb25tZW50OwotCi0jZW5kaWYg
Ly8gVEFSR0VUX09TX0lQSE9ORQotCi0jZW5kaWYgLy8gRmxvYXRpbmdQb2ludEVudmlyb25tZW50
X2gKLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253560</attachid>
            <date>2015-05-21 17:21:50 -0700</date>
            <delta_ts>2015-05-22 15:14:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20150521172145.patch</filename>
            <type>text/plain</type>
            <size>47208</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGMyYjlhMGQzYjkxZThh
ZDE3NWU5Y2NmZjY2YjEwMjZhZmU3YmZlMS4uYWU2N2Y5OGYzNjA0NmE2Y2U5NTgwZGZhMDdjNzRj
NjJhZmY3NDJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE1LTA1LTE4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgV2ViQ29yZSB0
YXJnZXQgYW5kIHN0YXRpYyBsaWJyYXJ5LiBUaGlzIGlzIGludGVuZGVkIHRvIGJlCisgICAgICAg
IHRoZSBkZXN0aW5hdGlvbiB0YXJnZXQgdG8gYnVpbGQgY29kZSB0aGF0IGN1cnJlbnRseSByZXNp
ZGVzIGluCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0uIEZpbGVzIHdpbGwgYmUgbW92ZWQgaW50
byB0aGF0IHRhcmdldCBmaWxlIGJ5IGZpbGUuCisgICAgICAgIFNlcGFyYXRpbmcgdGhpcyBwbGF0
Zm9ybSBjb2RlIGludG8gaXRzIG93biBzdGF0aWMgbGlicmFyeSBlbmZvcmNlcworICAgICAgICBs
YXllcmluZywgYXMgd2VsbCBhcyBlbmNvdXJhZ2VzL2FpZHMgdW5pdCB0ZXN0aW5nIG9mIHRoaXMg
cGxhdGZvcm0gY29kZS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIGEgc21hbGwgZGVwZW5k
ZW5jeSB0cmVlLCBjb25zaXN0aW5nIG9mIHRoZSBDbG9jayBjbGFzcworICAgICAgICBhbmQgaXRz
IGRlcGVuZGVudHMsIGludG8gUEFMLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBQ
cm9jZXNzIENNYWtlTGlzdHMudHh0IGluIHRoZSBQQUwgZGlyZWN0b3J5LgorICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZzogQWRkZWQuCisgICAgICAgICogUEFML0NNYWtlTGlz
dHMudHh0OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvKjogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtLworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBVcGRhdGUgZm9yd2FyZCBkZWNs
YXJhdGlvbi4KKworMjAxNS0wNS0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCiAgICAgICAgIEFkZHJlc3NpbmcgcG9zdC1yZXZpZXcgY29tbWVudHMgb24gcjE4
NDM1MwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1
MTQ2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjEyMGJhZmFiNzFjMWFiYTg2ZWZjYzU2YzFh
Mjg5ZjdiYTEwZTE0Ny4uYjM5YzBjZmY4NGQ2ZjUwM2VmYjdmNzYwNDgzN2Y0MDIyMGZiZDlmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEsMyArMSw1IEBACithZGRfc3ViZGlyZWN0b3J5KFBB
TCkKKwogc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElS
fSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9haXJwbGF5IgpAQCAtMjIsNiArMjQsNyBA
QCBzZXQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01v
ZHVsZXMvd2ViYXVkaW8iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvd2ViZGF0YWJhc2Ui
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvd2Vic29ja2V0cyIKKyAgICAiJHtXRUJDT1JF
X0RJUn0vUEFMIgogICAgICIke1dFQkNPUkVfRElSfS9hY2Nlc3NpYmlsaXR5IgogICAgICIke1dF
QkNPUkVfRElSfS9iaW5kaW5ncyIKICAgICAiJHtXRUJDT1JFX0RJUn0vYmluZGluZ3MvZ2VuZXJp
YyIKQEAgLTI3OTMsNiArMjc5Niw3IEBAIHNldChXZWJDb3JlX1BMVUdfSU5TX1JFU09VUkNFUwog
CiBzZXQoV2ViQ29yZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJSQVJJRVN9CisgICAgUEFMCiAg
ICAgSmF2YVNjcmlwdENvcmUKICAgICBXVEYKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRp
b25zL1BBTC54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNWM3NDk2ZDk2MDMyNzRkZjI5ZjY0ZGI3NTlm
OTk5MDRhMWJmMDY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJh
dGlvbnMvUEFMLnhjY29uZmlnCkBAIC0wLDAgKzEsMzQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKworI2luY2x1ZGUgIkZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIgorI2lu
Y2x1ZGUgIlZlcnNpb24ueGNjb25maWciCisKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSBGb3J3YXJk
aW5nSGVhZGVycyAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAkKGlu
aGVyaXRlZCk7CitQUk9EVUNUX05BTUUgPSBQQUw7CitTS0lQX0lOU1RBTEwgPSBZRVM7CisKKy8v
IEZJWE1FOiBVc2UgYSBoZWFkZXJtYXAgb25jZSB3ZSBjYW4gZ2V0IEhFQURFUk1BUF9JTkNMVURF
U19QUk9KRUNUX0hFQURFUlMgdG8gd29yay4KK0hFQURFUk1BUF9JTkNMVURFU19QUk9KRUNUX0hF
QURFUlMgPSBOTzsKK1VTRV9IRUFERVJNQVAgPSBOTzsKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvUEFML0NNYWtlTGlzdHMu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRkNmYyMDIxODA4NWNjZmY5YzgxMTAzMzhjMmJjN2Y0NGQ4Njc1MzMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50eHQKQEAg
LTAsMCArMSwyMyBAQAorc2V0KFBBTF9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgIiR7V0VCQ09S
RV9ESVJ9L1BBTCIKKykKKworc2V0KFBBTF9TT1VSQ0VTCispCisKK3NldChQQUxfTElCUkFSSUVT
CisgICAgSmF2YVNjcmlwdENvcmUKKyAgICBXVEYKKykKKworV0VCS0lUX0lOQ0xVREVfQ09ORklH
X0ZJTEVTX0lGX0VYSVNUUygpCisKK1dFQktJVF9XUkFQX1NPVVJDRUxJU1QoJHtQQUxfU09VUkNF
U30pCitpbmNsdWRlX2RpcmVjdG9yaWVzKCR7UEFMX0lOQ0xVREVfRElSRUNUT1JJRVN9ICR7V2Vi
Q29yZVRlc3RTdXBwb3J0X0lOQ0xVREVfRElSRUNUT1JJRVN9KQorYWRkX2xpYnJhcnkoUEFMIFNU
QVRJQyAke1BBTF9TT1VSQ0VTfSkKK3RhcmdldF9saW5rX2xpYnJhcmllcyhQQUwgJHtQQUxfTElC
UkFSSUVTfSkKK3NldF90YXJnZXRfcHJvcGVydGllcyhQQUwgUFJPUEVSVElFUyBGT0xERVIgIlBB
TCIpCisKK2lmIChQQUxfT1VUUFVUX05BTUUpCisgICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKFBB
TCBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FICR7UEFMX09VVFBVVF9OQU1FfSkKK2VuZGlmICgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNjNm
YWVjYmU2NWMyMWE4OGYwOTc4YjE2NTljNmU3ZjE1ZDg3OTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaApAQCAtMCwwICsxLDUxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKiBUaGlzIGZp
bGUgaGFuZGxlcyBzaGFyZWQgbGlicmFyeSBzeW1ib2wgZXhwb3J0IGRlY29yYXRpb25zLiBJdCBp
cyByZWNvbW1lbmRlZAorICogdGhhdCBhbGwgV2ViS2l0IHByb2plY3RzIHVzZSB0aGVzZSBkZWZp
bml0aW9ucyBzbyB0aGF0IHN5bWJvbCBleHBvcnRzIHdvcmsKKyAqIHByb3Blcmx5IG9uIGFsbCBw
bGF0Zm9ybXMgYW5kIGNvbXBpbGVycyB0aGF0IFdlYktpdCBidWlsZHMgdW5kZXIuCisgKi8KKyNp
Zm5kZWYgUGxhdGZvcm1FeHBvcnRNYWNyb3NfaAorI2RlZmluZSBQbGF0Zm9ybUV4cG9ydE1hY3Jv
c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFj
cm9zLmg+CisKKy8vIFNlZSBub3RlIGluIHd0Zi9QbGF0Zm9ybS5oIGZvciBtb3JlIGluZm8gb24g
RVhQT1JUX01BQ1JPUy4KKyNpZiBVU0UoRVhQT1JUX01BQ1JPUykKKworI2lmICFQTEFURk9STShX
SU4pCisjZGVmaW5lIFdFQkNPUkVfRVhQT1JUIFdURl9FWFBPUlQKKyNkZWZpbmUgV0VCQ09SRV9U
RVNUU1VQUE9SVF9FWFBPUlQgV1RGX0VYUE9SVAorI2Vsc2UKKy8vIFdpbmRvd3MgbXVzdCBzZXQg
dGhpcyBwZXItcHJvamVjdAorI2VuZGlmCisKKyNlbHNlIC8vICFVU0UoRVhQT1JUX01BQ1JPUykK
KyNkZWZpbmUgV0VCQ09SRV9FWFBPUlQKKyNkZWZpbmUgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBP
UlQKKworI2VuZGlmIC8vIFVTRShFWFBPUlRfTUFDUk9TKQorCisjZW5kaWYgLy8gUGxhdGZvcm1F
eHBvcnRNYWNyb3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oIGIv
U291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4OTg1N2Q3YzY4MmQ5MjA2
N2ZkNDkyMmY3ZGJjNDg3MGU5NTFkYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvY29uZmlnLmgKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaWYgZGVmaW5lZChIQVZFX0NPTkZJR19IKSAmJiBIQVZFX0NPTkZJR19IICYmIGRlZmlu
ZWQoQlVJTERJTkdfV0lUSF9DTUFLRSkKKyNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgorI2VuZGlm
CisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIFBMQVRGT1JNKENPQ09BKQorI2Rl
ZmluZSBVU0VfRklMRV9MT0NLIDEKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKSAmJiAhVVNF
KFdJTkdESSkKKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVIZWFkZXJEZXRlY3Rpb24uaD4KKyNl
bmRpZgorCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgorI2luY2x1ZGUgIlBsYXRmb3Jt
RXhwb3J0TWFjcm9zLmgiCisKKyNpbmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+CisK
KyNpZmRlZiBfX0FQUExFX18KKyNkZWZpbmUgSEFWRV9GVU5DX1VTTEVFUCAxCisjZW5kaWYgLyog
X19BUFBMRV9fICovCisKKyNpZiBPUyhXSU5ET1dTKQorCisjaWZuZGVmIF9XSU4zMl9XSU5OVAor
I2RlZmluZSBfV0lOMzJfV0lOTlQgMHg2MDEKKyNlbmRpZgorCisjaWZuZGVmIFdJTlZFUgorI2Rl
ZmluZSBXSU5WRVIgMHgwNjAxCisjZW5kaWYKKworLy8gQ1VSTCBuZWVkcyB3aW5zb2NrLCBzbyBk
b24ndCBwcmV2ZW50IGluY2x1c2lvbiBvZiBpdAorI2lmICFVU0UoQ1VSTCkKKyNpZm5kZWYgX1dJ
TlNPQ0tBUElfCisjZGVmaW5lIF9XSU5TT0NLQVBJXyAvLyBQcmV2ZW50IGluY2x1c2lvbiBvZiB3
aW5zb2NrLmggaW4gd2luZG93cy5oCisjZW5kaWYKKyNlbmRpZgorCisjZW5kaWYgLyogT1MoV0lO
RE9XUykgKi8KKworLy8gVXNpbmcgQ01ha2Ugd2l0aCBVbml4IG1ha2VmaWxlcyBkb2VzIG5vdCB1
c2UgcHJlZml4IGhlYWRlcnMuCisjaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkKEJVSUxESU5H
X1dJVEhfQ01BS0UpCisjaW5jbHVkZSAiV2ViQ29yZVByZWZpeC5oIgorI2VuZGlmCisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworCisvLyBUaGVzZSB1bmRlZnMgbWF0Y2ggdXAgd2l0aCBkZWZpbmVzIGlu
IFdlYkNvcmVQcmVmaXguaCBmb3IgTWFjIE9TIFguCisvLyBIZWxwcyB1cyBjYXRjaCBpZiBhbnlv
bmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5IGFjY2lkZW50IGluIGNvZGUgYW5kIGRvZXNuJ3QgaW5j
bHVkZSAiY29uZmlnLmgiLgorI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CisKKyNpbmNsdWRlIDxjaXNvNjQ2PgorCisjZW5kaWYKKworI2luY2x1
ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CisKKyNpZiBDT01QSUxFUihNU1ZDKQorI2RlZmluZSBT
S0lQX1NUQVRJQ19DT05TVFJVQ1RPUlNfT05fTVNWQyAxCisjZWxzZQorI2RlZmluZSBTS0lQX1NU
QVRJQ19DT05TVFJVQ1RPUlNfT05fR0NDIDEKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lOKQor
I2lmIFBMQVRGT1JNKFdJTl9DQUlSTykKKyN1bmRlZiBVU0VfQ0cKKyNkZWZpbmUgVVNFX0NBSVJP
IDEKKyNkZWZpbmUgVVNFX0NVUkwgMQorI2lmbmRlZiBfV0lOU09DS0FQSV8KKyNkZWZpbmUgX1dJ
TlNPQ0tBUElfIC8vIFByZXZlbnQgaW5jbHVzaW9uIG9mIHdpbnNvY2suaCBpbiB3aW5kb3dzLmgK
KyNlbmRpZgorI2VsaWYgIVVTRShXSU5HREkpCisjZGVmaW5lIFVTRV9DRyAxCisjdW5kZWYgVVNF
X0NBSVJPCisjdW5kZWYgVVNFX0NVUkwKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBQTEFURk9STShN
QUMpCisjZGVmaW5lIFVTRV9ORVdfVEhFTUUgMQorI2VuZGlmCisKKyNpZiBVU0UoQ0cpCisjaWZu
ZGVmIENHRkxPQVRfREVGSU5FRAorI2lmIChkZWZpbmVkKF9fTFA2NF9fKSAmJiBfX0xQNjRfXykg
fHwgKGRlZmluZWQoX194ODZfNjRfXykgJiYgX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQp
IHx8IGRlZmluZWQoX19hbWQ2NF9fKQordHlwZWRlZiBkb3VibGUgQ0dGbG9hdDsKKyNlbHNlCit0
eXBlZGVmIGZsb2F0IENHRmxvYXQ7CisjZW5kaWYKKyNkZWZpbmUgQ0dGTE9BVF9ERUZJTkVEIDEK
KyNlbmRpZgorI2VuZGlmIC8qIFVTRShDRykgKi8KKworI2lmIFBMQVRGT1JNKElPUykKKyNkZWZp
bmUgV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0gd2tHZXRQbGF0Zm9ybU5hbWVGb3JOYXZpZ2F0
b3IoKTsKKyNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfVkVORE9SIHdrR2V0VmVuZG9yTmFtZUZv
ck5hdmlnYXRvcigpOworI2VuZGlmCisKKy8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmgsIHdoaWNoIGlzIHdoZXJlIHdlIGRlZmluZSBVU0VfQVZGT1VO
REFUSU9OIG9uIHRoZSBNYWMuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjczMzQKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRykgJiYgSEFWRShBVkNGKQor
I2RlZmluZSBVU0VfQVZGT1VOREFUSU9OIDEKKworI2lmIEhBVkUoQVZDRl9MRUdJQkxFX09VVFBV
VCkKKyNkZWZpbmUgVVNFX0FWRk9VTkRBVElPTiAxCisjZGVmaW5lIEhBVkVfQVZGT1VOREFUSU9O
X01FRElBX1NFTEVDVElPTl9HUk9VUCAxCisjZGVmaW5lIEhBVkVfQVZGT1VOREFUSU9OX0xFR0lC
TEVfT1VUUFVUX1NVUFBPUlQgMQorI2RlZmluZSBIQVZFX01FRElBX0FDQ0VTU0lCSUxJVFlfRlJB
TUVXT1JLIDEKKyNlbmRpZgorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDE2
Yjk1Mzg0ZWI3MDVhMTRhZmE1ZDkyMmEyZjE0ZTNhYzBmMDUzNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAK
QEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmxvYXRpbmdQb2ludEVudmly
b25tZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgorCisjaWYgUExBVEZPUk0oSU9TKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCYgRmxvYXRpbmdQb2ludEVudmlyb25tZW50
OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGbG9hdGluZ1BvaW50
RW52aXJvbm1lbnQ+IGZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDsKKyAgICByZXR1cm4gZmxvYXRp
bmdQb2ludEVudmlyb25tZW50OworfQorCitGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OkZsb2F0
aW5nUG9pbnRFbnZpcm9ubWVudCgpCisgICAgOiBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCit7Cit9
CisKK3ZvaWQgRmxvYXRpbmdQb2ludEVudmlyb25tZW50OjplbmFibGVEZW5vcm1hbFN1cHBvcnQo
KQoreworICAgIFJFTEVBU0VfQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisjaWYgZGVmaW5lZCBfQVJN
X0FSQ0hfNworICAgIGZlbnZfdCBlbnY7IAorICAgIGZlZ2V0ZW52KCZlbnYpOyAKKyAgICBlbnYu
X19mcHNjciAmPSB+MHgwMTAwMDAwMFU7CisgICAgZmVzZXRlbnYoJmVudik7IAorI2VuZGlmCisg
ICAgLy8gU3VwcG9ydGluZyBkZW5vcm1hbCBtb2RlIGlzIGFscmVhZHkgdGhlIGRlZmF1bHQgb24g
eDg2LCB4ODZfNjQsIGFuZCBBUk02NC4KK30KKwordm9pZCBGbG9hdGluZ1BvaW50RW52aXJvbm1l
bnQ6OnNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKCFt
X2lzSW5pdGlhbGl6ZWQpOworICAgIFJFTEVBU0VfQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAg
ZmVnZXRlbnYoJm1fbWFpblRocmVhZEVudmlyb25tZW50KTsKKyAgICBtX2lzSW5pdGlhbGl6ZWQg
PSB0cnVlOworfQorCit2b2lkIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6cHJvcGFnYXRlTWFp
blRocmVhZEVudmlyb25tZW50KCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2lzSW5pdGlhbGl6
ZWQpOworICAgIFJFTEVBU0VfQVNTRVJUKCFpc1VJVGhyZWFkKCkpOworICAgIGZlc2V0ZW52KCZt
X21haW5UaHJlYWRFbnZpcm9ubWVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9p
b3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIGIvU291cmNlL1dlYkNvcmUvUEFML2lv
cy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUxMWJmMGUwNzU5
YjE1MjdjYWFhNGUzM2VhN2FlM2ExYWQ3ZDI4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnRfaAorI2RlZmluZSBGbG9hdGluZ1BvaW50RW52
aXJvbm1lbnRfaAorCisjaWYgVEFSR0VUX09TX0lQSE9ORQorCisjaW1wb3J0IDxmZW52Lmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRpbmdQb2ludEVudmlyb25tZW50IHsK
K3B1YmxpYzoKKyAgICBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQoKTsKKworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZW5hYmxlRGVub3JtYWxTdXBwb3J0KCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzYXZlTWFpblRocmVhZEVudmlyb25tZW50KCk7CisgICAgdm9pZCBwcm9wYWdhdGVNYWlu
VGhyZWFkRW52aXJvbm1lbnQoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBGbG9hdGlu
Z1BvaW50RW52aXJvbm1lbnQmIHNpbmdsZXRvbigpOworCitwcml2YXRlOgorCisgICAgZmVudl90
IG1fbWFpblRocmVhZEVudmlyb25tZW50OworICAgIGJvb2wgbV9pc0luaXRpYWxpemVkOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCit1c2luZyBXZWJDb3JlOjpGbG9hdGluZ1BvaW50
RW52aXJvbm1lbnQ7CisKKyNlbmRpZiAvLyBUQVJHRVRfT1NfSVBIT05FCisKKyNlbmRpZiAvLyBG
bG9hdGluZ1BvaW50RW52aXJvbm1lbnRfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjA4NWEwNzA3MmQ2MDk4ZDE3OTQ0MDNl
NTBmMWU0MzcwYWQ2YThkMS4uMDc0YWI2Y2M1MjI0NDdmMGY5YWUwYjA3NDJiNmQwZmJmMWIxM2Y3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtOTQxLDYgKzk0MSw3IEBACiAJCTFDMjQxN0JBMTk5MkMwNDEwMEVGOTkzOCAvKiBT
cGVsbGluZ0RvdEAzeC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDMjQxN0I5MTk5MkMwNDEwMEVGOTkzOCAvKiBTcGVsbGluZ0RvdEAzeC5wbmcg
Ki87IH07CiAJCTFDMjY0OTdBMEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI2NDk3
OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwICovOyB9OwogCQkxQzI2
NDk3QzBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI2NDk3QjBEN0UyNEVDMDBCRDEwRjIgLyogUGFn
ZU1hYy5jcHAgKi87IH07CisJCTFDMjlFQzJEMUFGQzEzMUQwMDlFMEE4MiAvKiBsaWJQQUwuYSBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjlFQzI4
MUFGQzEyRjUwMDlFMEE4MiAvKiBsaWJQQUwuYSAqLzsgfTsKIAkJMUM2NDY2MjUxQTEyQzM4RTAw
OTQ2MDNDIC8qIENvcmVUZXh0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzVFOTgwRjFBMDJDRUZBMDAyREI1NUYgLyogQ29yZVRleHRTUEkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzY0NjYy
ODFBMTJDNDIwMDA5NDYwM0MgLyogTlNGb250U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzY0NjYyNzFBMTJDM0Y5MDA5NDYwM0MgLyogTlNGb250
U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MUM4MUI5NUEwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOTU2MEU5NzMzMDgw
MDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk0OCw2ICs5NDksOCBAQAogCQkxQzgxQjk1QzBF
OTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5z
cGVjdG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUNBMTlFMDUwREMyNTU5NTAwNjVBOTk0IC8qIEV2ZW50TG9vcE1hYy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQTE5RTAzMERDMjU1
OTUwMDY1QTk5NCAvKiBFdmVudExvb3BNYWMubW0gKi87IH07CiAJCTFDQTE5RTE2MERDMjU1Q0Ew
MDY1QTk5NCAvKiBFdmVudExvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDQTE5RTE1MERDMjU1Q0EwMDY1QTk5NCAvKiBFdmVudExvb3AuaCAqLzsg
fTsKKwkJMUNBOTRFRDQxQjA5QjJDRDAwRDg5Q0NDIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5
OTg2RjE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCAqLzsg
fTsKKwkJMUNBOTRFRDUxQjA5QjQ5QzAwRDg5Q0NDIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OTk4
NzAxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDQUYzNDgxMEE2QzQw
NTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3Jp
cHRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0N0YwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAqLzsgfTsKIAkJMUNBRjM0ODMwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUYzNDgwMEE2QzQwNTIwMEFCRTA2RSAvKiBX
ZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTU2MjcsNiArNTYzMCwxMCBAQAogCQlDMEYyQTQ0MTEzODY5QUFC
MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nv
ci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
MTA1REE2MjBGM0FBNjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEwNURBNjEwRjNB
QTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcCAqLzsgfTsKIAkJQzEw
NURBNjQwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MzBGM0FBNkI4MDAx
REQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCAqLzsgfTsKKwkJQzI0RkFEQ0YxQjA4Njg0
MzAwREEyMjA3IC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyNEZBREQwMUIwODY4
NEQwMERBMjIwNyAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyM0Y3N0ExNDg0Q0E0QzAwOEM2REJFIC8qIFBs
YXRmb3JtRXhwb3J0TWFjcm9zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQzI5RkY5RkUxQjA4NTE3RDAwOUEwQjVDIC8qIEZsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU2OTk4NzAxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyQzRG
RENFMUIwODE5MTAwMDgzQzYwOCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OTk4NkYxOTIwODdF
NzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAgKi87IH07CiAJCUMzMzBB
MjIzMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzMzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAvKiBD
b2xvckNob29zZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDMzNFRTVDNDE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJ
bnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzMzRUU1QzIxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRU
eXBlLmNwcCAqLzsgfTsKIAkJQzMzRUU1QzUxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2Fi
bGVXaXRoS2V5SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMzNFRTVDMzE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhL
ZXlJbnB1dFR5cGUuaCAqLzsgfTsKQEAgLTY3NzAsOCArNjc3Nyw2IEBACiAJCUZFNDU2RjE4MTY3
N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTYxNjc3RDc0RTAwNUVEREY5IC8qIERh
dGFiYXNlTWFuYWdlci5jcHAgKi87IH07CiAJCUZFNDU2RjE5MTY3N0Q3NEUwMDVFRERGOSAvKiBE
YXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTY5MzhCNjEw
NDVENjdFMDA4RUFCQjYgLyogRXZlbnRIYW5kbGVySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OTM4QjUxMDQ1RDY3RTAwOEVBQkI2IC8qIEV2
ZW50SGFuZGxlcklPUy5tbSAqLzsgfTsKLQkJRkU2OTk4NzExOTIwODdFNzAwNjkzNkJEIC8qIEZs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTY5OTg2RjE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2lu
dEVudmlyb25tZW50LmNwcCAqLzsgfTsKLQkJRkU2OTk4NzIxOTIwODdFNzAwNjkzNkJEIC8qIEZs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU2OTk4NzAxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUZFNkZENDhEMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNkZENDhCMEY2NzZF
OTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCAqLzsgfTsKIAkJRkU2RkQ0OEUwRjY3NkU5
MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFNkZENDhDMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5h
dGVzLmggKi87IH07CiAJCUZFODBEN0FCMEU5QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9u
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFODBEN0E2MEU5QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCAqLzsg
fTsKQEAgLTY4MTAsNiArNjgxNSwxMyBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTFDRUZCQTEz
MUFGQzE0NUUwMDY5RjJBNyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2Eg
PSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZF
ODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOwor
CQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxQzI5RUMyNzFBRkMxMkY1MDA5RTBBODI7CisJCQly
ZW1vdGVJbmZvID0gUEFMOworCQl9OwogCQk0MTdEQTZENDEzNzM0RTBEMDA3QzU3RkIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5
OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2pl
Y3Qgb2JqZWN0ICovOwpAQCAtODA0NSw2ICs4MDU3LDcgQEAKIAkJMUMyNDE3QjkxOTkyQzA0MTAw
RUY5OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJTcGVsbGluZ0RvdEAzeC5w
bmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzI2NDk3OTBEN0UyNDhBMDBCRDEw
RjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRG9jdW1lbnRMb2FkZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzI2NDk3QjBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUMyOUVDMjgxQUZDMTJGNTAwOUUwQTgyIC8qIGxpYlBBTC5hICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJQQUwuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKIAkJMUM1RTk4MEYxQTAyQ0VGQTAwMkRCNTVGIC8qIENvcmVUZXh0U1BJLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvcmVUZXh0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDNjQ2NjI3MUExMkMzRjkwMDk0NjAzQyAvKiBOU0ZvbnRTUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTlNGb250U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDODFCOTU2MEU5
NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTgwNjgsNiArODA4MSw3IEBACiAJCTFDRjZCRTEyMEU5QkI0NjcwMDI1RTFD
RCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0Y2QkUxMzBFOUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0
ZXJDb25kaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT2JqQ05vZGVG
aWx0ZXJDb25kaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNGQUUzMjIw
QTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9
IGxpYm9iamMuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGliOyBzb3VyY2VUcmVl
ID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxQ0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEgLyogUEFMLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC54Y2NvbmZpZzsgcGF0aCA9IFBBTC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUYzQzNCRTgxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9scy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGM0MzQkU5MTM1Q0FGM0MwMEI4QzFBQyAvKiBN
ZWRpYUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29u
dHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUY3MkJGMDgxODdGRDQyNzAw
MDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaWxlQ29udHJvbGxlck1lbW9yeUhhbmRsZXJJT1Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1MTQsNiArMTQ1MjgsMTMgQEAK
IC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzI5RUMyNTFBRkMxMkY1MDA5RTBBODIgLyog
RnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQk0MTdEQTZDRTEz
NzM0RTAyMDA3QzU3RkIgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29y
a3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE0NTI4
LDYgKzE0NTQ5LDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTFDMjlFQzJEMUFG
QzEzMUQwMDlFMEE4MiAvKiBsaWJQQUwuYSBpbiBGcmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjEy
MTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVyYXRlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
LAogCQkJCUZEMkRCRjEzMTJCMDQ4QTMwMEVEOThDNiAvKiBBdWRpb1Rvb2xib3guZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTUxMkIwNDhBMzAwRUQ5OEM2IC8qIENvcmVB
dWRpby5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKQEAgLTE0NTczLDYgKzE0NTk1LDcgQEAK
IAkJCQlFMUJBNjcxNjE3NDJCREUwMDBDMjAyNTEgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGli
ICovLAogCQkJCTQxN0RBNkQwMTM3MzRFMDIwMDdDNTdGQiAvKiBsaWJXZWJDb3JlVGVzdFN1cHBv
cnQuZHlsaWIgKi8sCiAJCQkJOTNGMTlCMUEwODI0NUU1QTAwMUU5QUJDIC8qIFdlYkNvcmUuZnJh
bWV3b3JrICovLAorCQkJCTFDMjlFQzI4MUFGQzEyRjUwMDlFMEE4MiAvKiBsaWJQQUwuYSAqLywK
IAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7
CkBAIC0xNDkyMSw3ICsxNDk0NCw2IEBACiAJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBX
ZWJLaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTY1
Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLywKIAkJCQlFREVDOTgwMjBBRUQ3
RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovLAogCQkJCTkzMDcwNjEzMDlFMENBODIw
MEIxN0ZFNCAvKiBEZXJpdmVkU291cmNlcy5tYWtlICovLAogCQkJCTkzRjE5QjE5MDgyNDVFNTkw
MDFFOUFCQyAvKiBJbmZvLnBsaXN0ICovLApAQCAtMTQ5NDMsNiArMTQ5NjUsNyBAQAogCQkJCUZB
QkU3MkVDMTA1OUMxRUIwMEQ5OTlERCAvKiBtYXRobWwgKi8sCiAJCQkJNjVCRjAyMTgwOTc0ODA2
MzAwQzQzMTk2IC8qIHBhZ2UgKi8sCiAJCQkJQkNGMUE1QkEwOTc4MzIwOTAwNjFBMTIzIC8qIHBs
YXRmb3JtICovLAorCQkJCUMyRjMxRjE5MUIwMDZCNDYwMDZBODhGQSAvKiBQQUwgKi8sCiAJCQkJ
NURDRjgzNjkwRDU5MTU3ODAwOTUzQkM2IC8qIHBsdWdpbnMgKi8sCiAJCQkJRjUyM0QyRjMwMkRF
NDQzQjAxODYzNUNBIC8qIHJlbmRlcmluZyAqLywKIAkJCQk5OUU0NUExMzE4QTAyMTc2MDAyNkQ4
OEYgLyogcmVwbGF5ICovLApAQCAtMTU1NjAsNiArMTU1ODMsNyBAQAogCQkJCTFDREQ0NUU1MEJB
OUM4NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29uZmlnICovLAogCQkJCUUxQkE2NkYyMTc0MkJE
Q0MwMEMyMDI1MSAvKiBXZWJDb3JlVGVzdFNoaW0ueGNjb25maWcgKi8sCiAJCQkJNDE4MTcwN0Qx
Mzg2RURGMjAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC54Y2NvbmZpZyAqLywKKwkJCQkx
Q0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEgLyogUEFMLnhjY29uZmlnICovLAogCQkJKTsKIAkJCXBh
dGggPSBDb25maWd1cmF0aW9uczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xODc3
Nyw4ICsxODgwMSw2IEBACiAJCUExNDgzMjhCMTg3RjUwNjgwMERBNjNBNiAvKiB3YWsgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUZFNjk5ODZGMTkyMDg3
RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwICovLAotCQkJCUZFNjk5
ODcwMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCAqLywKIAkJ
CQlBMTQ4MzI4QzE4N0Y1MDg3MDBEQTYzQTYgLyogV0FLQXBwS2l0U3R1YnMuaCAqLywKIAkJCQlB
MTQ4MzI4RDE4N0Y1MDg3MDBEQTYzQTYgLyogV0FLQXBwS2l0U3R1YnMubSAqLywKIAkJCQlBMTQ4
MzI4RTE4N0Y1MDg3MDBEQTYzQTYgLyogV0FLQ2xpcFZpZXcuaCAqLywKQEAgLTIxNzgyLDcgKzIx
ODA0LDYgQEAKIAkJCQlDNUY3NjVCNDE0RTFENDE0MDA2Qzg5OUIgLyogUGFzdGVib2FyZFN0cmF0
ZWd5LmggKi8sCiAJCQkJQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVu
dEZpbHRlci5oICovLAogCQkJCUJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQbGF0Zm9ybUV2
ZW50LmggKi8sCi0JCQkJQTcyM0Y3N0ExNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0
TWFjcm9zLmggKi8sCiAJCQkJNTE1RTVGRUYxOTUxMDE0NzAwODZDQTVFIC8qIFBsYXRmb3JtR2Ft
ZXBhZC5oICovLAogCQkJCTkzNUM0NzY2MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaCAqLywKIAkJCQk5MzI4NzFCRjBCMjBERUI3MDA0OTAzNUEgLyogUGxhdGZvcm1N
ZW51RGVzY3JpcHRpb24uaCAqLywKQEAgLTIxODY5LDYgKzIxODkwLDMzIEBACiAJCQl0YWJXaWR0
aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCUMyQzRGRENDMUIwODE4NjUwMDgzQzYw
OCAvKiBpb3MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CUMyQzRGRENEMUIwODE4NzgwMDgzQzYwOCAvKiB3YWsgKi8sCisJCQkpOworCQkJcGF0aCA9IGlv
czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUMyQzRGRENEMUIwODE4Nzgw
MDgzQzYwOCAvKiB3YWsgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCUZFNjk5ODZGMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1l
bnQuY3BwICovLAorCQkJCUZFNjk5ODcwMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50
RW52aXJvbm1lbnQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gd2FrOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzJGMzFGMTkxQjAwNkI0NjAwNkE4OEZBIC8qIFBBTCAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNjVDOTdBRjIwOEVB
OTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovLAorCQkJCUE3MjNGNzdBMTQ4NENBNEMwMDhDNkRC
RSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oICovLAorCQkJCUMyQzRGRENDMUIwODE4NjUwMDgz
QzYwOCAvKiBpb3MgKi8sCisJCQkpOworCQkJcGF0aCA9IFBBTDsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2MyAvKiBhdWRpbyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMzY3OSw2ICsyMzcy
NywxNyBAQAogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYSGVhZGVy
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzI5RUMyNjFBRkMxMkY1MDA5RTBBODIgLyogSGVh
ZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUMyNEZBRENGMUIwODY4NDMw
MERBMjIwNyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyNEZBREQwMUIwODY4NEQw
MERBMjIwNyAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzJD
NEZEQ0UxQjA4MTkxMDAwODNDNjA4IC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAgaW4g
SGVhZGVycyAqLywKKwkJCQkxQ0E5NEVENTFCMDlCNDlDMDBEODlDQ0MgLyogRmxvYXRpbmdQb2lu
dEVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJNDE3REE2Q0MxMzczNEUwMjAwN0M1N0ZC
IC8qIEhlYWRlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0yNDcxNiw3ICsyNDc3NSw2IEBACiAJCQkJ
QThDRkYwNEYwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTlBNTI4RTg0MTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09i
amVjdHMuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFNjk5ODcyMTkyMDg3RTcwMDY5MzZCRCAvKiBG
bG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTY5MEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkUyN0NB
MDBCMEYyQjA5MDBGMTdDN0IgLyogRmxvYXRQb2ludDNELmggaW4gSGVhZGVycyAqLywKIAkJCQk2
RUM0ODBBMjE2RUE2MzhBMDBBNDhEQ0IgLyogRmxvYXRQb2x5Z29uLmggaW4gSGVhZGVycyAqLywK
QEAgLTI2MDYyLDYgKzI2MTIwLDcgQEAKIAkJCQkzN0Y1NjdDRTE2NTM1OEY0MDBEREU5MkIgLyog
UG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OURFMDgyNDVF
NTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMkMxNEY0
RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUMy
OUZGOUZFMUIwODUxN0QwMDlBMEI1QyAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3NDZBRjJFMTRGNERERTYwMDNFN0E3MCAvKiBQb3NpdGlvbkVycm9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYzMDE0RjREREU2MDAzRTdBNzAgLyogUG9zaXRp
b25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzkxOUMyNDBCN0QxODg2MDBB
NTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzI1Myw2ICsy
NzMxMiwyMyBAQAogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMUMyOUVDMjcxQUZDMTJGNTAwOUUw
QTgyIC8qIFBBTCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSAxQzI5RUMyQzFBRkMxMkY2MDA5RTBBODIgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIgKi87CisJCQlidWlsZFBoYXNl
cyA9ICgKKwkJCQkxQzI5RUMyNjFBRkMxMkY1MDA5RTBBODIgLyogSGVhZGVycyAqLywKKwkJCQkx
QzI5RUMyNDFBRkMxMkY1MDA5RTBBODIgLyogU291cmNlcyAqLywKKwkJCQkxQzI5RUMyNTFBRkMx
MkY1MDA5RTBBODIgLyogRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAor
CQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gUEFMOworCQkJcHJv
ZHVjdE5hbWUgPSBQQUw7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMUMyOUVDMjgxQUZDMTJGNTAw
OUUwQTgyIC8qIGxpYlBBTC5hICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1
Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyI7CisJCX07CiAJCTQxN0RBNkNGMTM3MzRFMDIwMDdDNTdG
QiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7
CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNDE3REE2RDgxMzczNEU0NzAwN0M1N0ZCIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJDb3JlVGVz
dFN1cHBvcnQiICovOwpAQCAtMjcyOTEsNiArMjczNjcsNyBAQAogCQkJYnVpbGRSdWxlcyA9ICgK
IAkJCSk7CiAJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMUNFRkJBMTQxQUZDMTQ1RTAwNjlGMkE3
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJREQwNDFGRjEwOUQ5RTMyNTAwMTBBRjJB
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFdlYkNvcmU7CkBA
IC0yNzM0OSw2ICsyNzQyNiw3IEBACiAJCQkJREQwNDFGQkUwOUQ5RERCRTAwMTBBRjJBIC8qIERl
cml2ZWQgU291cmNlcyAqLywKIAkJCQk0MTdEQTZDRjEzNzM0RTAyMDA3QzU3RkIgLyogV2ViQ29y
ZVRlc3RTdXBwb3J0ICovLAogCQkJCUUxQkE2NkYzMTc0MkJERTAwMEMyMDI1MSAvKiBXZWJDb3Jl
VGVzdFNoaW0gKi8sCisJCQkJMUMyOUVDMjcxQUZDMTJGNTAwOUUwQTgyIC8qIFBBTCAqLywKIAkJ
CSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCkBAIC0yNzQ3NCw2ICsyNzU1
MiwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMUMyOUVDMjQxQUZDMTJG
NTAwOUUwQTgyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkx
Q0E5NEVENDFCMDlCMkNEMDBEODlDQ0MgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQl9OwogCQk0MTdEQTZDRDEzNzM0RTAyMDA3QzU3RkIgLyogU291cmNlcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKQEAgLTI4MjQyLDcgKzI4MzI4LDYgQEAKIAkJCQk0OUVDRUI2RjE0OTk3OTBE
MDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENG
RjA0RDBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5QTUyOEU4MzE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3RzLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCUZFNjk5ODcxMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1Bv
aW50RW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1NjgwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJFMjdDOUYwQjBG
MkIwOTAwRjE3QzdCIC8qIEZsb2F0UG9pbnQzRC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1
MzU1OTBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMzA1MzMsNiArMzA2MTgsMTEgQEAKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLworCQkxQ0VG
QkExNDFBRkMxNDVFMDA2OUYyQTcgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlz
YSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAxQzI5RUMyNzFBRkMxMkY1MDA5
RTBBODIgLyogUEFMICovOworCQkJdGFyZ2V0UHJveHkgPSAxQ0VGQkExMzFBRkMxNDVFMDA2OUYy
QTcgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQk0MTdEQTZENTEzNzM0RTBE
MDA3QzU3RkIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSA5M0YxOThBNTA4MjQ1RTU5MDAxRTlBQkMgLyogV2Vi
Q29yZSAqLzsKQEAgLTMwNjMzLDYgKzMwNzIzLDI3IEBACiAJCQl9OwogCQkJbmFtZSA9IFByb2R1
Y3Rpb247CiAJCX07CisJCTFDMjlFQzI5MUFGQzEyRjYwMDlFMEE4MiAvKiBEZWJ1ZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSAxQ0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEgLyogUEFMLnhjY29uZmlnICovOworCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTFDMjlF
QzJBMUFGQzEyRjYwMDlFMEE4MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDRkRCNTRCMUFG
QzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxQzI5RUMyQjFBRkMxMkY2MDA5RTBB
ODIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQ0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEg
LyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1l
ID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJNDE3REE2RDExMzczNEUwMjAwN0M1N0ZCIC8qIERlYnVn
ICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDQxODE3MDdEMTM4NkVERjIwMDU3QUFBNCAvKiBXZWJDb3JlVGVzdFN1
cHBvcnQueGNjb25maWcgKi87CkBAIC0zMDc0Myw2ICszMDg1NCwxNiBAQAogCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UHJvZHVjdGlvbjsKIAkJfTsKKwkJMUMyOUVDMkMxQUZDMTJGNjAwOUUwQTgyIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJQQUwiICovID0geworCQkJaXNh
ID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJ
MUMyOUVDMjkxQUZDMTJGNjAwOUUwQTgyIC8qIERlYnVnICovLAorCQkJCTFDMjlFQzJBMUFGQzEy
RjYwMDlFMEE4MiAvKiBSZWxlYXNlICovLAorCQkJCTFDMjlFQzJCMUFGQzEyRjYwMDlFMEE4MiAv
KiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJ
CTQxN0RBNkQ4MTM3MzRFNDcwMDdDNTdGQiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWE5hdGl2ZVRhcmdldCAiV2ViQ29yZVRlc3RTdXBwb3J0IiAqLyA9IHsKIAkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29uZmlnLmggYi9Tb3VyY2UvV2ViQ29yZS9jb25maWcuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg5ODU3ZDdjNjgyZDkyMDY3ZmQ0OTIyZjdkYmM0
ODcwZTk1MWRiYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmIGRlZmluZWQoSEFWRV9DT05GSUdfSCkg
JiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCi0jaW5jbHVk
ZSAiY21ha2Vjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Ci0K
LSNpZiBQTEFURk9STShDT0NPQSkKLSNkZWZpbmUgVVNFX0ZJTEVfTE9DSyAxCi0jZW5kaWYKLQot
I2lmIFBMQVRGT1JNKFdJTikgJiYgIVVTRShXSU5HREkpCi0jaW5jbHVkZSA8V2ViQ29yZS9XZWJD
b3JlSGVhZGVyRGV0ZWN0aW9uLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNy
b3MuaD4KLSNpbmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgotCi0jaW5jbHVkZSA8cnVu
dGltZS9KU0V4cG9ydE1hY3Jvcy5oPgotCi0jaWZkZWYgX19BUFBMRV9fCi0jZGVmaW5lIEhBVkVf
RlVOQ19VU0xFRVAgMQotI2VuZGlmIC8qIF9fQVBQTEVfXyAqLwotCi0jaWYgT1MoV0lORE9XUykK
LQotI2lmbmRlZiBfV0lOMzJfV0lOTlQKLSNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4NjAxCi0jZW5k
aWYKLQotI2lmbmRlZiBXSU5WRVIKLSNkZWZpbmUgV0lOVkVSIDB4MDYwMQotI2VuZGlmCi0KLS8v
IENVUkwgbmVlZHMgd2luc29jaywgc28gZG9uJ3QgcHJldmVudCBpbmNsdXNpb24gb2YgaXQKLSNp
ZiAhVVNFKENVUkwpCi0jaWZuZGVmIF9XSU5TT0NLQVBJXwotI2RlZmluZSBfV0lOU09DS0FQSV8g
Ly8gUHJldmVudCBpbmNsdXNpb24gb2Ygd2luc29jay5oIGluIHdpbmRvd3MuaAotI2VuZGlmCi0j
ZW5kaWYKLQotI2VuZGlmIC8qIE9TKFdJTkRPV1MpICovCi0KLS8vIFVzaW5nIENNYWtlIHdpdGgg
VW5peCBtYWtlZmlsZXMgZG9lcyBub3QgdXNlIHByZWZpeCBoZWFkZXJzLgotI2lmIFBMQVRGT1JN
KE1BQykgJiYgZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQotI2luY2x1ZGUgIldlYkNvcmVQ
cmVmaXguaCIKLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLQotLy8gVGhlc2UgdW5kZWZz
IG1hdGNoIHVwIHdpdGggZGVmaW5lcyBpbiBXZWJDb3JlUHJlZml4LmggZm9yIE1hYyBPUyBYLgot
Ly8gSGVscHMgdXMgY2F0Y2ggaWYgYW55b25lIHVzZXMgbmV3IG9yIGRlbGV0ZSBieSBhY2NpZGVu
dCBpbiBjb2RlIGFuZCBkb2Vzbid0IGluY2x1ZGUgImNvbmZpZy5oIi4KLSN1bmRlZiBuZXcKLSN1
bmRlZiBkZWxldGUKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi0jaW5jbHVkZSA8Y2lz
bzY0Nj4KLQotI2VuZGlmCi0KLSNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgotCi0jaWYg
Q09NUElMRVIoTVNWQykKLSNkZWZpbmUgU0tJUF9TVEFUSUNfQ09OU1RSVUNUT1JTX09OX01TVkMg
MQotI2Vsc2UKLSNkZWZpbmUgU0tJUF9TVEFUSUNfQ09OU1RSVUNUT1JTX09OX0dDQyAxCi0jZW5k
aWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpZiBQTEFURk9STShXSU5fQ0FJUk8pCi0jdW5kZWYg
VVNFX0NHCi0jZGVmaW5lIFVTRV9DQUlSTyAxCi0jZGVmaW5lIFVTRV9DVVJMIDEKLSNpZm5kZWYg
X1dJTlNPQ0tBUElfCi0jZGVmaW5lIF9XSU5TT0NLQVBJXyAvLyBQcmV2ZW50IGluY2x1c2lvbiBv
ZiB3aW5zb2NrLmggaW4gd2luZG93cy5oCi0jZW5kaWYKLSNlbGlmICFVU0UoV0lOR0RJKQotI2Rl
ZmluZSBVU0VfQ0cgMQotI3VuZGVmIFVTRV9DQUlSTwotI3VuZGVmIFVTRV9DVVJMCi0jZW5kaWYK
LSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQotI2RlZmluZSBVU0VfTkVXX1RIRU1FIDEKLSNl
bmRpZgotCi0jaWYgVVNFKENHKQotI2lmbmRlZiBDR0ZMT0FUX0RFRklORUQKLSNpZiAoZGVmaW5l
ZChfX0xQNjRfXykgJiYgX19MUDY0X18pIHx8IChkZWZpbmVkKF9feDg2XzY0X18pICYmIF9feDg2
XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKF9fYW1kNjRfXykKLXR5cGVkZWYg
ZG91YmxlIENHRmxvYXQ7Ci0jZWxzZQotdHlwZWRlZiBmbG9hdCBDR0Zsb2F0OwotI2VuZGlmCi0j
ZGVmaW5lIENHRkxPQVRfREVGSU5FRCAxCi0jZW5kaWYKLSNlbmRpZiAvKiBVU0UoQ0cpICovCi0K
LSNpZiBQTEFURk9STShJT1MpCi0jZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9SX1BMQVRGT1JNIHdr
R2V0UGxhdGZvcm1OYW1lRm9yTmF2aWdhdG9yKCk7Ci0jZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9S
X1ZFTkRPUiB3a0dldFZlbmRvck5hbWVGb3JOYXZpZ2F0b3IoKTsKLSNlbmRpZgotCi0vLyBGSVhN
RTogTW92ZSB0aGlzIHRvIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oLCB3aGljaCBpcyB3
aGVyZSB3ZSBkZWZpbmUgVVNFX0FWRk9VTkRBVElPTiBvbiB0aGUgTWFjLgotLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MzM0Ci0jaWYgUExBVEZPUk0oV0lOKSAm
JiBVU0UoQ0cpICYmIEhBVkUoQVZDRikKLSNkZWZpbmUgVVNFX0FWRk9VTkRBVElPTiAxCi0KLSNp
ZiBIQVZFKEFWQ0ZfTEVHSUJMRV9PVVRQVVQpCi0jZGVmaW5lIFVTRV9BVkZPVU5EQVRJT04gMQot
I2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVAgMQotI2RlZmlu
ZSBIQVZFX0FWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUIDEKLSNkZWZpbmUgSEFW
RV9NRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSyAxCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzYzZmFlY2JlNjVjMjFhODhmMDk3OGIxNjU5YzZlN2Yx
NWQ4Nzk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqCi0gKiBUaGlzIGZpbGUgaGFuZGxlcyBzaGFyZWQgbGlicmFyeSBzeW1ib2wgZXhwb3J0
IGRlY29yYXRpb25zLiBJdCBpcyByZWNvbW1lbmRlZAotICogdGhhdCBhbGwgV2ViS2l0IHByb2pl
Y3RzIHVzZSB0aGVzZSBkZWZpbml0aW9ucyBzbyB0aGF0IHN5bWJvbCBleHBvcnRzIHdvcmsKLSAq
IHByb3Blcmx5IG9uIGFsbCBwbGF0Zm9ybXMgYW5kIGNvbXBpbGVycyB0aGF0IFdlYktpdCBidWls
ZHMgdW5kZXIuCi0gKi8KLSNpZm5kZWYgUGxhdGZvcm1FeHBvcnRNYWNyb3NfaAotI2RlZmluZSBQ
bGF0Zm9ybUV4cG9ydE1hY3Jvc19oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLSNpbmNs
dWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+Ci0KLS8vIFNlZSBub3RlIGluIHd0Zi9QbGF0Zm9ybS5o
IGZvciBtb3JlIGluZm8gb24gRVhQT1JUX01BQ1JPUy4KLSNpZiBVU0UoRVhQT1JUX01BQ1JPUykK
LQotI2lmICFQTEFURk9STShXSU4pCi0jZGVmaW5lIFdFQkNPUkVfRVhQT1JUIFdURl9FWFBPUlQK
LSNkZWZpbmUgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgV1RGX0VYUE9SVAotI2Vsc2UKLS8v
IFdpbmRvd3MgbXVzdCBzZXQgdGhpcyBwZXItcHJvamVjdAotI2VuZGlmCi0KLSNlbHNlIC8vICFV
U0UoRVhQT1JUX01BQ1JPUykKLSNkZWZpbmUgV0VCQ09SRV9FWFBPUlQKLSNkZWZpbmUgV0VCQ09S
RV9URVNUU1VQUE9SVF9FWFBPUlQKLQotI2VuZGlmIC8vIFVTRShFWFBPUlRfTUFDUk9TKQotCi0j
ZW5kaWYgLy8gUGxhdGZvcm1FeHBvcnRNYWNyb3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTZiOTUzODRlYjcwNWExNGFmYTVkOTIyYTJm
MTRlM2FjMGYwNTM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25t
ZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIgotCi0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotI2lmIFBMQVRGT1JNKElP
UykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQmIEZs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8RmxvYXRpbmdQb2ludEVudmlyb25tZW50PiBmbG9hdGluZ1BvaW50RW52aXJvbm1l
bnQ7Ci0gICAgcmV0dXJuIGZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDsKLX0KLQotRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50OjpGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQoKQotICAgIDogbV9pc0lu
aXRpYWxpemVkKGZhbHNlKQotewotfQotCi12b2lkIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6
ZW5hYmxlRGVub3JtYWxTdXBwb3J0KCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChpc1VJVGhyZWFk
KCkpOwotI2lmIGRlZmluZWQgX0FSTV9BUkNIXzcKLSAgICBmZW52X3QgZW52OyAKLSAgICBmZWdl
dGVudigmZW52KTsgCi0gICAgZW52Ll9fZnBzY3IgJj0gfjB4MDEwMDAwMDBVOwotICAgIGZlc2V0
ZW52KCZlbnYpOyAKLSNlbmRpZgotICAgIC8vIFN1cHBvcnRpbmcgZGVub3JtYWwgbW9kZSBpcyBh
bHJlYWR5IHRoZSBkZWZhdWx0IG9uIHg4NiwgeDg2XzY0LCBhbmQgQVJNNjQuCi19Ci0KLXZvaWQg
RmxvYXRpbmdQb2ludEVudmlyb25tZW50OjpzYXZlTWFpblRocmVhZEVudmlyb25tZW50KCkKLXsK
LSAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0luaXRpYWxpemVkKTsKLSAgICBSRUxFQVNFX0FTU0VS
VChpc1VJVGhyZWFkKCkpOwotICAgIGZlZ2V0ZW52KCZtX21haW5UaHJlYWRFbnZpcm9ubWVudCk7
Ci0gICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKLX0KLQotdm9pZCBGbG9hdGluZ1BvaW50RW52
aXJvbm1lbnQ6OnByb3BhZ2F0ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpCi17Ci0gICAgUkVMRUFT
RV9BU1NFUlQobV9pc0luaXRpYWxpemVkKTsKLSAgICBSRUxFQVNFX0FTU0VSVCghaXNVSVRocmVh
ZCgpKTsKLSAgICBmZXNldGVudigmbV9tYWluVGhyZWFkRW52aXJvbm1lbnQpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJv
bm1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUxMWJmMGUwNzU5YjE1Mjdj
YWFhNGUzM2VhN2FlM2ExYWQ3ZDI4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9p
bnRFbnZpcm9ubWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEZsb2F0aW5nUG9p
bnRFbnZpcm9ubWVudF9oCi0jZGVmaW5lIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudF9oCi0KLSNp
ZiBUQVJHRVRfT1NfSVBIT05FCi0KLSNpbXBvcnQgPGZlbnYuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQgewotcHVibGljOgotICAgIEZs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudCgpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmFi
bGVEZW5vcm1hbFN1cHBvcnQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNhdmVNYWluVGhy
ZWFkRW52aXJvbm1lbnQoKTsKLSAgICB2b2lkIHByb3BhZ2F0ZU1haW5UaHJlYWRFbnZpcm9ubWVu
dCgpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dCYgc2luZ2xldG9uKCk7Ci0KLXByaXZhdGU6Ci0KLSAgICBmZW52X3QgbV9tYWluVGhyZWFkRW52
aXJvbm1lbnQ7Ci0gICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLXVzaW5nIFdlYkNvcmU6OkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDsKLQot
I2VuZGlmIC8vIFRBUkdFVF9PU19JUEhPTkUKLQotI2VuZGlmIC8vIEZsb2F0aW5nUG9pbnRFbnZp
cm9ubWVudF9oCi0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253610</attachid>
            <date>2015-05-22 15:14:04 -0700</date>
            <delta_ts>2015-05-26 13:56:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20150522151356.patch</filename>
            <type>text/plain</type>
            <size>50814</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGMyYjlhMGQzYjkxZThh
ZDE3NWU5Y2NmZjY2YjEwMjZhZmU3YmZlMS4uYWU2N2Y5OGYzNjA0NmE2Y2U5NTgwZGZhMDdjNzRj
NjJhZmY3NDJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE1LTA1LTE4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgV2ViQ29yZSB0
YXJnZXQgYW5kIHN0YXRpYyBsaWJyYXJ5LiBUaGlzIGlzIGludGVuZGVkIHRvIGJlCisgICAgICAg
IHRoZSBkZXN0aW5hdGlvbiB0YXJnZXQgdG8gYnVpbGQgY29kZSB0aGF0IGN1cnJlbnRseSByZXNp
ZGVzIGluCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0uIEZpbGVzIHdpbGwgYmUgbW92ZWQgaW50
byB0aGF0IHRhcmdldCBmaWxlIGJ5IGZpbGUuCisgICAgICAgIFNlcGFyYXRpbmcgdGhpcyBwbGF0
Zm9ybSBjb2RlIGludG8gaXRzIG93biBzdGF0aWMgbGlicmFyeSBlbmZvcmNlcworICAgICAgICBs
YXllcmluZywgYXMgd2VsbCBhcyBlbmNvdXJhZ2VzL2FpZHMgdW5pdCB0ZXN0aW5nIG9mIHRoaXMg
cGxhdGZvcm0gY29kZS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIGEgc21hbGwgZGVwZW5k
ZW5jeSB0cmVlLCBjb25zaXN0aW5nIG9mIHRoZSBDbG9jayBjbGFzcworICAgICAgICBhbmQgaXRz
IGRlcGVuZGVudHMsIGludG8gUEFMLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBQ
cm9jZXNzIENNYWtlTGlzdHMudHh0IGluIHRoZSBQQUwgZGlyZWN0b3J5LgorICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZzogQWRkZWQuCisgICAgICAgICogUEFML0NNYWtlTGlz
dHMudHh0OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvKjogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtLworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBVcGRhdGUgZm9yd2FyZCBkZWNs
YXJhdGlvbi4KKworMjAxNS0wNS0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCiAgICAgICAgIEFkZHJlc3NpbmcgcG9zdC1yZXZpZXcgY29tbWVudHMgb24gcjE4
NDM1MwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1
MTQ2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBmNDA2MzM0MGY3ODRkNWNjMTEzMzJlZDk5MDY0MTcyNjBmNGY1
ZGQ3Li5jOTAwY2IwN2M2Njk3NTM5OWIxMjY3ZjU1YTkzYmE1OGJiMzViOGY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDUtMTggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0gQWJzdHJh
Y3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEludHJvZHVjZSBhIG5ldyBXZWJDb3JlIHRhcmdldCBhbmQgc3RhdGljIGxpYnJh
cnkuIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUKKyAgICAgICAgdGhlIGRlc3RpbmF0aW9uIHRhcmdl
dCB0byBidWlsZCBjb2RlIHRoYXQgY3VycmVudGx5IHJlc2lkZXMgaW4KKyAgICAgICAgV2ViQ29y
ZS9wbGF0Zm9ybS4gRmlsZXMgd2lsbCBiZSBtb3ZlZCBpbnRvIHRoYXQgdGFyZ2V0IGZpbGUgYnkg
ZmlsZS4KKyAgICAgICAgU2VwYXJhdGluZyB0aGlzIHBsYXRmb3JtIGNvZGUgaW50byBpdHMgb3du
IHN0YXRpYyBsaWJyYXJ5IGVuZm9yY2VzCisgICAgICAgIGxheWVyaW5nLCBhcyB3ZWxsIGFzIGVu
Y291cmFnZXMvYWlkcyB1bml0IHRlc3Rpbmcgb2YgdGhpcyBwbGF0Zm9ybSBjb2RlLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggbW92ZXMgYSBzbWFsbCBkZXBlbmRlbmN5IHRyZWUsIGNvbnNpc3Rpbmcg
b2YgdGhlIENsb2NrIGNsYXNzCisgICAgICAgIGFuZCBpdHMgZGVwZW5kZW50cywgaW50byBQQUwu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBQQUwgaW5jbHVkZSBkaXJlY3Rv
cnkuCisKIDIwMTUtMDUtMTggIFNrYWNoa292IEFsZXhhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNv
bT4KIAogICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEZlYXR1cmUgZmxhZyBm
b3IgYXJyb3cgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlZWFhMzJkOGVhYTRjNDRlZTUwMTE0OGJkZTQ5NzBm
NWUxNmVlOGM3Li42N2Q1NjI4MWFiY2M1YjEwMWY5MWZjODEyNGZhMjMzMWZhY2QzMGU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0NNYWtlTGlzdHMudHh0
CkBAIC0zMyw2ICszMyw3IEBAIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoYm1hbGxv
YyAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxF
Ul9GTEFHUyhXVEYgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKIFdFQktJVF9TRVRfRVhU
UkFfQ09NUElMRVJfRkxBR1MoSmF2YVNjcmlwdENvcmUgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZM
QUdTfSkKIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29yZVRlc3RTdXBwb3J0
ICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCitXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVS
X0ZMQUdTKFBBTCAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogV0VCS0lUX1NFVF9FWFRS
QV9DT01QSUxFUl9GTEFHUyhXZWJDb3JlICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAK
IGlmIChFTkFCTEVfV0VCS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiMTIwYmFmYWI3MWMx
YWJhODZlZmNjNTZjMWEyODlmN2JhMTBlMTQ3Li5iMzljMGNmZjg0ZDZmNTAzZWZiN2Y3NjA0ODM3
ZjQwMjIwZmJkOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMSwzICsxLDUgQEAKK2FkZF9z
dWJkaXJlY3RvcnkoUEFMKQorCiBzZXQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7V0VCQ09SRV9ESVJ9IgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2FpcnBsYXkiCkBA
IC0yMiw2ICsyNCw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtX
RUJDT1JFX0RJUn0vTW9kdWxlcy93ZWJhdWRpbyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxl
cy93ZWJkYXRhYmFzZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy93ZWJzb2NrZXRzIgor
ICAgICIke1dFQkNPUkVfRElSfS9QQUwiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2FjY2Vzc2liaWxp
dHkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzIgogICAgICIke1dFQkNPUkVfRElSfS9i
aW5kaW5ncy9nZW5lcmljIgpAQCAtMjc5Myw2ICsyNzk2LDcgQEAgc2V0KFdlYkNvcmVfUExVR19J
TlNfUkVTT1VSQ0VTCiAKIHNldChXZWJDb3JlX0xJQlJBUklFUwogICAgICR7SUNVX0xJQlJBUklF
U30KKyAgICBQQUwKICAgICBKYXZhU2NyaXB0Q29yZQogICAgIFdURgogKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnIGIvU291cmNlL1dlYkNv
cmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1Yzc0OTZkOTYwMzI3
NGRmMjlmNjRkYjc1OWY5OTkwNGExYmYwNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcKQEAgLTAsMCArMSwzNCBAQAorLy8gQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
Ky8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVkZSAiRmVhdHVyZURlZmluZXMu
eGNjb25maWciCisjaW5jbHVkZSAiVmVyc2lvbi54Y2NvbmZpZyIKKworSEVBREVSX1NFQVJDSF9Q
QVRIUyA9IEZvcndhcmRpbmdIZWFkZXJzICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2Fs
L2luY2x1ZGUiICQoaW5oZXJpdGVkKTsKK1BST0RVQ1RfTkFNRSA9IFBBTDsKK1NLSVBfSU5TVEFM
TCA9IFlFUzsKKworLy8gRklYTUU6IFVzZSBhIGhlYWRlcm1hcCBvbmNlIHdlIGNhbiBnZXQgSEVB
REVSTUFQX0lOQ0xVREVTX1BST0pFQ1RfSEVBREVSUyB0byB3b3JrLgorSEVBREVSTUFQX0lOQ0xV
REVTX1BST0pFQ1RfSEVBREVSUyA9IE5POworVVNFX0hFQURFUk1BUCA9IE5POworCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ2ZjIwMjE4MDg1Y2NmZjljODExMDMzOGMy
YmM3ZjQ0ZDg2NzUzMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DTWFr
ZUxpc3RzLnR4dApAQCAtMCwwICsxLDIzIEBACitzZXQoUEFMX0lOQ0xVREVfRElSRUNUT1JJRVMK
KyAgICAiJHtXRUJDT1JFX0RJUn0vUEFMIgorKQorCitzZXQoUEFMX1NPVVJDRVMKKykKKworc2V0
KFBBTF9MSUJSQVJJRVMKKyAgICBKYXZhU2NyaXB0Q29yZQorICAgIFdURgorKQorCitXRUJLSVRf
SU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKworV0VCS0lUX1dSQVBfU09VUkNFTElT
VCgke1BBTF9TT1VSQ0VTfSkKK2luY2x1ZGVfZGlyZWN0b3JpZXMoJHtQQUxfSU5DTFVERV9ESVJF
Q1RPUklFU30gJHtXZWJDb3JlVGVzdFN1cHBvcnRfSU5DTFVERV9ESVJFQ1RPUklFU30pCithZGRf
bGlicmFyeShQQUwgU1RBVElDICR7UEFMX1NPVVJDRVN9KQordGFyZ2V0X2xpbmtfbGlicmFyaWVz
KFBBTCAke1BBTF9MSUJSQVJJRVN9KQorc2V0X3RhcmdldF9wcm9wZXJ0aWVzKFBBTCBQUk9QRVJU
SUVTIEZPTERFUiAiUEFMIikKKworaWYgKFBBTF9PVVRQVVRfTkFNRSkKKyAgICBzZXRfdGFyZ2V0
X3Byb3BlcnRpZXMoUEFMIFBST1BFUlRJRVMgT1VUUFVUX05BTUUgJHtQQUxfT1VUUFVUX05BTUV9
KQorZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUV4cG9y
dE1hY3Jvcy5oIGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtRXhwb3J0TWFjcm9zLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2M2M2ZhZWNiZTY1YzIxYTg4ZjA5NzhiMTY1OWM2ZTdmMTVkODc5NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oCkBA
IC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICoKKyAqIFRoaXMgZmlsZSBoYW5kbGVzIHNoYXJlZCBsaWJyYXJ5IHN5bWJvbCBleHBvcnQgZGVj
b3JhdGlvbnMuIEl0IGlzIHJlY29tbWVuZGVkCisgKiB0aGF0IGFsbCBXZWJLaXQgcHJvamVjdHMg
dXNlIHRoZXNlIGRlZmluaXRpb25zIHNvIHRoYXQgc3ltYm9sIGV4cG9ydHMgd29yaworICogcHJv
cGVybHkgb24gYWxsIHBsYXRmb3JtcyBhbmQgY29tcGlsZXJzIHRoYXQgV2ViS2l0IGJ1aWxkcyB1
bmRlci4KKyAqLworI2lmbmRlZiBQbGF0Zm9ybUV4cG9ydE1hY3Jvc19oCisjZGVmaW5lIFBsYXRm
b3JtRXhwb3J0TWFjcm9zX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUg
PHd0Zi9FeHBvcnRNYWNyb3MuaD4KKworLy8gU2VlIG5vdGUgaW4gd3RmL1BsYXRmb3JtLmggZm9y
IG1vcmUgaW5mbyBvbiBFWFBPUlRfTUFDUk9TLgorI2lmIFVTRShFWFBPUlRfTUFDUk9TKQorCisj
aWYgIVBMQVRGT1JNKFdJTikKKyNkZWZpbmUgV0VCQ09SRV9FWFBPUlQgV1RGX0VYUE9SVAorI2Rl
ZmluZSBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBXVEZfRVhQT1JUCisjZWxzZQorLy8gV2lu
ZG93cyBtdXN0IHNldCB0aGlzIHBlci1wcm9qZWN0CisjZW5kaWYKKworI2Vsc2UgLy8gIVVTRShF
WFBPUlRfTUFDUk9TKQorI2RlZmluZSBXRUJDT1JFX0VYUE9SVAorI2RlZmluZSBXRUJDT1JFX1RF
U1RTVVBQT1JUX0VYUE9SVAorCisjZW5kaWYgLy8gVVNFKEVYUE9SVF9NQUNST1MpCisKKyNlbmRp
ZiAvLyBQbGF0Zm9ybUV4cG9ydE1hY3Jvc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvY29uZmlnLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg5
ODU3ZDdjNjgyZDkyMDY3ZmQ0OTIyZjdkYmM0ODcwZTk1MWRiYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICYmIEhBVkVfQ09O
RklHX0ggJiYgZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQorI2luY2x1ZGUgImNtYWtlY29u
ZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisjZGVmaW5lIFVTRV9GSUxFX0xPQ0sgMQorI2VuZGlmCisKKyNpZiBQTEFURk9S
TShXSU4pICYmICFVU0UoV0lOR0RJKQorI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUhlYWRlckRl
dGVjdGlvbi5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CisjaW5j
bHVkZSAiUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCIKKworI2luY2x1ZGUgPHJ1bnRpbWUvSlNFeHBv
cnRNYWNyb3MuaD4KKworI2lmZGVmIF9fQVBQTEVfXworI2RlZmluZSBIQVZFX0ZVTkNfVVNMRUVQ
IDEKKyNlbmRpZiAvKiBfX0FQUExFX18gKi8KKworI2lmIE9TKFdJTkRPV1MpCisKKyNpZm5kZWYg
X1dJTjMyX1dJTk5UCisjZGVmaW5lIF9XSU4zMl9XSU5OVCAweDYwMQorI2VuZGlmCisKKyNpZm5k
ZWYgV0lOVkVSCisjZGVmaW5lIFdJTlZFUiAweDA2MDEKKyNlbmRpZgorCisvLyBDVVJMIG5lZWRz
IHdpbnNvY2ssIHNvIGRvbid0IHByZXZlbnQgaW5jbHVzaW9uIG9mIGl0CisjaWYgIVVTRShDVVJM
KQorI2lmbmRlZiBfV0lOU09DS0FQSV8KKyNkZWZpbmUgX1dJTlNPQ0tBUElfIC8vIFByZXZlbnQg
aW5jbHVzaW9uIG9mIHdpbnNvY2suaCBpbiB3aW5kb3dzLmgKKyNlbmRpZgorI2VuZGlmCisKKyNl
bmRpZiAvKiBPUyhXSU5ET1dTKSAqLworCisvLyBVc2luZyBDTWFrZSB3aXRoIFVuaXggbWFrZWZp
bGVzIGRvZXMgbm90IHVzZSBwcmVmaXggaGVhZGVycy4KKyNpZiBQTEFURk9STShNQUMpICYmIGRl
ZmluZWQoQlVJTERJTkdfV0lUSF9DTUFLRSkKKyNpbmNsdWRlICJXZWJDb3JlUHJlZml4LmgiCisj
ZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKy8vIFRoZXNlIHVuZGVmcyBtYXRjaCB1cCB3
aXRoIGRlZmluZXMgaW4gV2ViQ29yZVByZWZpeC5oIGZvciBNYWMgT1MgWC4KKy8vIEhlbHBzIHVz
IGNhdGNoIGlmIGFueW9uZSB1c2VzIG5ldyBvciBkZWxldGUgYnkgYWNjaWRlbnQgaW4gY29kZSBh
bmQgZG9lc24ndCBpbmNsdWRlICJjb25maWcuaCIuCisjdW5kZWYgbmV3CisjdW5kZWYgZGVsZXRl
CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworI2luY2x1ZGUgPGNpc282NDY+CisKKyNl
bmRpZgorCisjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4KKworI2lmIENPTVBJTEVSKE1T
VkMpCisjZGVmaW5lIFNLSVBfU1RBVElDX0NPTlNUUlVDVE9SU19PTl9NU1ZDIDEKKyNlbHNlCisj
ZGVmaW5lIFNLSVBfU1RBVElDX0NPTlNUUlVDVE9SU19PTl9HQ0MgMQorI2VuZGlmCisKKyNpZiBQ
TEFURk9STShXSU4pCisjaWYgUExBVEZPUk0oV0lOX0NBSVJPKQorI3VuZGVmIFVTRV9DRworI2Rl
ZmluZSBVU0VfQ0FJUk8gMQorI2RlZmluZSBVU0VfQ1VSTCAxCisjaWZuZGVmIF9XSU5TT0NLQVBJ
XworI2RlZmluZSBfV0lOU09DS0FQSV8gLy8gUHJldmVudCBpbmNsdXNpb24gb2Ygd2luc29jay5o
IGluIHdpbmRvd3MuaAorI2VuZGlmCisjZWxpZiAhVVNFKFdJTkdESSkKKyNkZWZpbmUgVVNFX0NH
IDEKKyN1bmRlZiBVU0VfQ0FJUk8KKyN1bmRlZiBVU0VfQ1VSTAorI2VuZGlmCisjZW5kaWYKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgVVNFX05FV19USEVNRSAxCisjZW5kaWYKKworI2lm
IFVTRShDRykKKyNpZm5kZWYgQ0dGTE9BVF9ERUZJTkVECisjaWYgKGRlZmluZWQoX19MUDY0X18p
ICYmIF9fTFA2NF9fKSB8fCAoZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBfX3g4Nl82NF9fKSB8fCBk
ZWZpbmVkKF9NX1g2NCkgfHwgZGVmaW5lZChfX2FtZDY0X18pCit0eXBlZGVmIGRvdWJsZSBDR0Zs
b2F0OworI2Vsc2UKK3R5cGVkZWYgZmxvYXQgQ0dGbG9hdDsKKyNlbmRpZgorI2RlZmluZSBDR0ZM
T0FUX0RFRklORUQgMQorI2VuZGlmCisjZW5kaWYgLyogVVNFKENHKSAqLworCisjaWYgUExBVEZP
Uk0oSU9TKQorI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9QTEFURk9STSB3a0dldFBsYXRmb3Jt
TmFtZUZvck5hdmlnYXRvcigpOworI2RlZmluZSBXRUJDT1JFX05BVklHQVRPUl9WRU5ET1Igd2tH
ZXRWZW5kb3JOYW1lRm9yTmF2aWdhdG9yKCk7CisjZW5kaWYKKworLy8gRklYTUU6IE1vdmUgdGhp
cyB0byBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaCwgd2hpY2ggaXMgd2hlcmUgd2UgZGVm
aW5lIFVTRV9BVkZPVU5EQVRJT04gb24gdGhlIE1hYy4KKy8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NzMzNAorI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENHKSAm
JiBIQVZFKEFWQ0YpCisjZGVmaW5lIFVTRV9BVkZPVU5EQVRJT04gMQorCisjaWYgSEFWRShBVkNG
X0xFR0lCTEVfT1VUUFVUKQorI2RlZmluZSBVU0VfQVZGT1VOREFUSU9OIDEKKyNkZWZpbmUgSEFW
RV9BVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQIDEKKyNkZWZpbmUgSEFWRV9BVkZP
VU5EQVRJT05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCAxCisjZGVmaW5lIEhBVkVfTUVESUFfQUND
RVNTSUJJTElUWV9GUkFNRVdPUksgMQorI2VuZGlmCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvUEFML2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kMTZiOTUzODRlYjcwNWExNGFmYTVkOTIyYTJmMTRlM2FjMGYwNTM0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML2lvcy93YWsvRmxvYXRpbmdQb2ludEVu
dmlyb25tZW50LmNwcApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGbG9h
dGluZ1BvaW50RW52aXJvbm1lbnQuaCIKKworI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Cisj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisKKyNpZiBQTEFURk9STShJT1MpCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRmxvYXRpbmdQb2ludEVudmlyb25tZW50JiBGbG9hdGluZ1Bv
aW50RW52aXJvbm1lbnQ6OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudD4gZmxvYXRpbmdQb2ludEVudmlyb25tZW50OworICAg
IHJldHVybiBmbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ7Cit9CisKK0Zsb2F0aW5nUG9pbnRFbnZp
cm9ubWVudDo6RmxvYXRpbmdQb2ludEVudmlyb25tZW50KCkKKyAgICA6IG1faXNJbml0aWFsaXpl
ZChmYWxzZSkKK3sKK30KKwordm9pZCBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OmVuYWJsZURl
bm9ybWFsU3VwcG9ydCgpCit7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNVSVRocmVhZCgpKTsKKyNp
ZiBkZWZpbmVkIF9BUk1fQVJDSF83CisgICAgZmVudl90IGVudjsgCisgICAgZmVnZXRlbnYoJmVu
dik7IAorICAgIGVudi5fX2Zwc2NyICY9IH4weDAxMDAwMDAwVTsKKyAgICBmZXNldGVudigmZW52
KTsgCisjZW5kaWYKKyAgICAvLyBTdXBwb3J0aW5nIGRlbm9ybWFsIG1vZGUgaXMgYWxyZWFkeSB0
aGUgZGVmYXVsdCBvbiB4ODYsIHg4Nl82NCwgYW5kIEFSTTY0LgorfQorCit2b2lkIEZsb2F0aW5n
UG9pbnRFbnZpcm9ubWVudDo6c2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpCit7CisgICAgUkVM
RUFTRV9BU1NFUlQoIW1faXNJbml0aWFsaXplZCk7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNVSVRo
cmVhZCgpKTsKKyAgICBmZWdldGVudigmbV9tYWluVGhyZWFkRW52aXJvbm1lbnQpOworICAgIG1f
aXNJbml0aWFsaXplZCA9IHRydWU7Cit9CisKK3ZvaWQgRmxvYXRpbmdQb2ludEVudmlyb25tZW50
Ojpwcm9wYWdhdGVNYWluVGhyZWFkRW52aXJvbm1lbnQoKQoreworICAgIFJFTEVBU0VfQVNTRVJU
KG1faXNJbml0aWFsaXplZCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWlzVUlUaHJlYWQoKSk7Cisg
ICAgZmVzZXRlbnYoJm1fbWFpblRocmVhZEVudmlyb25tZW50KTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NTExYmYwZTA3NTliMTUyN2NhYWE0ZTMzZWE3YWUzYTFhZDdkMjg0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50
LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudF9oCisjZGVmaW5lIEZs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudF9oCisKKyNpZiBUQVJHRVRfT1NfSVBIT05FCisKKyNpbXBv
cnQgPGZlbnYuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGbG9hdGluZ1BvaW50
RW52aXJvbm1lbnQgeworcHVibGljOgorICAgIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCgpOwor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmFibGVEZW5vcm1hbFN1cHBvcnQoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKTsKKyAgICB2b2lk
IHByb3BhZ2F0ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpOworCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCYgc2luZ2xldG9uKCk7CisKK3ByaXZhdGU6
CisKKyAgICBmZW52X3QgbV9tYWluVGhyZWFkRW52aXJvbm1lbnQ7CisgICAgYm9vbCBtX2lzSW5p
dGlhbGl6ZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK3VzaW5nIFdlYkNvcmU6
OkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDsKKworI2VuZGlmIC8vIFRBUkdFVF9PU19JUEhPTkUK
KworI2VuZGlmIC8vIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudF9oCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMDg1YTA3MDcy
ZDYwOThkMTc5NDQwM2U1MGYxZTQzNzBhZDZhOGQxLi4wNzRhYjZjYzUyMjQ0N2YwZjlhZTBiMDc0
MmI2ZDBmYmYxYjEzZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NDEsNiArOTQxLDcgQEAKIAkJMUMyNDE3QkExOTkyQzA0
MTAwRUY5OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNDE3QjkxOTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxs
aW5nRG90QDN4LnBuZyAqLzsgfTsKIAkJMUMyNjQ5N0EwRDdFMjQ4QTAwQkQxMEYyIC8qIERvY3Vt
ZW50TG9hZGVyTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDMjY0OTc5MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAg
Ki87IH07CiAJCTFDMjY0OTdDMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjY0OTdCMEQ3RTI0RUMw
MEJEMTBGMiAvKiBQYWdlTWFjLmNwcCAqLzsgfTsKKwkJMUMyOUVDMkQxQUZDMTMxRDAwOUUwQTgy
IC8qIGxpYlBBTC5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUMyOUVDMjgxQUZDMTJGNTAwOUUwQTgyIC8qIGxpYlBBTC5hICovOyB9OwogCQkxQzY0
NjYyNTFBMTJDMzhFMDA5NDYwM0MgLyogQ29yZVRleHRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNUU5ODBGMUEwMkNFRkEwMDJEQjU1RiAvKiBD
b3JlVGV4dFNQSS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFDNjQ2NjI4MUExMkM0MjAwMDk0NjAzQyAvKiBOU0ZvbnRTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDNjQ2NjI3MUExMkMzRjkwMDk0
NjAzQyAvKiBOU0ZvbnRTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxQzgxQjk1QTBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4
MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTQ4LDYgKzk0OSw4IEBA
CiAJCTFDODFCOTVDMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOTU4MEU5NzMzMDgw
MDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0ExOUUwNTBEQzI1NTk1MDA2NUE5OTQgLyogRXZlbnRM
b29wTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUNBMTlFMDMwREMyNTU5NTAwNjVBOTk0IC8qIEV2ZW50TG9vcE1hYy5tbSAqLzsgfTsKIAkJMUNB
MTlFMTYwREMyNTVDQTAwNjVBOTk0IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBMTlFMTUwREMyNTVDQTAwNjVBOTk0IC8qIEV2
ZW50TG9vcC5oICovOyB9OworCQkxQ0E5NEVENDFCMDlCMkNEMDBEODlDQ0MgLyogRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFNjk5ODZGMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJv
bm1lbnQuY3BwICovOyB9OworCQkxQ0E5NEVENTFCMDlCNDlDMDBEODlDQ0MgLyogRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTY5OTg3MDE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25t
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MUNBRjM0ODEwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJF
MDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTFDQUYzNDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRP
YmplY3QubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
Q0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkx
Q0FGMzQ4MzBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTYyNyw2ICs1NjMwLDEwIEBACiAJCUMw
RjJBNDQxMTM4NjlBQUIwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQg
LyogcHJlcHJvY2Vzc29yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUMxMDVEQTYyMEYzQUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRl
Y3RvcklDVS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMTA1REE2MTBGM0FBNjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3Bw
ICovOyB9OwogCQlDMTA1REE2NDBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMDVE
QTYzMEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oICovOyB9OworCQlD
MjRGQURDRjFCMDg2ODQzMDBEQTIyMDcgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29u
ZmlnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QzI0RkFERDAxQjA4Njg0RDAwREEyMjA3IC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzIzRjc3QTE0ODRDQTRD
MDA4QzZEQkUgLyogUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMjlGRjlGRTFCMDg1MTdEMDA5QTBCNUMgLyog
RmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTY5OTg3MDE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2lu
dEVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQzJDNEZEQ0UxQjA4MTkxMDAwODNDNjA4IC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9u
bWVudC5jcHAgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTY5OTg2RjE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCAq
LzsgfTsKIAkJQzMzMEEyMjMxM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzMEEyMjExM0VDMTk2
QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUMzM0VFNUM0MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xp
Y2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMzNFRTVDMjE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJs
ZVdpdGhLZXlJbnB1dFR5cGUuY3BwICovOyB9OwogCQlDMzNFRTVDNTE0RkI0OTYxMDAwMjA5NUEg
LyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzM0VFNUMzMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNl
Q2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oICovOyB9OwpAQCAtNjc3MCw4ICs2Nzc3LDYgQEAK
IAkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNjE2NzdENzRF
MDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRkU0NTZGMTkxNjc3RDc0
RTAwNUVEREY5IC8qIERhdGFiYXNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTcxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNl
TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZFNjkzOEI2MTA0NUQ2N0UwMDhFQUJCNiAvKiBFdmVudEhhbmRsZXJJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5MzhCNTEwNDVENjdF
MDA4RUFCQjYgLyogRXZlbnRIYW5kbGVySU9TLm1tICovOyB9OwotCQlGRTY5OTg3MTE5MjA4N0U3
MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNjk5ODZGMTkyMDg3RTcwMDY5MzZCRCAv
KiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwICovOyB9OwotCQlGRTY5OTg3MjE5MjA4N0U3
MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5OTg3MDE5MjA4N0U3MDA2OTM2QkQgLyog
RmxvYXRpbmdQb2ludEVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2RkQ0OEQwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRp
bmF0ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU2RkQ0OEIwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuY3BwICovOyB9OwogCQlG
RTZGRDQ4RTBGNjc2RTkzMDAwOTI4NzMgLyogSlNDb29yZGluYXRlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RkQ0OEMwRjY3NkU5MzAwMDkyODcz
IC8qIEpTQ29vcmRpbmF0ZXMuaCAqLzsgfTsKIAkJRkU4MEQ3QUIwRTlDMUVEMjAwMEQ2Rjc1IC8q
IEpTR2VvbG9jYXRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25D
dXN0b20uY3BwICovOyB9OwpAQCAtNjgxMCw2ICs2ODE1LDEzIEBACiAvKiBFbmQgUEJYQnVpbGRG
aWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24g
Ki8KKwkJMUNFRkJBMTMxQUZDMTQ1RTAwNjlGMkE3IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXBy
b3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDFDMjlFQzI3MUFGQzEyRjUw
MDlFMEE4MjsKKwkJCXJlbW90ZUluZm8gPSBQQUw7CisJCX07CiAJCTQxN0RBNkQ0MTM3MzRFMEQw
MDdDNTdGQiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250
YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAy
QUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC04MDQ1LDYgKzgwNTcsNyBAQAogCQkxQzI0
MTdCOTE5OTJDMDQxMDBFRjk5MzggLyogU3BlbGxpbmdEb3RAM3gucG5nICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gIlNw
ZWxsaW5nRG90QDN4LnBuZyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjY0OTc5
MEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudExvYWRlck1hYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDMjY0OTdCMEQ3RTI0RUMwMEJEMTBGMiAvKiBQYWdlTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VNYWMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzI5RUMyODFBRkMxMkY1MDA5RTBBODIgLyogbGli
UEFMLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFy
Y2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYlBBTC5hOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQzVFOTgwRjFBMDJDRUZBMDAyREI1NUYgLyog
Q29yZVRleHRTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29yZVRleHRTUEkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUM2NDY2MjcxQTEyQzNGOTAwOTQ2MDNDIC8qIE5TRm9udFNQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBOU0ZvbnRTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ29udHJvbGxlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODA2OCw2ICs4MDgxLDcgQEAKIAkJMUNGNkJFMTIw
RTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjZCRTEzMEU5QkI0NjcwMDI1RTFDRCAv
KiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQ0ZBRTMyMjBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZHlsaWIiOyBuYW1lID0gbGlib2JqYy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHls
aWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CisJCTFDRkRCNTRCMUFGQzE3N0UwMDk0
RUYyMSAvKiBQQUwueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gUEFMLnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxRjNDM0JFODEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFD
b250cm9scy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYUNv
bnRyb2xzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzQzNCRTkxMzVDQUYz
QzAwQjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFDb250cm9scy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxRjcy
QkYwODE4N0ZENDI3MDAwOUJDQjMgLyogVGlsZUNvbnRyb2xsZXJNZW1vcnlIYW5kbGVySU9TLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbGVDb250cm9sbGVyTWVt
b3J5SGFuZGxlcklPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDUxNCw2
ICsxNDUyOCwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTFDMjlFQzI1MUFGQzEy
RjUwMDlFMEE4MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07
CiAJCTQxN0RBNkNFMTM3MzRFMDIwMDdDNTdGQiAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwpAQCAtMTQ1MjgsNiArMTQ1NDksNyBAQAogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJ
CQkJMUMyOUVDMkQxQUZDMTMxRDAwOUUwQTgyIC8qIGxpYlBBTC5hIGluIEZyYW1ld29ya3MgKi8s
CiAJCQkJRkQyREJGMTIxMkIwNDhBMzAwRUQ5OEM2IC8qIEFjY2VsZXJhdGUuZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTMxMkIwNDhBMzAwRUQ5OEM2IC8qIEF1ZGlvVG9v
bGJveC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxNTEyQjA0OEEzMDBF
RDk4QzYgLyogQ29yZUF1ZGlvLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLApAQCAtMTQ1NzMs
NiArMTQ1OTUsNyBAQAogCQkJCUUxQkE2NzE2MTc0MkJERTAwMEMyMDI1MSAvKiBsaWJXZWJDb3Jl
VGVzdFNoaW0uZHlsaWIgKi8sCiAJCQkJNDE3REE2RDAxMzczNEUwMjAwN0M1N0ZCIC8qIGxpYldl
YkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQk5M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMg
LyogV2ViQ29yZS5mcmFtZXdvcmsgKi8sCisJCQkJMUMyOUVDMjgxQUZDMTJGNTAwOUUwQTgyIC8q
IGxpYlBBTC5hICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsKQEAgLTE0OTIxLDcgKzE0OTQ0LDYgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4
RkMwMkFBQzA3IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovLAogCQkJ
CUVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8sCiAJCQkJOTMw
NzA2MTMwOUUwQ0E4MjAwQjE3RkU0IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCiAJCQkJOTNG
MTlCMTkwODI0NUU1OTAwMUU5QUJDIC8qIEluZm8ucGxpc3QgKi8sCkBAIC0xNDk0Myw2ICsxNDk2
NSw3IEBACiAJCQkJRkFCRTcyRUMxMDU5QzFFQjAwRDk5OUREIC8qIG1hdGhtbCAqLywKIAkJCQk2
NUJGMDIxODA5NzQ4MDYzMDBDNDMxOTYgLyogcGFnZSAqLywKIAkJCQlCQ0YxQTVCQTA5NzgzMjA5
MDA2MUExMjMgLyogcGxhdGZvcm0gKi8sCisJCQkJQzJGMzFGMTkxQjAwNkI0NjAwNkE4OEZBIC8q
IFBBTCAqLywKIAkJCQk1RENGODM2OTBENTkxNTc4MDA5NTNCQzYgLyogcGx1Z2lucyAqLywKIAkJ
CQlGNTIzRDJGMzAyREU0NDNCMDE4NjM1Q0EgLyogcmVuZGVyaW5nICovLAogCQkJCTk5RTQ1QTEz
MThBMDIxNzYwMDI2RDg4RiAvKiByZXBsYXkgKi8sCkBAIC0xNTU2MCw2ICsxNTU4Myw3IEBACiAJ
CQkJMUNERDQ1RTUwQkE5Qzg0NjAwRjkwMTQ3IC8qIFdlYkNvcmUueGNjb25maWcgKi8sCiAJCQkJ
RTFCQTY2RjIxNzQyQkRDQzAwQzIwMjUxIC8qIFdlYkNvcmVUZXN0U2hpbS54Y2NvbmZpZyAqLywK
IAkJCQk0MTgxNzA3RDEzODZFREYyMDA1N0FBQTQgLyogV2ViQ29yZVRlc3RTdXBwb3J0LnhjY29u
ZmlnICovLAorCQkJCTFDRkRCNTRCMUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcgKi8s
CiAJCQkpOwogCQkJcGF0aCA9IENvbmZpZ3VyYXRpb25zOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTE4Nzc3LDggKzE4ODAxLDYgQEAKIAkJQTE0ODMyOEIxODdGNTA2ODAwREE2M0E2
IC8qIHdhayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJ
RkU2OTk4NkYxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAg
Ki8sCi0JCQkJRkU2OTk4NzAxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9u
bWVudC5oICovLAogCQkJCUExNDgzMjhDMTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVi
cy5oICovLAogCQkJCUExNDgzMjhEMTg3RjUwODcwMERBNjNBNiAvKiBXQUtBcHBLaXRTdHVicy5t
ICovLAogCQkJCUExNDgzMjhFMTg3RjUwODcwMERBNjNBNiAvKiBXQUtDbGlwVmlldy5oICovLApA
QCAtMjE3ODIsNyArMjE4MDQsNiBAQAogCQkJCUM1Rjc2NUI0MTRFMUQ0MTQwMDZDODk5QiAvKiBQ
YXN0ZWJvYXJkU3RyYXRlZ3kuaCAqLywKIAkJCQlBMTQ5Nzg3MDFBQkFGM0E1MDBDRUY3RTQgLyog
UGxhdGZvcm1Db250ZW50RmlsdGVyLmggKi8sCiAJCQkJQkM1Qzc2MjkxNDk3RkUxNDAwQkM0Nzc1
IC8qIFBsYXRmb3JtRXZlbnQuaCAqLywKLQkJCQlBNzIzRjc3QTE0ODRDQTRDMDA4QzZEQkUgLyog
UGxhdGZvcm1FeHBvcnRNYWNyb3MuaCAqLywKIAkJCQk1MTVFNUZFRjE5NTEwMTQ3MDA4NkNBNUUg
LyogUGxhdGZvcm1HYW1lcGFkLmggKi8sCiAJCQkJOTM1QzQ3NjYwOUFDNEQ0MzAwQTZBQUI0IC8q
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oICovLAogCQkJCTkzMjg3MUJGMEIyMERFQjcwMDQ5MDM1
QSAvKiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oICovLApAQCAtMjE4NjksNiArMjE4OTAsMzMg
QEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQzJDNEZEQ0Mx
QjA4MTg2NTAwODNDNjA4IC8qIGlvcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJQzJDNEZEQ0QxQjA4MTg3ODAwODNDNjA4IC8qIHdhayAqLywKKwkJCSk7
CisJCQlwYXRoID0gaW9zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzJD
NEZEQ0QxQjA4MTg3ODAwODNDNjA4IC8qIHdhayAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJRkU2OTk4NkYxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5n
UG9pbnRFbnZpcm9ubWVudC5jcHAgKi8sCisJCQkJRkU2OTk4NzAxOTIwODdFNzAwNjkzNkJEIC8q
IEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oICovLAorCQkJKTsKKwkJCXBhdGggPSB3YWs7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDMkYzMUYxOTFCMDA2QjQ2MDA2QTg4
RkEgLyogUEFMICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8sCisJCQkJQTcyM0Y3N0Ex
NDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggKi8sCisJCQkJQzJDNEZE
Q0MxQjA4MTg2NTAwODNDNjA4IC8qIGlvcyAqLywKKwkJCSk7CisJCQlwYXRoID0gUEFMOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQ0QwREJCM0UxNDIyNzRFNjAwMjgwMjYz
IC8qIGF1ZGlvICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTIzNjc5LDYgKzIzNzI3LDE3IEBACiAvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTFDMjlFQzI2MUFGQzEyRjUw
MDlFMEE4MiAvKiBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQzI0
RkFEQ0YxQjA4Njg0MzAwREEyMjA3IC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzI0
RkFERDAxQjA4Njg0RDAwREEyMjA3IC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlDMkM0RkRDRTFCMDgxOTEwMDA4M0M2MDggLyogRmxvYXRpbmdQb2ludEVudmly
b25tZW50LmNwcCBpbiBIZWFkZXJzICovLAorCQkJCTFDQTk0RUQ1MUIwOUI0OUMwMEQ4OUNDQyAv
KiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQk0MTdEQTZDQzEz
NzM0RTAyMDA3QzU3RkIgLyogSGVhZGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTI0NzE2LDcgKzI0
Nzc1LDYgQEAKIAkJCQlBOENGRjA0RjBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwNzNCQUEwQzM5OUIxRjAwMEY1OTc5IC8qIEZsb2F0
Q29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUE1MjhFODQxN0Q3RjUyRjAwQUE5NTE4
IC8qIEZsb2F0aW5nT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRkU2OTk4NzIxOTIwODdF
NzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjI3NTM1NjkwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyRTI3Q0EwMEIwRjJCMDkwMEYxN0M3QiAvKiBGbG9hdFBvaW50M0QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTZFQzQ4MEEyMTZFQTYzOEEwMEE0OERDQiAvKiBGbG9hdFBvbHlnb24uaCBp
biBIZWFkZXJzICovLApAQCAtMjYwNjIsNiArMjYxMjAsNyBAQAogCQkJCTM3RjU2N0NFMTY1MzU4
RjQwMERERTkyQiAvKiBQb3B1cE9wZW5pbmdPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTNGMTk5REUwODI0NUU1OTAwMUU5QUJDIC8qIFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NzQ2QUYyQzE0RjREREU2MDAzRTdBNzAgLyogUG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQzI5RkY5RkUxQjA4NTE3RDAwOUEwQjVDIC8qIEZsb2F0aW5nUG9pbnRFbnZp
cm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0NkFGMkUxNEY0RERFNjAwM0U3QTcwIC8q
IFBvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjMwMTRGNERERTYwMDNF
N0E3MCAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OTE5
QzI0MEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
QEAgLTI3MjUzLDYgKzI3MzEyLDIzIEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkxQzI5RUMy
NzFBRkMxMkY1MDA5RTBBODIgLyogUEFMICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0
OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFDMjlFQzJDMUFGQzEyRjYwMDlFMEE4MiAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUEFMIiAqLzsK
KwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTFDMjlFQzI2MUFGQzEyRjUwMDlFMEE4MiAvKiBIZWFk
ZXJzICovLAorCQkJCTFDMjlFQzI0MUFGQzEyRjUwMDlFMEE4MiAvKiBTb3VyY2VzICovLAorCQkJ
CTFDMjlFQzI1MUFGQzEyRjUwMDlFMEE4MiAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1
aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUg
PSBQQUw7CisJCQlwcm9kdWN0TmFtZSA9IFBBTDsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxQzI5
RUMyODFBRkMxMkY1MDA5RTBBODIgLyogbGliUEFMLmEgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJj
b20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKIAkJNDE3REE2Q0Yx
MzczNEUwMjAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydCAqLyA9IHsKIAkJCWlzYSA9IFBC
WE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA0MTdEQTZEODEzNzM0
RTQ3MDA3QzU3RkIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgIldlYkNvcmVUZXN0U3VwcG9ydCIgKi87CkBAIC0yNzI5MSw2ICsyNzM2Nyw3IEBACiAJCQli
dWlsZFJ1bGVzID0gKAogCQkJKTsKIAkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkxQ0VGQkExNDFB
RkMxNDVFMDA2OUYyQTcgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQlERDA0MUZGMTA5
RDlFMzI1MDAxMEFGMkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCSk7CiAJCQluYW1l
ID0gV2ViQ29yZTsKQEAgLTI3MzQ5LDYgKzI3NDI2LDcgQEAKIAkJCQlERDA0MUZCRTA5RDlEREJF
MDAxMEFGMkEgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTQxN0RBNkNGMTM3MzRFMDIwMDdD
NTdGQiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi8sCiAJCQkJRTFCQTY2RjMxNzQyQkRFMDAwQzIw
MjUxIC8qIFdlYkNvcmVUZXN0U2hpbSAqLywKKwkJCQkxQzI5RUMyNzFBRkMxMkY1MDA5RTBBODIg
LyogUEFMICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KQEAg
LTI3NDc0LDYgKzI3NTUyLDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkx
QzI5RUMyNDFBRkMxMkY1MDA5RTBBODIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJCTFDQTk0RUQ0MUIwOUIyQ0QwMEQ4OUNDQyAvKiBGbG9hdGluZ1BvaW50RW52
aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTQxN0RBNkNEMTM3MzRFMDIwMDdDNTdGQiAv
KiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMjgyNDIsNyArMjgzMjgsNiBAQAogCQkJCTQ5
RUNFQjZGMTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0ZXJPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUE4Q0ZGMDREMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTlBNTI4RTgzMTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGlu
Z09iamVjdHMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkU2OTk4NzExOTIwODdFNzAwNjkzNkJE
IC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1
MzU2ODBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMkUyN0M5RjBCMEYyQjA5MDBGMTdDN0IgLyogRmxvYXRQb2ludDNELmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUIyNzUzNTU5MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50Q0cuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0zMDUzMyw2ICszMDYxOCwxMSBAQAogLyogRW5kIFBCWFNvdXJjZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0
aW9uICovCisJCTFDRUZCQTE0MUFGQzE0NUUwMDY5RjJBNyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDFDMjlF
QzI3MUFGQzEyRjUwMDlFMEE4MiAvKiBQQUwgKi87CisJCQl0YXJnZXRQcm94eSA9IDFDRUZCQTEz
MUFGQzE0NUUwMDY5RjJBNyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTQx
N0RBNkQ1MTM3MzRFMEQwMDdDNTdGQiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJ
aXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdldCA9IDkzRjE5OEE1MDgyNDVFNTkw
MDFFOUFCQyAvKiBXZWJDb3JlICovOwpAQCAtMzA2MzMsNiArMzA3MjMsMjcgQEAKIAkJCX07CiAJ
CQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJMUMyOUVDMjkxQUZDMTJGNjAwOUUwQTgyIC8q
IERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29u
ZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDRkRCNTRCMUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwueGNj
b25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsK
KwkJfTsKKwkJMUMyOUVDMkExQUZDMTJGNjAwOUUwQTgyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gMUNGREI1NEIxQUZDMTc3RTAwOTRFRjIxIC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTFDMjlFQzJC
MUFGQzEyRjYwMDlFMEE4MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDRkRCNTRCMUFG
QzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQk0MTdEQTZEMTEzNzM0RTAyMDA3
QzU3RkIgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gNDE4MTcwN0QxMzg2RURGMjAwNTdBQUE0IC8q
IFdlYkNvcmVUZXN0U3VwcG9ydC54Y2NvbmZpZyAqLzsKQEAgLTMwNzQzLDYgKzMwODU0LDE2IEBA
CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OworCQkxQzI5RUMyQzFBRkMxMkY2MDA5RTBB
ODIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIg
Ki8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0
aW9ucyA9ICgKKwkJCQkxQzI5RUMyOTFBRkMxMkY2MDA5RTBBODIgLyogRGVidWcgKi8sCisJCQkJ
MUMyOUVDMkExQUZDMTJGNjAwOUUwQTgyIC8qIFJlbGVhc2UgKi8sCisJCQkJMUMyOUVDMkIxQUZD
MTJGNjAwOUUwQTgyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVj
dGlvbjsKKwkJfTsKIAkJNDE3REE2RDgxMzczNEU0NzAwN0M1N0ZCIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJDb3JlVGVzdFN1cHBvcnQiICovID0g
ewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb25maWcuaCBiL1NvdXJjZS9XZWJDb3Jl
L2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODk4NTdkN2M2ODJkOTIw
NjdmZDQ5MjJmN2RiYzQ4NzBlOTUxZGJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAg
LTEsMTM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWYgZGVmaW5lZChI
QVZFX0NPTkZJR19IKSAmJiBIQVZFX0NPTkZJR19IICYmIGRlZmluZWQoQlVJTERJTkdfV0lUSF9D
TUFLRSkKLSNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KLQotI2lmIFBMQVRGT1JNKENPQ09BKQotI2RlZmluZSBVU0VfRklMRV9MT0NL
IDEKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKSAmJiAhVVNFKFdJTkdESSkKLSNpbmNsdWRl
IDxXZWJDb3JlL1dlYkNvcmVIZWFkZXJEZXRlY3Rpb24uaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8
d3RmL0V4cG9ydE1hY3Jvcy5oPgotI2luY2x1ZGUgIlBsYXRmb3JtRXhwb3J0TWFjcm9zLmgiCi0K
LSNpbmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFjcm9zLmg+Ci0KLSNpZmRlZiBfX0FQUExFX18K
LSNkZWZpbmUgSEFWRV9GVU5DX1VTTEVFUCAxCi0jZW5kaWYgLyogX19BUFBMRV9fICovCi0KLSNp
ZiBPUyhXSU5ET1dTKQotCi0jaWZuZGVmIF9XSU4zMl9XSU5OVAotI2RlZmluZSBfV0lOMzJfV0lO
TlQgMHg2MDEKLSNlbmRpZgotCi0jaWZuZGVmIFdJTlZFUgotI2RlZmluZSBXSU5WRVIgMHgwNjAx
Ci0jZW5kaWYKLQotLy8gQ1VSTCBuZWVkcyB3aW5zb2NrLCBzbyBkb24ndCBwcmV2ZW50IGluY2x1
c2lvbiBvZiBpdAotI2lmICFVU0UoQ1VSTCkKLSNpZm5kZWYgX1dJTlNPQ0tBUElfCi0jZGVmaW5l
IF9XSU5TT0NLQVBJXyAvLyBQcmV2ZW50IGluY2x1c2lvbiBvZiB3aW5zb2NrLmggaW4gd2luZG93
cy5oCi0jZW5kaWYKLSNlbmRpZgotCi0jZW5kaWYgLyogT1MoV0lORE9XUykgKi8KLQotLy8gVXNp
bmcgQ01ha2Ugd2l0aCBVbml4IG1ha2VmaWxlcyBkb2VzIG5vdCB1c2UgcHJlZml4IGhlYWRlcnMu
Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCi0jaW5j
bHVkZSAiV2ViQ29yZVByZWZpeC5oIgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotCi0v
LyBUaGVzZSB1bmRlZnMgbWF0Y2ggdXAgd2l0aCBkZWZpbmVzIGluIFdlYkNvcmVQcmVmaXguaCBm
b3IgTWFjIE9TIFguCi0vLyBIZWxwcyB1cyBjYXRjaCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVs
ZXRlIGJ5IGFjY2lkZW50IGluIGNvZGUgYW5kIGRvZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgot
I3VuZGVmIG5ldwotI3VuZGVmIGRlbGV0ZQotI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+Ci0K
LSNpbmNsdWRlIDxjaXNvNjQ2PgotCi0jZW5kaWYKLQotI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NU
eXBlLmg+Ci0KLSNpZiBDT01QSUxFUihNU1ZDKQotI2RlZmluZSBTS0lQX1NUQVRJQ19DT05TVFJV
Q1RPUlNfT05fTVNWQyAxCi0jZWxzZQotI2RlZmluZSBTS0lQX1NUQVRJQ19DT05TVFJVQ1RPUlNf
T05fR0NDIDEKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oV0lOKQotI2lmIFBMQVRGT1JNKFdJTl9D
QUlSTykKLSN1bmRlZiBVU0VfQ0cKLSNkZWZpbmUgVVNFX0NBSVJPIDEKLSNkZWZpbmUgVVNFX0NV
UkwgMQotI2lmbmRlZiBfV0lOU09DS0FQSV8KLSNkZWZpbmUgX1dJTlNPQ0tBUElfIC8vIFByZXZl
bnQgaW5jbHVzaW9uIG9mIHdpbnNvY2suaCBpbiB3aW5kb3dzLmgKLSNlbmRpZgotI2VsaWYgIVVT
RShXSU5HREkpCi0jZGVmaW5lIFVTRV9DRyAxCi0jdW5kZWYgVVNFX0NBSVJPCi0jdW5kZWYgVVNF
X0NVUkwKLSNlbmRpZgotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCi0jZGVmaW5lIFVTRV9O
RVdfVEhFTUUgMQotI2VuZGlmCi0KLSNpZiBVU0UoQ0cpCi0jaWZuZGVmIENHRkxPQVRfREVGSU5F
RAotI2lmIChkZWZpbmVkKF9fTFA2NF9fKSAmJiBfX0xQNjRfXykgfHwgKGRlZmluZWQoX194ODZf
NjRfXykgJiYgX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpIHx8IGRlZmluZWQoX19hbWQ2
NF9fKQotdHlwZWRlZiBkb3VibGUgQ0dGbG9hdDsKLSNlbHNlCi10eXBlZGVmIGZsb2F0IENHRmxv
YXQ7Ci0jZW5kaWYKLSNkZWZpbmUgQ0dGTE9BVF9ERUZJTkVEIDEKLSNlbmRpZgotI2VuZGlmIC8q
IFVTRShDRykgKi8KLQotI2lmIFBMQVRGT1JNKElPUykKLSNkZWZpbmUgV0VCQ09SRV9OQVZJR0FU
T1JfUExBVEZPUk0gd2tHZXRQbGF0Zm9ybU5hbWVGb3JOYXZpZ2F0b3IoKTsKLSNkZWZpbmUgV0VC
Q09SRV9OQVZJR0FUT1JfVkVORE9SIHdrR2V0VmVuZG9yTmFtZUZvck5hdmlnYXRvcigpOwotI2Vu
ZGlmCi0KLS8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgsIHdoaWNoIGlzIHdoZXJlIHdlIGRlZmluZSBVU0VfQVZGT1VOREFUSU9OIG9uIHRoZSBNYWMu
Ci0vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjczMzQKLSNpZiBQ
TEFURk9STShXSU4pICYmIFVTRShDRykgJiYgSEFWRShBVkNGKQotI2RlZmluZSBVU0VfQVZGT1VO
REFUSU9OIDEKLQotI2lmIEhBVkUoQVZDRl9MRUdJQkxFX09VVFBVVCkKLSNkZWZpbmUgVVNFX0FW
Rk9VTkRBVElPTiAxCi0jZGVmaW5lIEhBVkVfQVZGT1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9H
Uk9VUCAxCi0jZGVmaW5lIEhBVkVfQVZGT1VOREFUSU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQg
MQotI2RlZmluZSBIQVZFX01FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVXT1JLIDEKLSNlbmRpZgot
Ci0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1F
eHBvcnRNYWNyb3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXhwb3J0TWFj
cm9zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNjNmYWVjYmU2NWMyMWE4OGYw
OTc4YjE2NTljNmU3ZjE1ZDg3OTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1FeHBvcnRNYWNyb3Mu
aAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICoKLSAqIFRoaXMgZmlsZSBoYW5kbGVzIHNoYXJlZCBsaWJyYXJ5
IHN5bWJvbCBleHBvcnQgZGVjb3JhdGlvbnMuIEl0IGlzIHJlY29tbWVuZGVkCi0gKiB0aGF0IGFs
bCBXZWJLaXQgcHJvamVjdHMgdXNlIHRoZXNlIGRlZmluaXRpb25zIHNvIHRoYXQgc3ltYm9sIGV4
cG9ydHMgd29yawotICogcHJvcGVybHkgb24gYWxsIHBsYXRmb3JtcyBhbmQgY29tcGlsZXJzIHRo
YXQgV2ViS2l0IGJ1aWxkcyB1bmRlci4KLSAqLwotI2lmbmRlZiBQbGF0Zm9ybUV4cG9ydE1hY3Jv
c19oCi0jZGVmaW5lIFBsYXRmb3JtRXhwb3J0TWFjcm9zX2gKLQotI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgotI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KLQotLy8gU2VlIG5vdGUgaW4g
d3RmL1BsYXRmb3JtLmggZm9yIG1vcmUgaW5mbyBvbiBFWFBPUlRfTUFDUk9TLgotI2lmIFVTRShF
WFBPUlRfTUFDUk9TKQotCi0jaWYgIVBMQVRGT1JNKFdJTikKLSNkZWZpbmUgV0VCQ09SRV9FWFBP
UlQgV1RGX0VYUE9SVAotI2RlZmluZSBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCBXVEZfRVhQ
T1JUCi0jZWxzZQotLy8gV2luZG93cyBtdXN0IHNldCB0aGlzIHBlci1wcm9qZWN0Ci0jZW5kaWYK
LQotI2Vsc2UgLy8gIVVTRShFWFBPUlRfTUFDUk9TKQotI2RlZmluZSBXRUJDT1JFX0VYUE9SVAot
I2RlZmluZSBXRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVAotCi0jZW5kaWYgLy8gVVNFKEVYUE9S
VF9NQUNST1MpCi0KLSNlbmRpZiAvLyBQbGF0Zm9ybUV4cG9ydE1hY3Jvc19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZp
cm9ubWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNmI5NTM4NGViNzA1
YTE0YWZhNWQ5MjJhMmYxNGUzYWMwZjA1MzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGlu
Z1BvaW50RW52aXJvbm1lbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmgiCi0KLSNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotCi0j
aWYgUExBVEZPUk0oSU9TKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudCYgRmxvYXRpbmdQb2ludEVudmlyb25tZW50OjpzaW5nbGV0b24oKQotewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ+IGZsb2F0aW5n
UG9pbnRFbnZpcm9ubWVudDsKLSAgICByZXR1cm4gZmxvYXRpbmdQb2ludEVudmlyb25tZW50Owot
fQotCi1GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCgp
Ci0gICAgOiBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCi17Ci19Ci0KLXZvaWQgRmxvYXRpbmdQb2lu
dEVudmlyb25tZW50OjplbmFibGVEZW5vcm1hbFN1cHBvcnQoKQotewotICAgIFJFTEVBU0VfQVNT
RVJUKGlzVUlUaHJlYWQoKSk7Ci0jaWYgZGVmaW5lZCBfQVJNX0FSQ0hfNwotICAgIGZlbnZfdCBl
bnY7IAotICAgIGZlZ2V0ZW52KCZlbnYpOyAKLSAgICBlbnYuX19mcHNjciAmPSB+MHgwMTAwMDAw
MFU7Ci0gICAgZmVzZXRlbnYoJmVudik7IAotI2VuZGlmCi0gICAgLy8gU3VwcG9ydGluZyBkZW5v
cm1hbCBtb2RlIGlzIGFscmVhZHkgdGhlIGRlZmF1bHQgb24geDg2LCB4ODZfNjQsIGFuZCBBUk02
NC4KLX0KLQotdm9pZCBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQ6OnNhdmVNYWluVGhyZWFkRW52
aXJvbm1lbnQoKQotewotICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5pdGlhbGl6ZWQpOwotICAg
IFJFTEVBU0VfQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgZmVnZXRlbnYoJm1fbWFpblRocmVh
ZEVudmlyb25tZW50KTsKLSAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwotfQotCi12b2lkIEZs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6cHJvcGFnYXRlTWFpblRocmVhZEVudmlyb25tZW50KCkK
LXsKLSAgICBSRUxFQVNFX0FTU0VSVChtX2lzSW5pdGlhbGl6ZWQpOwotICAgIFJFTEVBU0VfQVNT
RVJUKCFpc1VJVGhyZWFkKCkpOwotICAgIGZlc2V0ZW52KCZtX21haW5UaHJlYWRFbnZpcm9ubWVu
dCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0
aW5nUG9pbnRFbnZpcm9ubWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTEx
YmYwZTA3NTliMTUyN2NhYWE0ZTMzZWE3YWUzYTFhZDdkMjg0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93
YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5k
ZWYgRmxvYXRpbmdQb2ludEVudmlyb25tZW50X2gKLSNkZWZpbmUgRmxvYXRpbmdQb2ludEVudmly
b25tZW50X2gKLQotI2lmIFRBUkdFVF9PU19JUEhPTkUKLQotI2ltcG9ydCA8ZmVudi5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCB7Ci1w
dWJsaWM6Ci0gICAgRmxvYXRpbmdQb2ludEVudmlyb25tZW50KCk7Ci0KLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGVuYWJsZURlbm9ybWFsU3VwcG9ydCgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2F2ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpOwotICAgIHZvaWQgcHJvcGFnYXRlTWFpblRo
cmVhZEVudmlyb25tZW50KCk7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50JiBzaW5nbGV0b24oKTsKLQotcHJpdmF0ZToKLQotICAgIGZlbnZfdCBt
X21haW5UaHJlYWRFbnZpcm9ubWVudDsKLSAgICBib29sIG1faXNJbml0aWFsaXplZDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotdXNpbmcgV2ViQ29yZTo6RmxvYXRpbmdQb2ludEVu
dmlyb25tZW50OwotCi0jZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQotCi0jZW5kaWYgLy8gRmxv
YXRpbmdQb2ludEVudmlyb25tZW50X2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCAyZjUwZjM2
ZWQyNGFhODI3MTNlMDYxYjhkYTQ4YTVjYmEwZjQ5YzAzLi4zMzZmNDdmYWRiNWQzYTAwNmJjMmZl
MTVkZDhhYjUxZmM2MTNjYjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtNzYsNiArNzYsNyBA
QCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01v
ZHVsZXMvc3RyZWFtcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy92aWJyYXRpb24iCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvd2ViZGF0YWJhc2UiCisgICAgIiR7V0VCQ09SRV9E
SVJ9L1BBTCIKICAgICAiJHtXRUJDT1JFX0RJUn0vYWNjZXNzaWJpbGl0eSIKICAgICAiJHtXRUJD
T1JFX0RJUn0vYmluZGluZ3MvanMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzIgpkaWZm
IC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDc1OWZjMjU3Y2VlMGNlM2JjMWE2
MjZiMjBkOTNiZGRmMTM4ZTVjNGEuLjk1YWQzNGEyMWZhNDQ0NmNhMTRlMjhiOTQ5MGIzYmEwNmRm
YzcxZGMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAxNS0wNS0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0cmFjdGlvbiBMYXllciAo
UEFMKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQz
MzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50
cm9kdWNlIGEgbmV3IFdlYkNvcmUgdGFyZ2V0IGFuZCBzdGF0aWMgbGlicmFyeS4gVGhpcyBpcyBp
bnRlbmRlZCB0byBiZQorICAgICAgICB0aGUgZGVzdGluYXRpb24gdGFyZ2V0IHRvIGJ1aWxkIGNv
ZGUgdGhhdCBjdXJyZW50bHkgcmVzaWRlcyBpbgorICAgICAgICBXZWJDb3JlL3BsYXRmb3JtLiBG
aWxlcyB3aWxsIGJlIG1vdmVkIGludG8gdGhhdCB0YXJnZXQgZmlsZSBieSBmaWxlLgorICAgICAg
ICBTZXBhcmF0aW5nIHRoaXMgcGxhdGZvcm0gY29kZSBpbnRvIGl0cyBvd24gc3RhdGljIGxpYnJh
cnkgZW5mb3JjZXMKKyAgICAgICAgbGF5ZXJpbmcsIGFzIHdlbGwgYXMgZW5jb3VyYWdlcy9haWRz
IHVuaXQgdGVzdGluZyBvZiB0aGlzIHBsYXRmb3JtIGNvZGUuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBtb3ZlcyBhIHNtYWxsIGRlcGVuZGVuY3kgdHJlZSwgY29uc2lzdGluZyBvZiB0aGUgQ2xvY2sg
Y2xhc3MKKyAgICAgICAgYW5kIGl0cyBkZXBlbmRlbnRzLCBpbnRvIFBBTC4KKworICAgICAgICBO
byBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAg
ICAgKiBTb3VyY2UvQ01ha2VMaXN0cy50eHQ6IEFkZCBXZWJLaXQtc3BlY2lmaWMgY29tcGlsZXIg
ZmxhZ3MgdG8gdGhlIFBBTCB0YXJnZXQgYXMgd2VsbC4KKwogMjAxNS0wNS0xNCAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBFcnJv
ciBvdXQgd2hlbiBydWJ5IGlzIHRvbyBvbGQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253735</attachid>
            <date>2015-05-26 13:56:53 -0700</date>
            <delta_ts>2017-01-10 12:41:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20150526135641.patch</filename>
            <type>text/plain</type>
            <size>50752</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGMyYjlhMGQzYjkxZThh
ZDE3NWU5Y2NmZjY2YjEwMjZhZmU3YmZlMS4uYWU2N2Y5OGYzNjA0NmE2Y2U5NTgwZGZhMDdjNzRj
NjJhZmY3NDJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDE1LTA1LTE4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgV2ViQ29yZSB0
YXJnZXQgYW5kIHN0YXRpYyBsaWJyYXJ5LiBUaGlzIGlzIGludGVuZGVkIHRvIGJlCisgICAgICAg
IHRoZSBkZXN0aW5hdGlvbiB0YXJnZXQgdG8gYnVpbGQgY29kZSB0aGF0IGN1cnJlbnRseSByZXNp
ZGVzIGluCisgICAgICAgIFdlYkNvcmUvcGxhdGZvcm0uIEZpbGVzIHdpbGwgYmUgbW92ZWQgaW50
byB0aGF0IHRhcmdldCBmaWxlIGJ5IGZpbGUuCisgICAgICAgIFNlcGFyYXRpbmcgdGhpcyBwbGF0
Zm9ybSBjb2RlIGludG8gaXRzIG93biBzdGF0aWMgbGlicmFyeSBlbmZvcmNlcworICAgICAgICBs
YXllcmluZywgYXMgd2VsbCBhcyBlbmNvdXJhZ2VzL2FpZHMgdW5pdCB0ZXN0aW5nIG9mIHRoaXMg
cGxhdGZvcm0gY29kZS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIGEgc21hbGwgZGVwZW5k
ZW5jeSB0cmVlLCBjb25zaXN0aW5nIG9mIHRoZSBDbG9jayBjbGFzcworICAgICAgICBhbmQgaXRz
IGRlcGVuZGVudHMsIGludG8gUEFMLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBQ
cm9jZXNzIENNYWtlTGlzdHMudHh0IGluIHRoZSBQQUwgZGlyZWN0b3J5LgorICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZzogQWRkZWQuCisgICAgICAgICogUEFML0NNYWtlTGlz
dHMudHh0OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvKjogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtLworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL01lZGlhQ29udHJvbGxlci5oOiBVcGRhdGUgZm9yd2FyZCBkZWNs
YXJhdGlvbi4KKworMjAxNS0wNS0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgorCiAgICAgICAgIEFkZHJlc3NpbmcgcG9zdC1yZXZpZXcgY29tbWVudHMgb24gcjE4
NDM1MwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1
MTQ2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCBmNDA2MzM0MGY3ODRkNWNjMTEzMzJlZDk5MDY0MTcyNjBmNGY1
ZGQ3Li5jOTAwY2IwN2M2Njk3NTM5OWIxMjY3ZjU1YTkzYmE1OGJiMzViOGY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTUtMDUtMTggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0gQWJzdHJh
Y3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEludHJvZHVjZSBhIG5ldyBXZWJDb3JlIHRhcmdldCBhbmQgc3RhdGljIGxpYnJh
cnkuIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUKKyAgICAgICAgdGhlIGRlc3RpbmF0aW9uIHRhcmdl
dCB0byBidWlsZCBjb2RlIHRoYXQgY3VycmVudGx5IHJlc2lkZXMgaW4KKyAgICAgICAgV2ViQ29y
ZS9wbGF0Zm9ybS4gRmlsZXMgd2lsbCBiZSBtb3ZlZCBpbnRvIHRoYXQgdGFyZ2V0IGZpbGUgYnkg
ZmlsZS4KKyAgICAgICAgU2VwYXJhdGluZyB0aGlzIHBsYXRmb3JtIGNvZGUgaW50byBpdHMgb3du
IHN0YXRpYyBsaWJyYXJ5IGVuZm9yY2VzCisgICAgICAgIGxheWVyaW5nLCBhcyB3ZWxsIGFzIGVu
Y291cmFnZXMvYWlkcyB1bml0IHRlc3Rpbmcgb2YgdGhpcyBwbGF0Zm9ybSBjb2RlLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggbW92ZXMgYSBzbWFsbCBkZXBlbmRlbmN5IHRyZWUsIGNvbnNpc3Rpbmcg
b2YgdGhlIENsb2NrIGNsYXNzCisgICAgICAgIGFuZCBpdHMgZGVwZW5kZW50cywgaW50byBQQUwu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hh
bmdlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBQQUwgaW5jbHVkZSBkaXJlY3Rv
cnkuCisKIDIwMTUtMDUtMTggIFNrYWNoa292IEFsZXhhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNv
bT4KIAogICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEZlYXR1cmUgZmxhZyBm
b3IgYXJyb3cgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlZWFhMzJkOGVhYTRjNDRlZTUwMTE0OGJkZTQ5NzBm
NWUxNmVlOGM3Li42N2Q1NjI4MWFiY2M1YjEwMWY5MWZjODEyNGZhMjMzMWZhY2QzMGU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0NNYWtlTGlzdHMudHh0
CkBAIC0zMyw2ICszMyw3IEBAIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoYm1hbGxv
YyAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxF
Ul9GTEFHUyhXVEYgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKIFdFQktJVF9TRVRfRVhU
UkFfQ09NUElMRVJfRkxBR1MoSmF2YVNjcmlwdENvcmUgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZM
QUdTfSkKIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29yZVRlc3RTdXBwb3J0
ICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCitXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVS
X0ZMQUdTKFBBTCAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogV0VCS0lUX1NFVF9FWFRS
QV9DT01QSUxFUl9GTEFHUyhXZWJDb3JlICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAK
IGlmIChFTkFCTEVfV0VCS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiMTIwYmFmYWI3MWMx
YWJhODZlZmNjNTZjMWEyODlmN2JhMTBlMTQ3Li5iMzljMGNmZjg0ZDZmNTAzZWZiN2Y3NjA0ODM3
ZjQwMjIwZmJkOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMSwzICsxLDUgQEAKK2FkZF9z
dWJkaXJlY3RvcnkoUEFMKQorCiBzZXQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7V0VCQ09SRV9ESVJ9IgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2FpcnBsYXkiCkBA
IC0yMiw2ICsyNCw3IEBAIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtX
RUJDT1JFX0RJUn0vTW9kdWxlcy93ZWJhdWRpbyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxl
cy93ZWJkYXRhYmFzZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy93ZWJzb2NrZXRzIgor
ICAgICIke1dFQkNPUkVfRElSfS9QQUwiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2FjY2Vzc2liaWxp
dHkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzIgogICAgICIke1dFQkNPUkVfRElSfS9i
aW5kaW5ncy9nZW5lcmljIgpAQCAtMjc5Myw2ICsyNzk2LDcgQEAgc2V0KFdlYkNvcmVfUExVR19J
TlNfUkVTT1VSQ0VTCiAKIHNldChXZWJDb3JlX0xJQlJBUklFUwogICAgICR7SUNVX0xJQlJBUklF
U30KKyAgICBQQUwKICAgICBKYXZhU2NyaXB0Q29yZQogICAgIFdURgogKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnIGIvU291cmNlL1dlYkNv
cmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1Yzc0OTZkOTYwMzI3
NGRmMjlmNjRkYjc1OWY5OTkwNGExYmYwNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcKQEAgLTAsMCArMSwzNCBAQAorLy8gQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
Ky8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVkZSAiRmVhdHVyZURlZmluZXMu
eGNjb25maWciCisjaW5jbHVkZSAiVmVyc2lvbi54Y2NvbmZpZyIKKworSEVBREVSX1NFQVJDSF9Q
QVRIUyA9IEZvcndhcmRpbmdIZWFkZXJzICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2Fs
L2luY2x1ZGUiICQoaW5oZXJpdGVkKTsKK1BST0RVQ1RfTkFNRSA9IFBBTDsKK1NLSVBfSU5TVEFM
TCA9IFlFUzsKKworLy8gRklYTUU6IFVzZSBhIGhlYWRlcm1hcCBvbmNlIHdlIGNhbiBnZXQgSEVB
REVSTUFQX0lOQ0xVREVTX1BST0pFQ1RfSEVBREVSUyB0byB3b3JrLgorSEVBREVSTUFQX0lOQ0xV
REVTX1BST0pFQ1RfSEVBREVSUyA9IE5POworVVNFX0hFQURFUk1BUCA9IE5POworCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRmZmQzYTBkNDI2NTY3YzY4NmU3MzJmY2U3
ZDhmMmJmMDc5NWNiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DTWFr
ZUxpc3RzLnR4dApAQCAtMCwwICsxLDIyIEBACitzZXQoUEFMX0lOQ0xVREVfRElSRUNUT1JJRVMK
KyAgICAiJHtXRUJDT1JFX0RJUn0vUEFMIgorKQorCitzZXQoUEFMX1NPVVJDRVMKKykKKworc2V0
KFBBTF9MSUJSQVJJRVMKKyAgICBXVEYKKykKKworV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVT
X0lGX0VYSVNUUygpCisKK1dFQktJVF9XUkFQX1NPVVJDRUxJU1QoJHtQQUxfU09VUkNFU30pCitp
bmNsdWRlX2RpcmVjdG9yaWVzKCR7UEFMX0lOQ0xVREVfRElSRUNUT1JJRVN9KQorYWRkX2xpYnJh
cnkoUEFMIFNUQVRJQyAke1BBTF9TT1VSQ0VTfSkKK3RhcmdldF9saW5rX2xpYnJhcmllcyhQQUwg
JHtQQUxfTElCUkFSSUVTfSkKK3NldF90YXJnZXRfcHJvcGVydGllcyhQQUwgUFJPUEVSVElFUyBG
T0xERVIgIlBBTCIpCisKK2lmIChQQUxfT1VUUFVUX05BTUUpCisgICAgc2V0X3RhcmdldF9wcm9w
ZXJ0aWVzKFBBTCBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FICR7UEFMX09VVFBVVF9OQU1FfSkKK2Vu
ZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1FeHBvcnRNYWNy
b3MuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNjNjNmYWVjYmU2NWMyMWE4OGYwOTc4YjE2NTljNmU3ZjE1ZDg3OTUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1FeHBvcnRNYWNyb3MuaApAQCAtMCww
ICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisg
KiBUaGlzIGZpbGUgaGFuZGxlcyBzaGFyZWQgbGlicmFyeSBzeW1ib2wgZXhwb3J0IGRlY29yYXRp
b25zLiBJdCBpcyByZWNvbW1lbmRlZAorICogdGhhdCBhbGwgV2ViS2l0IHByb2plY3RzIHVzZSB0
aGVzZSBkZWZpbml0aW9ucyBzbyB0aGF0IHN5bWJvbCBleHBvcnRzIHdvcmsKKyAqIHByb3Blcmx5
IG9uIGFsbCBwbGF0Zm9ybXMgYW5kIGNvbXBpbGVycyB0aGF0IFdlYktpdCBidWlsZHMgdW5kZXIu
CisgKi8KKyNpZm5kZWYgUGxhdGZvcm1FeHBvcnRNYWNyb3NfaAorI2RlZmluZSBQbGF0Zm9ybUV4
cG9ydE1hY3Jvc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYv
RXhwb3J0TWFjcm9zLmg+CisKKy8vIFNlZSBub3RlIGluIHd0Zi9QbGF0Zm9ybS5oIGZvciBtb3Jl
IGluZm8gb24gRVhQT1JUX01BQ1JPUy4KKyNpZiBVU0UoRVhQT1JUX01BQ1JPUykKKworI2lmICFQ
TEFURk9STShXSU4pCisjZGVmaW5lIFdFQkNPUkVfRVhQT1JUIFdURl9FWFBPUlQKKyNkZWZpbmUg
V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgV1RGX0VYUE9SVAorI2Vsc2UKKy8vIFdpbmRvd3Mg
bXVzdCBzZXQgdGhpcyBwZXItcHJvamVjdAorI2VuZGlmCisKKyNlbHNlIC8vICFVU0UoRVhQT1JU
X01BQ1JPUykKKyNkZWZpbmUgV0VCQ09SRV9FWFBPUlQKKyNkZWZpbmUgV0VCQ09SRV9URVNUU1VQ
UE9SVF9FWFBPUlQKKworI2VuZGlmIC8vIFVTRShFWFBPUlRfTUFDUk9TKQorCisjZW5kaWYgLy8g
UGxhdGZvcm1FeHBvcnRNYWNyb3NfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2Nv
bmZpZy5oIGIvU291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4OTg1N2Q3
YzY4MmQ5MjA2N2ZkNDkyMmY3ZGJjNDg3MGU5NTFkYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvY29uZmlnLmgKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICoKKyAqLworCisjaWYgZGVmaW5lZChIQVZFX0NPTkZJR19IKSAmJiBIQVZFX0NPTkZJR19I
ICYmIGRlZmluZWQoQlVJTERJTkdfV0lUSF9DTUFLRSkKKyNpbmNsdWRlICJjbWFrZWNvbmZpZy5o
IgorI2VuZGlmCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIFBMQVRGT1JNKENP
Q09BKQorI2RlZmluZSBVU0VfRklMRV9MT0NLIDEKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oV0lO
KSAmJiAhVVNFKFdJTkdESSkKKyNpbmNsdWRlIDxXZWJDb3JlL1dlYkNvcmVIZWFkZXJEZXRlY3Rp
b24uaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgorI2luY2x1ZGUg
IlBsYXRmb3JtRXhwb3J0TWFjcm9zLmgiCisKKyNpbmNsdWRlIDxydW50aW1lL0pTRXhwb3J0TWFj
cm9zLmg+CisKKyNpZmRlZiBfX0FQUExFX18KKyNkZWZpbmUgSEFWRV9GVU5DX1VTTEVFUCAxCisj
ZW5kaWYgLyogX19BUFBMRV9fICovCisKKyNpZiBPUyhXSU5ET1dTKQorCisjaWZuZGVmIF9XSU4z
Ml9XSU5OVAorI2RlZmluZSBfV0lOMzJfV0lOTlQgMHg2MDEKKyNlbmRpZgorCisjaWZuZGVmIFdJ
TlZFUgorI2RlZmluZSBXSU5WRVIgMHgwNjAxCisjZW5kaWYKKworLy8gQ1VSTCBuZWVkcyB3aW5z
b2NrLCBzbyBkb24ndCBwcmV2ZW50IGluY2x1c2lvbiBvZiBpdAorI2lmICFVU0UoQ1VSTCkKKyNp
Zm5kZWYgX1dJTlNPQ0tBUElfCisjZGVmaW5lIF9XSU5TT0NLQVBJXyAvLyBQcmV2ZW50IGluY2x1
c2lvbiBvZiB3aW5zb2NrLmggaW4gd2luZG93cy5oCisjZW5kaWYKKyNlbmRpZgorCisjZW5kaWYg
LyogT1MoV0lORE9XUykgKi8KKworLy8gVXNpbmcgQ01ha2Ugd2l0aCBVbml4IG1ha2VmaWxlcyBk
b2VzIG5vdCB1c2UgcHJlZml4IGhlYWRlcnMuCisjaWYgUExBVEZPUk0oTUFDKSAmJiBkZWZpbmVk
KEJVSUxESU5HX1dJVEhfQ01BS0UpCisjaW5jbHVkZSAiV2ViQ29yZVByZWZpeC5oIgorI2VuZGlm
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisvLyBUaGVzZSB1bmRlZnMgbWF0Y2ggdXAgd2l0aCBk
ZWZpbmVzIGluIFdlYkNvcmVQcmVmaXguaCBmb3IgTWFjIE9TIFguCisvLyBIZWxwcyB1cyBjYXRj
aCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5IGFjY2lkZW50IGluIGNvZGUgYW5kIGRv
ZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgorI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQorI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKKyNpbmNsdWRlIDxjaXNvNjQ2PgorCisjZW5kaWYK
KworI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CisKKyNpZiBDT01QSUxFUihNU1ZDKQor
I2RlZmluZSBTS0lQX1NUQVRJQ19DT05TVFJVQ1RPUlNfT05fTVNWQyAxCisjZWxzZQorI2RlZmlu
ZSBTS0lQX1NUQVRJQ19DT05TVFJVQ1RPUlNfT05fR0NDIDEKKyNlbmRpZgorCisjaWYgUExBVEZP
Uk0oV0lOKQorI2lmIFBMQVRGT1JNKFdJTl9DQUlSTykKKyN1bmRlZiBVU0VfQ0cKKyNkZWZpbmUg
VVNFX0NBSVJPIDEKKyNkZWZpbmUgVVNFX0NVUkwgMQorI2lmbmRlZiBfV0lOU09DS0FQSV8KKyNk
ZWZpbmUgX1dJTlNPQ0tBUElfIC8vIFByZXZlbnQgaW5jbHVzaW9uIG9mIHdpbnNvY2suaCBpbiB3
aW5kb3dzLmgKKyNlbmRpZgorI2VsaWYgIVVTRShXSU5HREkpCisjZGVmaW5lIFVTRV9DRyAxCisj
dW5kZWYgVVNFX0NBSVJPCisjdW5kZWYgVVNFX0NVUkwKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBQ
TEFURk9STShNQUMpCisjZGVmaW5lIFVTRV9ORVdfVEhFTUUgMQorI2VuZGlmCisKKyNpZiBVU0Uo
Q0cpCisjaWZuZGVmIENHRkxPQVRfREVGSU5FRAorI2lmIChkZWZpbmVkKF9fTFA2NF9fKSAmJiBf
X0xQNjRfXykgfHwgKGRlZmluZWQoX194ODZfNjRfXykgJiYgX194ODZfNjRfXykgfHwgZGVmaW5l
ZChfTV9YNjQpIHx8IGRlZmluZWQoX19hbWQ2NF9fKQordHlwZWRlZiBkb3VibGUgQ0dGbG9hdDsK
KyNlbHNlCit0eXBlZGVmIGZsb2F0IENHRmxvYXQ7CisjZW5kaWYKKyNkZWZpbmUgQ0dGTE9BVF9E
RUZJTkVEIDEKKyNlbmRpZgorI2VuZGlmIC8qIFVTRShDRykgKi8KKworI2lmIFBMQVRGT1JNKElP
UykKKyNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfUExBVEZPUk0gd2tHZXRQbGF0Zm9ybU5hbWVG
b3JOYXZpZ2F0b3IoKTsKKyNkZWZpbmUgV0VCQ09SRV9OQVZJR0FUT1JfVkVORE9SIHdrR2V0VmVu
ZG9yTmFtZUZvck5hdmlnYXRvcigpOworI2VuZGlmCisKKy8vIEZJWE1FOiBNb3ZlIHRoaXMgdG8g
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgsIHdoaWNoIGlzIHdoZXJlIHdlIGRlZmluZSBV
U0VfQVZGT1VOREFUSU9OIG9uIHRoZSBNYWMuCisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjczMzQKKyNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRykgJiYgSEFW
RShBVkNGKQorI2RlZmluZSBVU0VfQVZGT1VOREFUSU9OIDEKKworI2lmIEhBVkUoQVZDRl9MRUdJ
QkxFX09VVFBVVCkKKyNkZWZpbmUgVVNFX0FWRk9VTkRBVElPTiAxCisjZGVmaW5lIEhBVkVfQVZG
T1VOREFUSU9OX01FRElBX1NFTEVDVElPTl9HUk9VUCAxCisjZGVmaW5lIEhBVkVfQVZGT1VOREFU
SU9OX0xFR0lCTEVfT1VUUFVUX1NVUFBPUlQgMQorI2RlZmluZSBIQVZFX01FRElBX0FDQ0VTU0lC
SUxJVFlfRlJBTUVXT1JLIDEKKyNlbmRpZgorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDE2Yjk1Mzg0ZWI3MDVhMTRhZmE1ZDkyMmEyZjE0ZTNhYzBmMDUzNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9u
bWVudC5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmxvYXRpbmdQ
b2ludEVudmlyb25tZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorCisjaWYgUExBVEZPUk0oSU9TKQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCYgRmxvYXRpbmdQb2ludEVu
dmlyb25tZW50OjpzaW5nbGV0b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxGbG9h
dGluZ1BvaW50RW52aXJvbm1lbnQ+IGZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDsKKyAgICByZXR1
cm4gZmxvYXRpbmdQb2ludEVudmlyb25tZW50OworfQorCitGbG9hdGluZ1BvaW50RW52aXJvbm1l
bnQ6OkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCgpCisgICAgOiBtX2lzSW5pdGlhbGl6ZWQoZmFs
c2UpCit7Cit9CisKK3ZvaWQgRmxvYXRpbmdQb2ludEVudmlyb25tZW50OjplbmFibGVEZW5vcm1h
bFN1cHBvcnQoKQoreworICAgIFJFTEVBU0VfQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisjaWYgZGVm
aW5lZCBfQVJNX0FSQ0hfNworICAgIGZlbnZfdCBlbnY7IAorICAgIGZlZ2V0ZW52KCZlbnYpOyAK
KyAgICBlbnYuX19mcHNjciAmPSB+MHgwMTAwMDAwMFU7CisgICAgZmVzZXRlbnYoJmVudik7IAor
I2VuZGlmCisgICAgLy8gU3VwcG9ydGluZyBkZW5vcm1hbCBtb2RlIGlzIGFscmVhZHkgdGhlIGRl
ZmF1bHQgb24geDg2LCB4ODZfNjQsIGFuZCBBUk02NC4KK30KKwordm9pZCBGbG9hdGluZ1BvaW50
RW52aXJvbm1lbnQ6OnNhdmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKQoreworICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2lzSW5pdGlhbGl6ZWQpOworICAgIFJFTEVBU0VfQVNTRVJUKGlzVUlUaHJlYWQo
KSk7CisgICAgZmVnZXRlbnYoJm1fbWFpblRocmVhZEVudmlyb25tZW50KTsKKyAgICBtX2lzSW5p
dGlhbGl6ZWQgPSB0cnVlOworfQorCit2b2lkIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6cHJv
cGFnYXRlTWFpblRocmVhZEVudmlyb25tZW50KCkKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2lz
SW5pdGlhbGl6ZWQpOworICAgIFJFTEVBU0VfQVNTRVJUKCFpc1VJVGhyZWFkKCkpOworICAgIGZl
c2V0ZW52KCZtX21haW5UaHJlYWRFbnZpcm9ubWVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIGIvU291cmNlL1dlYkNv
cmUvUEFML2lvcy93YWsvRmxvYXRpbmdQb2ludEVudmlyb25tZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUx
MWJmMGUwNzU5YjE1MjdjYWFhNGUzM2VhN2FlM2ExYWQ3ZDI4NAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnRfaAorI2RlZmluZSBGbG9hdGlu
Z1BvaW50RW52aXJvbm1lbnRfaAorCisjaWYgVEFSR0VUX09TX0lQSE9ORQorCisjaW1wb3J0IDxm
ZW52Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRpbmdQb2ludEVudmly
b25tZW50IHsKK3B1YmxpYzoKKyAgICBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQoKTsKKworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5hYmxlRGVub3JtYWxTdXBwb3J0KCk7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzYXZlTWFpblRocmVhZEVudmlyb25tZW50KCk7CisgICAgdm9pZCBwcm9w
YWdhdGVNYWluVGhyZWFkRW52aXJvbm1lbnQoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQmIHNpbmdsZXRvbigpOworCitwcml2YXRlOgorCisg
ICAgZmVudl90IG1fbWFpblRocmVhZEVudmlyb25tZW50OworICAgIGJvb2wgbV9pc0luaXRpYWxp
emVkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCit1c2luZyBXZWJDb3JlOjpGbG9h
dGluZ1BvaW50RW52aXJvbm1lbnQ7CisKKyNlbmRpZiAvLyBUQVJHRVRfT1NfSVBIT05FCisKKyNl
bmRpZiAvLyBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnRfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjA4NWEwNzA3MmQ2MDk4
ZDE3OTQ0MDNlNTBmMWU0MzcwYWQ2YThkMS4uMDc0YWI2Y2M1MjI0NDdmMGY5YWUwYjA3NDJiNmQw
ZmJmMWIxM2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtOTQxLDYgKzk0MSw3IEBACiAJCTFDMjQxN0JBMTk5MkMwNDEwMEVG
OTkzOCAvKiBTcGVsbGluZ0RvdEAzeC5wbmcgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjQxN0I5MTk5MkMwNDEwMEVGOTkzOCAvKiBTcGVsbGluZ0Rv
dEAzeC5wbmcgKi87IH07CiAJCTFDMjY0OTdBMEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExv
YWRlck1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzI2NDk3OTBEN0UyNDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwICovOyB9
OwogCQkxQzI2NDk3QzBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI2NDk3QjBEN0UyNEVDMDBCRDEw
RjIgLyogUGFnZU1hYy5jcHAgKi87IH07CisJCTFDMjlFQzJEMUFGQzEzMUQwMDlFMEE4MiAvKiBs
aWJQQUwuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDMjlFQzI4MUFGQzEyRjUwMDlFMEE4MiAvKiBsaWJQQUwuYSAqLzsgfTsKIAkJMUM2NDY2MjUx
QTEyQzM4RTAwOTQ2MDNDIC8qIENvcmVUZXh0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzVFOTgwRjFBMDJDRUZBMDAyREI1NUYgLyogQ29yZVRl
eHRTUEkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxQzY0NjYyODFBMTJDNDIwMDA5NDYwM0MgLyogTlNGb250U1BJLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzY0NjYyNzFBMTJDM0Y5MDA5NDYwM0Mg
LyogTlNGb250U1BJLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUM4MUI5NUEwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDODFCOTU2
MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk0OCw2ICs5NDksOCBAQAogCQkx
QzgxQjk1QzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1ODBFOTczMzA4MDAyNjZF
MDcgLyogSW5zcGVjdG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMUNBMTlFMDUwREMyNTU5NTAwNjVBOTk0IC8qIEV2ZW50TG9vcE1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQTE5
RTAzMERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BNYWMubW0gKi87IH07CiAJCTFDQTE5RTE2
MERDMjU1Q0EwMDY1QTk5NCAvKiBFdmVudExvb3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQTE5RTE1MERDMjU1Q0EwMDY1QTk5NCAvKiBFdmVudExv
b3AuaCAqLzsgfTsKKwkJMUNBOTRFRDQxQjA5QjJDRDAwRDg5Q0NDIC8qIEZsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTY5OTg2RjE5MjA4N0U3MDA2OTM2QkQgLyogRmxvYXRpbmdQb2ludEVudmlyb25tZW50
LmNwcCAqLzsgfTsKKwkJMUNBOTRFRDUxQjA5QjQ5QzAwRDg5Q0NDIC8qIEZsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU2OTk4NzAxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDQUYz
NDgxMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAv
KiBXZWJTY3JpcHRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxQ0FGMzQ4MjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0
N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAqLzsgfTsKIAkJMUNBRjM0
ODMwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUYzNDgwMEE2QzQwNTIwMEFC
RTA2RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU2MjcsNiArNTYzMCwxMCBAQAogCQlDMEYyQTQ0
MTEzODY5QUFCMDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHBy
ZXByb2Nlc3Nvci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDMTA1REE2MjBGM0FBNjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJ
Q1UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEw
NURBNjEwRjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcCAqLzsg
fTsKIAkJQzEwNURBNjQwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MzBG
M0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCAqLzsgfTsKKwkJQzI0RkFE
Q0YxQjA4Njg0MzAwREEyMjA3IC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyNEZB
REQwMUIwODY4NEQwMERBMjIwNyAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyM0Y3N0ExNDg0Q0E0QzAwOEM2
REJFIC8qIFBsYXRmb3JtRXhwb3J0TWFjcm9zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzI5RkY5RkUxQjA4NTE3RDAwOUEwQjVDIC8qIEZsb2F0
aW5nUG9pbnRFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU2OTk4NzAxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZp
cm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUMyQzRGRENFMUIwODE5MTAwMDgzQzYwOCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQu
Y3BwIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OTk4
NkYxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAgKi87IH07
CiAJCUMzMzBBMjIzMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzMzBBMjIxMTNFQzE5NkIwMDAw
QjQ1QiAvKiBDb2xvckNob29zZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDMzNFRTVDNDE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJs
ZVdpdGhLZXlJbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzMzRUU1QzIxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRo
S2V5SW5wdXRUeXBlLmNwcCAqLzsgfTsKIAkJQzMzRUU1QzUxNEZCNDk2MTAwMDIwOTVBIC8qIEJh
c2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMzNFRTVDMzE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNr
YWJsZVdpdGhLZXlJbnB1dFR5cGUuaCAqLzsgfTsKQEAgLTY3NzAsOCArNjc3Nyw2IEBACiAJCUZF
NDU2RjE4MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU0NTZGMTYxNjc3RDc0RTAwNUVE
REY5IC8qIERhdGFiYXNlTWFuYWdlci5jcHAgKi87IH07CiAJCUZFNDU2RjE5MTY3N0Q3NEUwMDVF
RERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFn
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RTY5MzhCNjEwNDVENjdFMDA4RUFCQjYgLyogRXZlbnRIYW5kbGVySU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OTM4QjUxMDQ1RDY3RTAwOEVB
QkI2IC8qIEV2ZW50SGFuZGxlcklPUy5tbSAqLzsgfTsKLQkJRkU2OTk4NzExOTIwODdFNzAwNjkz
NkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTY5OTg2RjE5MjA4N0U3MDA2OTM2QkQgLyogRmxv
YXRpbmdQb2ludEVudmlyb25tZW50LmNwcCAqLzsgfTsKLQkJRkU2OTk4NzIxOTIwODdFNzAwNjkz
NkJEIC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2OTk4NzAxOTIwODdFNzAwNjkzNkJEIC8qIEZsb2F0
aW5nUG9pbnRFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUZFNkZENDhEMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNkZE
NDhCMEY2NzZFOTMwMDA5Mjg3MyAvKiBKU0Nvb3JkaW5hdGVzLmNwcCAqLzsgfTsKIAkJRkU2RkQ0
OEUwRjY3NkU5MzAwMDkyODczIC8qIEpTQ29vcmRpbmF0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNkZENDhDMEY2NzZFOTMwMDA5Mjg3MyAvKiBK
U0Nvb3JkaW5hdGVzLmggKi87IH07CiAJCUZFODBEN0FCMEU5QzFFRDIwMDBENkY3NSAvKiBKU0dl
b2xvY2F0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFODBEN0E2MEU5QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uQ3VzdG9t
LmNwcCAqLzsgfTsKQEAgLTY4MTAsNiArNjgxNSwxMyBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJ
CTFDRUZCQTEzMUFGQzE0NUUwMDY5RjJBNyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7
CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAw
ODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5
cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxQzI5RUMyNzFBRkMxMkY1MDA5RTBB
ODI7CisJCQlyZW1vdGVJbmZvID0gUEFMOworCQl9OwogCQk0MTdEQTZENDEzNzM0RTBEMDA3QzU3
RkIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVy
SXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3
IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtODA0NSw2ICs4MDU3LDcgQEAKIAkJMUMyNDE3Qjkx
OTkyQzA0MTAwRUY5OTM4IC8qIFNwZWxsaW5nRG90QDN4LnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJTcGVsbGlu
Z0RvdEAzeC5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzI2NDk3OTBEN0Uy
NDhBMDBCRDEwRjIgLyogRG9jdW1lbnRMb2FkZXJNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRG9jdW1lbnRMb2FkZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQzI2NDk3QjBEN0UyNEVDMDBCRDEwRjIgLyogUGFnZU1hYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlTWFjLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMyOUVDMjgxQUZDMTJGNTAwOUUwQTgyIC8qIGxpYlBBTC5h
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZl
LmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJQQUwuYTsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUM1RTk4MEYxQTAyQ0VGQTAwMkRCNTVGIC8qIENvcmVU
ZXh0U1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcmVUZXh0U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDNjQ2NjI3MUExMkMzRjkwMDk0NjAzQyAvKiBOU0ZvbnRTUEkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTlNGb250U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
ODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNvbnRyb2xsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgwNjgsNiArODA4MSw3IEBACiAJCTFDRjZCRTEyMEU5QkI0
NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0Y2QkUxMzBFOUJCNDY3MDAyNUUxQ0QgLyogT2Jq
Q05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGli
IjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJvYmpjLmR5bGliOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQkxQ0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEg
LyogUEFMLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFBBTC54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUYzQzNCRTgxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJv
bHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9s
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGM0MzQkU5MTM1Q0FGM0MwMEI4
QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1lZGlhQ29udHJvbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUY3MkJGMDgx
ODdGRDQyNzAwMDlCQ0IzIC8qIFRpbGVDb250cm9sbGVyTWVtb3J5SGFuZGxlcklPUy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaWxlQ29udHJvbGxlck1lbW9yeUhh
bmRsZXJJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1MTQsNiArMTQ1
MjgsMTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzI5RUMyNTFBRkMxMkY1MDA5
RTBBODIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJ
KTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQk0
MTdEQTZDRTEzNzM0RTAyMDA3QzU3RkIgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
QEAgLTE0NTI4LDYgKzE0NTQ5LDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNl
OwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTFD
MjlFQzJEMUFGQzEzMUQwMDlFMEE4MiAvKiBsaWJQQUwuYSBpbiBGcmFtZXdvcmtzICovLAogCQkJ
CUZEMkRCRjEyMTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVyYXRlLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovLAogCQkJCUZEMkRCRjEzMTJCMDQ4QTMwMEVEOThDNiAvKiBBdWRpb1Rvb2xib3gu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTUxMkIwNDhBMzAwRUQ5OEM2
IC8qIENvcmVBdWRpby5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKQEAgLTE0NTczLDYgKzE0
NTk1LDcgQEAKIAkJCQlFMUJBNjcxNjE3NDJCREUwMDBDMjAyNTEgLyogbGliV2ViQ29yZVRlc3RT
aGltLmR5bGliICovLAogCQkJCTQxN0RBNkQwMTM3MzRFMDIwMDdDNTdGQiAvKiBsaWJXZWJDb3Jl
VGVzdFN1cHBvcnQuZHlsaWIgKi8sCiAJCQkJOTNGMTlCMUEwODI0NUU1QTAwMUU5QUJDIC8qIFdl
YkNvcmUuZnJhbWV3b3JrICovLAorCQkJCTFDMjlFQzI4MUFGQzEyRjUwMDlFMEE4MiAvKiBsaWJQ
QUwuYSAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7CkBAIC0xNDkyMSw3ICsxNDk0NCw2IEBACiAJCTA4NjdENjkxRkU4NDAyOEZDMDJB
QUMwNyAvKiBXZWJLaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCTY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLywKIAkJCQlFREVD
OTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovLAogCQkJCTkzMDcwNjEz
MDlFMENBODIwMEIxN0ZFNCAvKiBEZXJpdmVkU291cmNlcy5tYWtlICovLAogCQkJCTkzRjE5QjE5
MDgyNDVFNTkwMDFFOUFCQyAvKiBJbmZvLnBsaXN0ICovLApAQCAtMTQ5NDMsNiArMTQ5NjUsNyBA
QAogCQkJCUZBQkU3MkVDMTA1OUMxRUIwMEQ5OTlERCAvKiBtYXRobWwgKi8sCiAJCQkJNjVCRjAy
MTgwOTc0ODA2MzAwQzQzMTk2IC8qIHBhZ2UgKi8sCiAJCQkJQkNGMUE1QkEwOTc4MzIwOTAwNjFB
MTIzIC8qIHBsYXRmb3JtICovLAorCQkJCUMyRjMxRjE5MUIwMDZCNDYwMDZBODhGQSAvKiBQQUwg
Ki8sCiAJCQkJNURDRjgzNjkwRDU5MTU3ODAwOTUzQkM2IC8qIHBsdWdpbnMgKi8sCiAJCQkJRjUy
M0QyRjMwMkRFNDQzQjAxODYzNUNBIC8qIHJlbmRlcmluZyAqLywKIAkJCQk5OUU0NUExMzE4QTAy
MTc2MDAyNkQ4OEYgLyogcmVwbGF5ICovLApAQCAtMTU1NjAsNiArMTU1ODMsNyBAQAogCQkJCTFD
REQ0NUU1MEJBOUM4NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29uZmlnICovLAogCQkJCUUxQkE2
NkYyMTc0MkJEQ0MwMEMyMDI1MSAvKiBXZWJDb3JlVGVzdFNoaW0ueGNjb25maWcgKi8sCiAJCQkJ
NDE4MTcwN0QxMzg2RURGMjAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0U3VwcG9ydC54Y2NvbmZpZyAq
LywKKwkJCQkxQ0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEgLyogUEFMLnhjY29uZmlnICovLAogCQkJ
KTsKIAkJCXBhdGggPSBDb25maWd1cmF0aW9uczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0xODc3Nyw4ICsxODgwMSw2IEBACiAJCUExNDgzMjhCMTg3RjUwNjgwMERBNjNBNiAvKiB3
YWsgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUZFNjk5
ODZGMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwICovLAot
CQkJCUZFNjk5ODcwMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQu
aCAqLywKIAkJCQlBMTQ4MzI4QzE4N0Y1MDg3MDBEQTYzQTYgLyogV0FLQXBwS2l0U3R1YnMuaCAq
LywKIAkJCQlBMTQ4MzI4RDE4N0Y1MDg3MDBEQTYzQTYgLyogV0FLQXBwS2l0U3R1YnMubSAqLywK
IAkJCQlBMTQ4MzI4RTE4N0Y1MDg3MDBEQTYzQTYgLyogV0FLQ2xpcFZpZXcuaCAqLywKQEAgLTIx
NzgyLDcgKzIxODA0LDYgQEAKIAkJCQlDNUY3NjVCNDE0RTFENDE0MDA2Qzg5OUIgLyogUGFzdGVi
b2FyZFN0cmF0ZWd5LmggKi8sCiAJCQkJQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRm
b3JtQ29udGVudEZpbHRlci5oICovLAogCQkJCUJDNUM3NjI5MTQ5N0ZFMTQwMEJDNDc3NSAvKiBQ
bGF0Zm9ybUV2ZW50LmggKi8sCi0JCQkJQTcyM0Y3N0ExNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRm
b3JtRXhwb3J0TWFjcm9zLmggKi8sCiAJCQkJNTE1RTVGRUYxOTUxMDE0NzAwODZDQTVFIC8qIFBs
YXRmb3JtR2FtZXBhZC5oICovLAogCQkJCTkzNUM0NzY2MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQuaCAqLywKIAkJCQk5MzI4NzFCRjBCMjBERUI3MDA0OTAzNUEgLyog
UGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCAqLywKQEAgLTIxODY5LDYgKzIxODkwLDMzIEBACiAJ
CQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCUMyQzRGRENDMUIwODE4
NjUwMDgzQzYwOCAvKiBpb3MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCUMyQzRGRENEMUIwODE4NzgwMDgzQzYwOCAvKiB3YWsgKi8sCisJCQkpOworCQkJ
cGF0aCA9IGlvczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUMyQzRGRENE
MUIwODE4NzgwMDgzQzYwOCAvKiB3YWsgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUZFNjk5ODZGMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9hdGluZ1BvaW50
RW52aXJvbm1lbnQuY3BwICovLAorCQkJCUZFNjk5ODcwMTkyMDg3RTcwMDY5MzZCRCAvKiBGbG9h
dGluZ1BvaW50RW52aXJvbm1lbnQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gd2FrOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzJGMzFGMTkxQjAwNkI0NjAwNkE4OEZBIC8q
IFBBTCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNjVD
OTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovLAorCQkJCUE3MjNGNzdBMTQ4NENB
NEMwMDhDNkRCRSAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oICovLAorCQkJCUMyQzRGRENDMUIw
ODE4NjUwMDgzQzYwOCAvKiBpb3MgKi8sCisJCQkpOworCQkJcGF0aCA9IFBBTDsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2MyAvKiBh
dWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMzY3
OSw2ICsyMzcyNywxNyBAQAogLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzI5RUMyNjFBRkMxMkY1MDA5RTBB
ODIgLyogSGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUMyNEZBRENG
MUIwODY4NDMwMERBMjIwNyAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyNEZBREQw
MUIwODY4NEQwMERBMjIwNyAvKiBQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQzJDNEZEQ0UxQjA4MTkxMDAwODNDNjA4IC8qIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dC5jcHAgaW4gSGVhZGVycyAqLywKKwkJCQkxQ0E5NEVENTFCMDlCNDlDMDBEODlDQ0MgLyogRmxv
YXRpbmdQb2ludEVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJNDE3REE2Q0MxMzczNEUw
MjAwN0M1N0ZCIC8qIEhlYWRlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFz
ZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0yNDcxNiw3ICsyNDc3NSw2
IEBACiAJCQkJQThDRkYwNEYwQTE1NEYwOTAwMEE0MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMDczQkFBMEMzOTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZl
cnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTlBNTI4RTg0MTdEN0Y1MkYwMEFBOTUxOCAvKiBG
bG9hdGluZ09iamVjdHMuaCBpbiBIZWFkZXJzICovLAotCQkJCUZFNjk5ODcyMTkyMDg3RTcwMDY5
MzZCRCAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
NzUzNTY5MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMkUyN0NBMDBCMEYyQjA5MDBGMTdDN0IgLyogRmxvYXRQb2ludDNELmggaW4gSGVhZGVycyAq
LywKIAkJCQk2RUM0ODBBMjE2RUE2MzhBMDBBNDhEQ0IgLyogRmxvYXRQb2x5Z29uLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI2MDYyLDYgKzI2MTIwLDcgQEAKIAkJCQkzN0Y1NjdDRTE2NTM1OEY0MDBE
REU5MkIgLyogUG9wdXBPcGVuaW5nT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5
OURFMDgyNDVFNTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc0
NkFGMkMxNEY0RERFNjAwM0U3QTcwIC8qIFBvc2l0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
LAorCQkJCUMyOUZGOUZFMUIwODUxN0QwMDlBMEI1QyAvKiBGbG9hdGluZ1BvaW50RW52aXJvbm1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NDZBRjJFMTRGNERERTYwMDNFN0E3MCAvKiBQb3Np
dGlvbkVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzQ2QUYzMDE0RjREREU2MDAzRTdBNzAg
LyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzkxOUMyNDBC
N0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
NzI1Myw2ICsyNzMxMiwyMyBAQAogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMUMyOUVDMjcxQUZD
MTJGNTAwOUUwQTgyIC8qIFBBTCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxQzI5RUMyQzFBRkMxMkY2MDA5RTBBODIgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIgKi87CisJCQli
dWlsZFBoYXNlcyA9ICgKKwkJCQkxQzI5RUMyNjFBRkMxMkY1MDA5RTBBODIgLyogSGVhZGVycyAq
LywKKwkJCQkxQzI5RUMyNDFBRkMxMkY1MDA5RTBBODIgLyogU291cmNlcyAqLywKKwkJCQkxQzI5
RUMyNTFBRkMxMkY1MDA5RTBBODIgLyogRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1
bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gUEFM
OworCQkJcHJvZHVjdE5hbWUgPSBQQUw7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMUMyOUVDMjgx
QUZDMTJGNTAwOUUwQTgyIC8qIGxpYlBBTC5hICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFw
cGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyI7CisJCX07CiAJCTQxN0RBNkNGMTM3MzRF
MDIwMDdDNTdGQiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRp
dmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNDE3REE2RDgxMzczNEU0NzAw
N0M1N0ZCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJX
ZWJDb3JlVGVzdFN1cHBvcnQiICovOwpAQCAtMjcyOTEsNiArMjczNjcsNyBAQAogCQkJYnVpbGRS
dWxlcyA9ICgKIAkJCSk7CiAJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMUNFRkJBMTQxQUZDMTQ1
RTAwNjlGMkE3IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJREQwNDFGRjEwOUQ5RTMy
NTAwMTBBRjJBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFdl
YkNvcmU7CkBAIC0yNzM0OSw2ICsyNzQyNiw3IEBACiAJCQkJREQwNDFGQkUwOUQ5RERCRTAwMTBB
RjJBIC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk0MTdEQTZDRjEzNzM0RTAyMDA3QzU3RkIg
LyogV2ViQ29yZVRlc3RTdXBwb3J0ICovLAogCQkJCUUxQkE2NkYzMTc0MkJERTAwMEMyMDI1MSAv
KiBXZWJDb3JlVGVzdFNoaW0gKi8sCisJCQkJMUMyOUVDMjcxQUZDMTJGNTAwOUUwQTgyIC8qIFBB
TCAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCkBAIC0yNzQ3
NCw2ICsyNzU1MiwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMUMyOUVD
MjQxQUZDMTJGNTAwOUUwQTgyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCQkxQ0E5NEVENDFCMDlCMkNEMDBEODlDQ0MgLyogRmxvYXRpbmdQb2ludEVudmlyb25t
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQk0MTdEQTZDRDEzNzM0RTAyMDA3QzU3RkIgLyogU291
cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTI4MjQyLDcgKzI4MzI4LDYgQEAKIAkJCQk0OUVDRUI2
RjE0OTk3OTBEMDBDREQzQTQgLyogRmlsdGVyT3BlcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOENGRjA0RDBBMTU0RjA5MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5QTUyOEU4MzE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmpl
Y3RzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUZFNjk5ODcxMTkyMDg3RTcwMDY5MzZCRCAvKiBG
bG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1Njgw
QjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJF
MjdDOUYwQjBGMkIwOTAwRjE3QzdCIC8qIEZsb2F0UG9pbnQzRC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCMjc1MzU1OTBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludENHLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzA1MzMsNiArMzA2MTgsMTEgQEAKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAq
LworCQkxQ0VGQkExNDFBRkMxNDVFMDA2OUYyQTcgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9
IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAxQzI5RUMyNzFB
RkMxMkY1MDA5RTBBODIgLyogUEFMICovOworCQkJdGFyZ2V0UHJveHkgPSAxQ0VGQkExMzFBRkMx
NDVFMDA2OUYyQTcgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQk0MTdEQTZE
NTEzNzM0RTBEMDA3QzU3RkIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9
IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSA5M0YxOThBNTA4MjQ1RTU5MDAxRTlB
QkMgLyogV2ViQ29yZSAqLzsKQEAgLTMwNjMzLDYgKzMwNzIzLDI3IEBACiAJCQl9OwogCQkJbmFt
ZSA9IFByb2R1Y3Rpb247CiAJCX07CisJCTFDMjlFQzI5MUFGQzEyRjYwMDlFMEE4MiAvKiBEZWJ1
ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSAxQ0ZEQjU0QjFBRkMxNzdFMDA5NEVGMjEgLyogUEFMLnhjY29uZmln
ICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07
CisJCTFDMjlFQzJBMUFGQzEyRjYwMDlFMEE4MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFD
RkRCNTRCMUFGQzE3N0UwMDk0RUYyMSAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxQzI5RUMyQjFBRkMx
MkY2MDA5RTBBODIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQ0ZEQjU0QjFBRkMxNzdF
MDA5NEVGMjEgLyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07
CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJNDE3REE2RDExMzczNEUwMjAwN0M1N0ZC
IC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNl
Q29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDQxODE3MDdEMTM4NkVERjIwMDU3QUFBNCAvKiBXZWJD
b3JlVGVzdFN1cHBvcnQueGNjb25maWcgKi87CkBAIC0zMDc0Myw2ICszMDg1NCwxNiBAQAogCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25OYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJMUMyOUVDMkMxQUZDMTJGNjAwOUUwQTgyIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJQQUwiICovID0g
eworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCisJCQkJMUMyOUVDMjkxQUZDMTJGNjAwOUUwQTgyIC8qIERlYnVnICovLAorCQkJCTFDMjlF
QzJBMUFGQzEyRjYwMDlFMEE4MiAvKiBSZWxlYXNlICovLAorCQkJCTFDMjlFQzJCMUFGQzEyRjYw
MDlFMEE4MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
SXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247
CisJCX07CiAJCTQxN0RBNkQ4MTM3MzRFNDcwMDdDNTdGQiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiV2ViQ29yZVRlc3RTdXBwb3J0IiAqLyA9IHsKIAkJ
CWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29uZmlnLmggYi9Tb3VyY2UvV2ViQ29yZS9jb25m
aWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg5ODU3ZDdjNjgyZDkyMDY3ZmQ0
OTIyZjdkYmM0ODcwZTk1MWRiYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEz
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0g
KiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
ICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmIGRlZmluZWQoSEFWRV9D
T05GSUdfSCkgJiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0Up
Ci0jaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+Ci0KLSNpZiBQTEFURk9STShDT0NPQSkKLSNkZWZpbmUgVVNFX0ZJTEVfTE9DSyAxCi0j
ZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikgJiYgIVVTRShXSU5HREkpCi0jaW5jbHVkZSA8V2Vi
Q29yZS9XZWJDb3JlSGVhZGVyRGV0ZWN0aW9uLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPHd0Zi9F
eHBvcnRNYWNyb3MuaD4KLSNpbmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgotCi0jaW5j
bHVkZSA8cnVudGltZS9KU0V4cG9ydE1hY3Jvcy5oPgotCi0jaWZkZWYgX19BUFBMRV9fCi0jZGVm
aW5lIEhBVkVfRlVOQ19VU0xFRVAgMQotI2VuZGlmIC8qIF9fQVBQTEVfXyAqLwotCi0jaWYgT1Mo
V0lORE9XUykKLQotI2lmbmRlZiBfV0lOMzJfV0lOTlQKLSNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4
NjAxCi0jZW5kaWYKLQotI2lmbmRlZiBXSU5WRVIKLSNkZWZpbmUgV0lOVkVSIDB4MDYwMQotI2Vu
ZGlmCi0KLS8vIENVUkwgbmVlZHMgd2luc29jaywgc28gZG9uJ3QgcHJldmVudCBpbmNsdXNpb24g
b2YgaXQKLSNpZiAhVVNFKENVUkwpCi0jaWZuZGVmIF9XSU5TT0NLQVBJXwotI2RlZmluZSBfV0lO
U09DS0FQSV8gLy8gUHJldmVudCBpbmNsdXNpb24gb2Ygd2luc29jay5oIGluIHdpbmRvd3MuaAot
I2VuZGlmCi0jZW5kaWYKLQotI2VuZGlmIC8qIE9TKFdJTkRPV1MpICovCi0KLS8vIFVzaW5nIENN
YWtlIHdpdGggVW5peCBtYWtlZmlsZXMgZG9lcyBub3QgdXNlIHByZWZpeCBoZWFkZXJzLgotI2lm
IFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQotI2luY2x1ZGUg
IldlYkNvcmVQcmVmaXguaCIKLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLQotLy8gVGhl
c2UgdW5kZWZzIG1hdGNoIHVwIHdpdGggZGVmaW5lcyBpbiBXZWJDb3JlUHJlZml4LmggZm9yIE1h
YyBPUyBYLgotLy8gSGVscHMgdXMgY2F0Y2ggaWYgYW55b25lIHVzZXMgbmV3IG9yIGRlbGV0ZSBi
eSBhY2NpZGVudCBpbiBjb2RlIGFuZCBkb2Vzbid0IGluY2x1ZGUgImNvbmZpZy5oIi4KLSN1bmRl
ZiBuZXcKLSN1bmRlZiBkZWxldGUKLSNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgotCi0jaW5j
bHVkZSA8Y2lzbzY0Nj4KLQotI2VuZGlmCi0KLSNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5o
PgotCi0jaWYgQ09NUElMRVIoTVNWQykKLSNkZWZpbmUgU0tJUF9TVEFUSUNfQ09OU1RSVUNUT1JT
X09OX01TVkMgMQotI2Vsc2UKLSNkZWZpbmUgU0tJUF9TVEFUSUNfQ09OU1RSVUNUT1JTX09OX0dD
QyAxCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKFdJTikKLSNpZiBQTEFURk9STShXSU5fQ0FJUk8p
Ci0jdW5kZWYgVVNFX0NHCi0jZGVmaW5lIFVTRV9DQUlSTyAxCi0jZGVmaW5lIFVTRV9DVVJMIDEK
LSNpZm5kZWYgX1dJTlNPQ0tBUElfCi0jZGVmaW5lIF9XSU5TT0NLQVBJXyAvLyBQcmV2ZW50IGlu
Y2x1c2lvbiBvZiB3aW5zb2NrLmggaW4gd2luZG93cy5oCi0jZW5kaWYKLSNlbGlmICFVU0UoV0lO
R0RJKQotI2RlZmluZSBVU0VfQ0cgMQotI3VuZGVmIFVTRV9DQUlSTwotI3VuZGVmIFVTRV9DVVJM
Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgUExBVEZPUk0oTUFDKQotI2RlZmluZSBVU0VfTkVXX1RI
RU1FIDEKLSNlbmRpZgotCi0jaWYgVVNFKENHKQotI2lmbmRlZiBDR0ZMT0FUX0RFRklORUQKLSNp
ZiAoZGVmaW5lZChfX0xQNjRfXykgJiYgX19MUDY0X18pIHx8IChkZWZpbmVkKF9feDg2XzY0X18p
ICYmIF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0KSB8fCBkZWZpbmVkKF9fYW1kNjRfXykK
LXR5cGVkZWYgZG91YmxlIENHRmxvYXQ7Ci0jZWxzZQotdHlwZWRlZiBmbG9hdCBDR0Zsb2F0Owot
I2VuZGlmCi0jZGVmaW5lIENHRkxPQVRfREVGSU5FRCAxCi0jZW5kaWYKLSNlbmRpZiAvKiBVU0Uo
Q0cpICovCi0KLSNpZiBQTEFURk9STShJT1MpCi0jZGVmaW5lIFdFQkNPUkVfTkFWSUdBVE9SX1BM
QVRGT1JNIHdrR2V0UGxhdGZvcm1OYW1lRm9yTmF2aWdhdG9yKCk7Ci0jZGVmaW5lIFdFQkNPUkVf
TkFWSUdBVE9SX1ZFTkRPUiB3a0dldFZlbmRvck5hbWVGb3JOYXZpZ2F0b3IoKTsKLSNlbmRpZgot
Ci0vLyBGSVhNRTogTW92ZSB0aGlzIHRvIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oLCB3
aGljaCBpcyB3aGVyZSB3ZSBkZWZpbmUgVVNFX0FWRk9VTkRBVElPTiBvbiB0aGUgTWFjLgotLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MzM0Ci0jaWYgUExBVEZP
Uk0oV0lOKSAmJiBVU0UoQ0cpICYmIEhBVkUoQVZDRikKLSNkZWZpbmUgVVNFX0FWRk9VTkRBVElP
TiAxCi0KLSNpZiBIQVZFKEFWQ0ZfTEVHSUJMRV9PVVRQVVQpCi0jZGVmaW5lIFVTRV9BVkZPVU5E
QVRJT04gMQotI2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVAg
MQotI2RlZmluZSBIQVZFX0FWRk9VTkRBVElPTl9MRUdJQkxFX09VVFBVVF9TVVBQT1JUIDEKLSNk
ZWZpbmUgSEFWRV9NRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSyAxCi0jZW5kaWYKLQotI2Vu
ZGlmCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXhwb3J0
TWFjcm9zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybUV4cG9ydE1hY3Jvcy5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzYzZmFlY2JlNjVjMjFhODhmMDk3OGIx
NjU5YzZlN2YxNWQ4Nzk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtRXhwb3J0TWFjcm9zLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqCi0gKiBUaGlzIGZpbGUgaGFuZGxlcyBzaGFyZWQgbGlicmFyeSBzeW1i
b2wgZXhwb3J0IGRlY29yYXRpb25zLiBJdCBpcyByZWNvbW1lbmRlZAotICogdGhhdCBhbGwgV2Vi
S2l0IHByb2plY3RzIHVzZSB0aGVzZSBkZWZpbml0aW9ucyBzbyB0aGF0IHN5bWJvbCBleHBvcnRz
IHdvcmsKLSAqIHByb3Blcmx5IG9uIGFsbCBwbGF0Zm9ybXMgYW5kIGNvbXBpbGVycyB0aGF0IFdl
YktpdCBidWlsZHMgdW5kZXIuCi0gKi8KLSNpZm5kZWYgUGxhdGZvcm1FeHBvcnRNYWNyb3NfaAot
I2RlZmluZSBQbGF0Zm9ybUV4cG9ydE1hY3Jvc19oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KLSNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+Ci0KLS8vIFNlZSBub3RlIGluIHd0Zi9Q
bGF0Zm9ybS5oIGZvciBtb3JlIGluZm8gb24gRVhQT1JUX01BQ1JPUy4KLSNpZiBVU0UoRVhQT1JU
X01BQ1JPUykKLQotI2lmICFQTEFURk9STShXSU4pCi0jZGVmaW5lIFdFQkNPUkVfRVhQT1JUIFdU
Rl9FWFBPUlQKLSNkZWZpbmUgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQgV1RGX0VYUE9SVAot
I2Vsc2UKLS8vIFdpbmRvd3MgbXVzdCBzZXQgdGhpcyBwZXItcHJvamVjdAotI2VuZGlmCi0KLSNl
bHNlIC8vICFVU0UoRVhQT1JUX01BQ1JPUykKLSNkZWZpbmUgV0VCQ09SRV9FWFBPUlQKLSNkZWZp
bmUgV0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQKLQotI2VuZGlmIC8vIFVTRShFWFBPUlRfTUFD
Uk9TKQotCi0jZW5kaWYgLy8gUGxhdGZvcm1FeHBvcnRNYWNyb3NfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1BvaW50RW52aXJvbm1l
bnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTZiOTUzODRlYjcwNWExNGFm
YTVkOTIyYTJmMTRlM2FjMGYwNTM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvRmxvYXRpbmdQb2lu
dEVudmlyb25tZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oIgotCi0jaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLQotI2lmIFBM
QVRGT1JNKElPUykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1GbG9hdGluZ1BvaW50RW52aXJv
bm1lbnQmIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDo6c2luZ2xldG9uKCkKLXsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8RmxvYXRpbmdQb2ludEVudmlyb25tZW50PiBmbG9hdGluZ1BvaW50
RW52aXJvbm1lbnQ7Ci0gICAgcmV0dXJuIGZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudDsKLX0KLQot
RmxvYXRpbmdQb2ludEVudmlyb25tZW50OjpGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQoKQotICAg
IDogbV9pc0luaXRpYWxpemVkKGZhbHNlKQotewotfQotCi12b2lkIEZsb2F0aW5nUG9pbnRFbnZp
cm9ubWVudDo6ZW5hYmxlRGVub3JtYWxTdXBwb3J0KCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVChp
c1VJVGhyZWFkKCkpOwotI2lmIGRlZmluZWQgX0FSTV9BUkNIXzcKLSAgICBmZW52X3QgZW52OyAK
LSAgICBmZWdldGVudigmZW52KTsgCi0gICAgZW52Ll9fZnBzY3IgJj0gfjB4MDEwMDAwMDBVOwot
ICAgIGZlc2V0ZW52KCZlbnYpOyAKLSNlbmRpZgotICAgIC8vIFN1cHBvcnRpbmcgZGVub3JtYWwg
bW9kZSBpcyBhbHJlYWR5IHRoZSBkZWZhdWx0IG9uIHg4NiwgeDg2XzY0LCBhbmQgQVJNNjQuCi19
Ci0KLXZvaWQgRmxvYXRpbmdQb2ludEVudmlyb25tZW50OjpzYXZlTWFpblRocmVhZEVudmlyb25t
ZW50KCkKLXsKLSAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0luaXRpYWxpemVkKTsKLSAgICBSRUxF
QVNFX0FTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIGZlZ2V0ZW52KCZtX21haW5UaHJlYWRFbnZp
cm9ubWVudCk7Ci0gICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKLX0KLQotdm9pZCBGbG9hdGlu
Z1BvaW50RW52aXJvbm1lbnQ6OnByb3BhZ2F0ZU1haW5UaHJlYWRFbnZpcm9ubWVudCgpCi17Ci0g
ICAgUkVMRUFTRV9BU1NFUlQobV9pc0luaXRpYWxpemVkKTsKLSAgICBSRUxFQVNFX0FTU0VSVCgh
aXNVSVRocmVhZCgpKTsKLSAgICBmZXNldGVudigmbV9tYWluVGhyZWFkRW52aXJvbm1lbnQpOwot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9GbG9hdGluZ1Bv
aW50RW52aXJvbm1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUxMWJmMGUw
NzU5YjE1MjdjYWFhNGUzM2VhN2FlM2ExYWQ3ZDI4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL0Zs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEZs
b2F0aW5nUG9pbnRFbnZpcm9ubWVudF9oCi0jZGVmaW5lIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVu
dF9oCi0KLSNpZiBUQVJHRVRfT1NfSVBIT05FCi0KLSNpbXBvcnQgPGZlbnYuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBGbG9hdGluZ1BvaW50RW52aXJvbm1lbnQgewotcHVibGlj
OgotICAgIEZsb2F0aW5nUG9pbnRFbnZpcm9ubWVudCgpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBlbmFibGVEZW5vcm1hbFN1cHBvcnQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNh
dmVNYWluVGhyZWFkRW52aXJvbm1lbnQoKTsKLSAgICB2b2lkIHByb3BhZ2F0ZU1haW5UaHJlYWRF
bnZpcm9ubWVudCgpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEZsb2F0aW5nUG9pbnRF
bnZpcm9ubWVudCYgc2luZ2xldG9uKCk7Ci0KLXByaXZhdGU6Ci0KLSAgICBmZW52X3QgbV9tYWlu
VGhyZWFkRW52aXJvbm1lbnQ7Ci0gICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLXVzaW5nIFdlYkNvcmU6OkZsb2F0aW5nUG9pbnRFbnZpcm9u
bWVudDsKLQotI2VuZGlmIC8vIFRBUkdFVF9PU19JUEhPTkUKLQotI2VuZGlmIC8vIEZsb2F0aW5n
UG9pbnRFbnZpcm9ubWVudF9oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMmY1MGYzNmVkMjRh
YTgyNzEzZTA2MWI4ZGE0OGE1Y2JhMGY0OWMwMy4uMzM2ZjQ3ZmFkYjVkM2EwMDZiYzJmZTE1ZGQ4
YWI1MWZjNjEzY2I1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTc2LDYgKzc2LDcgQEAgc2V0
KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVz
L3N0cmVhbXMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvdmlicmF0aW9uIgogICAgICIk
e1dFQkNPUkVfRElSfS9Nb2R1bGVzL3dlYmRhdGFiYXNlIgorICAgICIke1dFQkNPUkVfRElSfS9Q
QUwiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2FjY2Vzc2liaWxpdHkiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L2JpbmRpbmdzL2pzIgogICAgICIke1dFQkNPUkVfRElSfS9iaW5kaW5ncyIKZGlmZiAtLWdp
dCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3NTlmYzI1N2NlZTBjZTNiYzFhNjI2YjIw
ZDkzYmRkZjEzOGU1YzRhLi45NWFkMzRhMjFmYTQ0NDZjYTE0ZTI4Yjk0OTBiM2JhMDZkZmM3MWRj
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTUtMDUtMTggIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVj
ZSBhIG5ldyBXZWJDb3JlIHRhcmdldCBhbmQgc3RhdGljIGxpYnJhcnkuIFRoaXMgaXMgaW50ZW5k
ZWQgdG8gYmUKKyAgICAgICAgdGhlIGRlc3RpbmF0aW9uIHRhcmdldCB0byBidWlsZCBjb2RlIHRo
YXQgY3VycmVudGx5IHJlc2lkZXMgaW4KKyAgICAgICAgV2ViQ29yZS9wbGF0Zm9ybS4gRmlsZXMg
d2lsbCBiZSBtb3ZlZCBpbnRvIHRoYXQgdGFyZ2V0IGZpbGUgYnkgZmlsZS4KKyAgICAgICAgU2Vw
YXJhdGluZyB0aGlzIHBsYXRmb3JtIGNvZGUgaW50byBpdHMgb3duIHN0YXRpYyBsaWJyYXJ5IGVu
Zm9yY2VzCisgICAgICAgIGxheWVyaW5nLCBhcyB3ZWxsIGFzIGVuY291cmFnZXMvYWlkcyB1bml0
IHRlc3Rpbmcgb2YgdGhpcyBwbGF0Zm9ybSBjb2RlLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbW92
ZXMgYSBzbWFsbCBkZXBlbmRlbmN5IHRyZWUsIGNvbnNpc3Rpbmcgb2YgdGhlIENsb2NrIGNsYXNz
CisgICAgICAgIGFuZCBpdHMgZGVwZW5kZW50cywgaW50byBQQUwuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICog
U291cmNlL0NNYWtlTGlzdHMudHh0OiBBZGQgV2ViS2l0LXNwZWNpZmljIGNvbXBpbGVyIGZsYWdz
IHRvIHRoZSBQQUwgdGFyZ2V0IGFzIHdlbGwuCisKIDIwMTUtMDUtMTQgIE1pY2hhZWwgQ2F0YW56
YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDTWFrZV0gRXJyb3Igb3V0
IHdoZW4gcnVieSBpcyB0b28gb2xkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298416</attachid>
            <date>2017-01-09 16:41:47 -0800</date>
            <delta_ts>2017-01-09 16:48:06 -0800</delta_ts>
            <desc>First stab at the PAL layer</desc>
            <filename>bug143358.diff</filename>
            <type>text/plain</type>
            <size>30933</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggNzlhMTdi
YS4uN2FjOWQ4YyAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50
eHQKQEAgLTExNSw2ICsxMTUsNyBAQCBlbHNlICgpCiAgICAgc2V0KFdlYkNvcmVfTElCUkFSWV9U
WVBFIFNUQVRJQykKIGVuZGlmICgpCiAKK3NldChQQUxfTElCUkFSWV9UWVBFIFNUQVRJQykKIHNl
dChXZWJLaXRfTElCUkFSWV9UWVBFIFNIQVJFRCkKIHNldChXZWJLaXQyX0xJQlJBUllfVFlQRSBT
SEFSRUQpCiBzZXQoV2ViQ29yZVRlc3RTdXBwb3J0X0xJQlJBUllfVFlQRSBTVEFUSUMpCmRpZmYg
LS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTRmNjQ3MS4uNjBhOTEzOSAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE3
LTAxLTA5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAYW0uc29ueS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFNvdXJjZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvV2ViS2l0RlMuY21ha2U6CisKKzIwMTctMDEtMDkgIERvbiBPbG1zdGVhZCAgPGRvbi5v
bG1zdGVhZEBhbS5zb255LmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0g
QWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU291cmNlL0NNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZToKKwogMjAx
Ni0xMi0yMSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAg
ICAgc2V0IFBZVEhPTlBBVEggaW4gc2VwYXJhdGUgQ09NTUFORCBkb2Vzbid0IHdvcmsgd2l0aCBh
bGwgQ01ha2UgZ2VuZXJhdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFiOGEyZGMuLjE1ZmRmMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvQ01ha2VMaXN0cy50eHQKQEAgLTQ2
LDYgKzQ2LDcgQEAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhXVEYgJHtBRERJVElP
TkFMX0NPTVBJTEVSX0ZMQUdTfSkKIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoSmF2
YVNjcmlwdENvcmUgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKIAogaWYgKEVOQUJMRV9X
RUJDT1JFKQorICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoUEFMICR7QURESVRJ
T05BTF9DT01QSUxFUl9GTEFHU30pCiAgICAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFH
UyhXZWJDb3JlVGVzdFN1cHBvcnQgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKICAgICBX
RUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmUgJHtBRERJVElPTkFMX0NPTVBJ
TEVSX0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmVE
ZXJpdmVkU291cmNlcyAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCA2ZWIzMTQ2Li5hOWY4N2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMSw2
ICsxLDcgQEAKIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjguMTIpCiBpbmNsdWRl
KFdlYktpdENvbW1vbikKIHNldF9wcm9wZXJ0eShESVJFQ1RPUlkgLiBQUk9QRVJUWSBGT0xERVIg
IldlYkNvcmUiKQorYWRkX3N1YmRpcmVjdG9yeShQQUwpCiAKIHNldChXZWJDb3JlX0lOQ0xVREVf
RElSRUNUT1JJRVMKICAgICAiJHtDTUFLRV9CSU5BUllfRElSfSIKQEAgLTI5NTIsNiArMjk1Myw3
IEBAIHNldChXZWJDb3JlX1BMVUdfSU5TX1JFU09VUkNFUwogc2V0KFdlYkNvcmVfTElCUkFSSUVT
CiAgICAgJHtJQ1VfTElCUkFSSUVTfQogICAgIEphdmFTY3JpcHRDb3JlJHtERUJVR19TVUZGSVh9
CisgICAgUEFMCiApCiAKIGlmIChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAxZWU1ZmU3Li43NzVkOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzUgQEAKKzIw
MTctMDEtMDkgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4KKworICAg
ICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogUEFML0NNYWtlTGlzdHMudHh0OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvUGxhdGZv
cm1FZmwuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9QbGF0Zm9ybUdUSy5jbWFrZTogQWRk
ZWQuCisgICAgICAgICogUEFML1BsYXRmb3JtTWFjLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQ
QUwvUGxhdGZvcm1XaW4uY21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9jb25maWcuaDogQWRk
ZWQuCisgICAgICAgICogUEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaC4KKyAgICAgICAgKiBQ
QUwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9Dcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwLgorICAgICAgICAoV2ViQ29yZTo6UEFMOjp0b1NIQTFD
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6dG9TSEEyMjRDb250ZXh0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBBTDo6dG9TSEEyNTZDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBB
TDo6dG9TSEEzODRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6dG9TSEE1MTJDb250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQQUw6OkNyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
UEFMOjpDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKToKKyAgICAgICAgKiBQQUwvY3J5cHRvL2dj
cnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwLgorICAgICAgICAo
V2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChXZWJD
b3JlOjpQQUw6OkNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5
cHRvRGlnZXN0OjphZGRCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0b0RpZ2Vz
dDo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIFBBTC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2Vz
dEdudVRMUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8v
Z251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNy
eXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRv
RGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGln
ZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6OmFkZEJ5
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCk6
CisgICAgICAgICogUEFML2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNw
cC4KKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQQUw6OkNyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UEFM
OjpDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5j
bWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBjcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobVNIQTE6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMjI0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRo
bVNIQTIyNDo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEEyNTYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2
OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTM4NC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2Vz
dCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KToKKyAg
ICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChX
ZWJDb3JlOjpzaWduUlNBU1NBX1BLQ1MxX3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5
UlNBU1NBX1BLQ1MxX3YxXzUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hB
MjU2SGFzaCk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okhvc3RUTFNDZXJ0aWZpY2F0ZVNldDo6Y29tcHV0ZUNlcnRp
ZmljYXRlSGFzaCk6CisKIDIwMTctMDEtMDkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5mQGdtYWls
LmNvbT4KIAogICAgICAgICBNZXJnaW5nIFRocmVhZGFibGVMb2FkZXIgcmVkdW5kYW50IG9wdGlv
bnMgb24gZmlsdGVyaW5nIHJlc3BvbnNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFM
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvUEFML0NNYWtlTGlzdHMudHh0CmluZGV4
IGU2OWRlMjkuLjgwOGE0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50eHQKQEAgLTAsMCAr
MSwzMCBAQAorc2V0KFBBTF9JTkNMVURFX0RJUkVDVE9SSUVTCisgICAgIiR7UEFMX0RJUn0iCisg
ICAgIiR7UEFMX0RJUn0vY3J5cHRvIgorKQorCitzZXQoUEFMX1NPVVJDRVMKKykKKworc2V0KFBB
TF9MSUJSQVJJRVMKKyAgICBXVEYKKykKKworV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lG
X0VYSVNUUygpCisKK1dFQktJVF9XUkFQX1NPVVJDRUxJU1QoJHtQQUxfU09VUkNFU30pCitXRUJL
SVRfRlJBTUVXT1JLKFBBTCkKKworaWYgKE1TVkMpCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAor
ICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBSRV9CVUlMRAorICAgICAgICBDT01NQU5EICR7
UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVF9MSUJSQVJJRVNfRElSfS90b29scy9zY3JpcHRzL2F1
dG8tdmVyc2lvbi5wbCAke0RFUklWRURfU09VUkNFU19ESVJ9CisgICAgICAgIFZFUkJBVElNKQor
CisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBP
U1RfQlVJTEQKKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVRfTElC
UkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0cy92ZXJzaW9uLXN0YW1wLnBsICR7REVSSVZFRF9TT1VS
Q0VTX0RJUn0gJDxUQVJHRVRfRklMRTpQQUw+CisgICAgICAgIFZFUkJBVElNKQorZW5kaWYgKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBlNjlkZTI5Li43NzVjMTg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChB
UFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5j
cHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUdUSy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBlNjlkZTI5Li43NzVj
MTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1HVEsuY21ha2UKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAor
bGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdD
cnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybU1hYy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBlNjlkZTI5
Li4yZjk2OGVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtTWFjLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMCwwICsx
LDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCisgICAgY3J5cHRvL2NvbW1vbmNyeXB0by9D
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1XaW4u
Y21ha2UKaW5kZXggZTY5ZGUyOS4uNmY2OTE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybVdp
bi5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCisgICAgY3J5
cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvY29uZmlnLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmgKaW5kZXggZTY5ZGUy
OS4uNTQ4OGM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2lmIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgJiYgSEFWRV9DT05G
SUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCisjaW5jbHVkZSAiY21ha2Vjb25m
aWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpbmNsdWRlIDx3
dGYvRXhwb3J0TWFjcm9zLmg+CisKKyNpZmRlZiBfX0FQUExFX18KKyNkZWZpbmUgSEFWRV9GVU5D
X1VTTEVFUCAxCisjZW5kaWYgLyogX19BUFBMRV9fICovCisKKyNpZiBPUyhXSU5ET1dTKQorCisj
aWZuZGVmIF9XSU4zMl9XSU5OVAorI2RlZmluZSBfV0lOMzJfV0lOTlQgMHg2MDEKKyNlbmRpZgor
CisjaWZuZGVmIFdJTlZFUgorI2RlZmluZSBXSU5WRVIgMHgwNjAxCisjZW5kaWYKKworI2VuZGlm
IC8qIE9TKFdJTkRPV1MpICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisvLyBUaGVzZSB1bmRl
ZnMgbWF0Y2ggdXAgd2l0aCBkZWZpbmVzIGluIFdlYkNvcmVQcmVmaXguaCBmb3IgTWFjIE9TIFgu
CisvLyBIZWxwcyB1cyBjYXRjaCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5IGFjY2lk
ZW50IGluIGNvZGUgYW5kIGRvZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgorI3VuZGVmIG5ldwor
I3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKKyNpbmNsdWRlIDxj
aXNvNjQ2PgorCisjZW5kaWYKKworI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oIGIvU291cmNl
L1dlYkNvcmUvUEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaAppbmRleCAzMWYwNzVhLi5mNTE4ODk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKQEAgLTI5LDcgKzI5
LDcgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNl
IFBBTCB7CiAKIHN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0OwogCkBAIC01NSw2ICs1NSw2IEBA
IHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+IG1fY29u
dGV4dDsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZTo6UEFMCiAKICNlbmRpZiAvLyBDcnlwdG9EaWdlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2Vz
dENvbW1vbkNyeXB0by5jcHAKaW5kZXggZTNmZmM1Ni4uYzdlNzY2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5
cHRvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL2NvbW1vbmNyeXB0by9Dcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlIDxD
b21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVz
cGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIFBBTCB7CiAKIHN0cnVjdCBDcnlwdG9EaWdlc3RDb250
ZXh0IHsKICAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07CkBAIC0xNzYsNCAr
MTc2LDQgQEAgVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZTo6UEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRv
L2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0
by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAppbmRleCAwYTNjOGJmLi43MzllMzk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RH
Q3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Rp
Z2VzdEdDcnlwdC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgPGdjcnlwdC5oPgog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwg
ewogCiBzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CiAgICAgaW50IGFsZ29yaXRobTsKQEAg
LTk0LDQgKzk0LDQgQEAgVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2go
KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZTo6UEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Y3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcAppbmRleCA4OWE1ZDgxLi4wZTg2
NWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL2dudXRscy9DcnlwdG9E
aWdlc3RHbnVUTFMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ251dGxzL0Ny
eXB0b0RpZ2VzdEdudVRMUy5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDxnbnV0bHMv
Z251dGxzLmg+CiAjaW5jbHVkZSA8Z251dGxzL2NyeXB0by5oPgogCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7CituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwgewogCiBzdHJ1Y3QgQ3J5cHRv
RGlnZXN0Q29udGV4dCB7CiAgICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBhbGdvcml0aG07
CkBAIC05OSw0ICs5OSw0IEBAIFZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVI
YXNoKCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9j
cnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKaW5kZXggNzZjYzE5Mi4uY2U3MTM0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3Bw
CkBAIC0yNiw5ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNyeXB0
b0RpZ2VzdC5oIgogCisjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPHdpbmNyeXB0Lmg+
CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIFBB
TCB7CiAKIHN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKICAgICBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobSBhbGdvcml0aG07CkBAIC0xMDAsNCArMTAxLDQgQEAgVmVjdG9yPHVpbnQ4X3Q+IENy
eXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKK30gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6UEFMCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCmluZGV4IGYzYWU4OWIuLjFmMGUxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlCkBAIC02OSw4ICs2OSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
CiAgICAgcGxhdGZvcm0vYXVkaW8vZWZsL0F1ZGlvQnVzRWZsLmNwcAogCi0gICAgcGxhdGZvcm0v
Y3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCi0KICAgICBwbGF0Zm9ybS9lZmwv
Q3Vyc29yRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9EcmFnRGF0YUVmbC5jcHAKICAgICBwbGF0
Zm9ybS9lZmwvRHJhZ0ltYWdlRWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCA2
MjQyMTYyLi5iMWM2ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNjgsOCArNjgs
NiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2F1ZGlvL2ds
aWIvQXVkaW9CdXNHTGliLmNwcAogCi0gICAgcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9E
aWdlc3RHQ3J5cHQuY3BwCi0KICAgICBwbGF0Zm9ybS9nYW1lcGFkL2dsaWIvR2FtZXBhZHNHbGli
LmNwcAogCiAgICAgcGxhdGZvcm0vZ2VvY2x1ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZTEu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDRmZGYyZjQuLjc4ODYzOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMzQsOCArMzM0LDYgQEAgbGlzdChBUFBFTkQgV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vY29jb2EvVk5vZGVUcmFja2VyQ29jb2EuY3BwCiAg
ICAgcGxhdGZvcm0vY29jb2EvV2ViQ29yZU5TRXJyb3JFeHRyYXMubW0KIAotICAgIHBsYXRmb3Jt
L2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAotCiAgICAg
cGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAKICAgICBwbGF0Zm9ybS9nYW1lcGFk
L21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5k
ZXggMDFkYTkwNi4uZDljMDY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1X
aW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTc0LDgg
Kzc0LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9jZi93
aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRv
RGlnZXN0V2luLmNwcAotCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMS5jcHAKaW5kZXggMGM4ZGZkZC4uMjEwZDk4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAK
QEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVk
ZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0b0Rp
Z2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEExOjppZGVudGlmaWVyKCkgY29u
c3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYg
bWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBl
eGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1
ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0
ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIGF1dG8gZGlnZXN0ID0gUEFM
OjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MSk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0
aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRv
QWxnb3JpdGhtU0hBMTo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNh
bGxiYWNrJiYgY2FsCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTE6OmRp
Z2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgYXV0byBk
aWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJh
Y2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCmluZGV4IDZjYTFh
ZWUuLmJlNDQxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAj
aWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENy
eXB0b0FsZ29yaXRobVNIQTIyNDo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7
Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzIyNCk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6
Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwogICAgIGlmICgh
ZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTIy
NDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwog
CiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRl
KENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBB
TDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzIyNCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAg
ICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAppbmRleCA3MzY2MGY1Li42Zjgx
NmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEyNTYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJM
RShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdv
cml0aG1TSEEyNTY6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNI
QTI1Njo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1
dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yNTYpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICBpZiAoIWRpZ2VzdCkg
ewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJl
dHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2Vz
dChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0
aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBk
YXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0
b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwog
ICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICBy
ZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKaW5kZXggYzk3NzUyZC4uZGUxMTU4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMzg0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEzODQuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExF
X0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8
UEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hB
Mzg0OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRp
Z2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBA
IC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoVmVjdG9y
PHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQog
ewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKICAgICBpZiAo
IWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTUxMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEE1MTIuY3BwCmluZGV4IDMzZTQ4M2QuLjM2NTg5MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBNTEyLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8p
CiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlw
dG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYs
NyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6aWRl
bnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVj
dG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0
aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CisgICAg
YXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTIpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyAr
NjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90
PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlw
dG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBh
dXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfNTEyKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUo
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CiAgICAgaWYgKCFkaWdlc3Qp
IHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IGY2YWI3YTIuLjdmY2Y1ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC0zMCwyNiArMzAsMjYgQEAKIAogI2lu
Y2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRo
bVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNp
bmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5
cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIHN0ZDo6b3B0aW9u
YWw8Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKIHsKICAgICBzd2l0Y2ggKGhhc2hGdW5j
dGlvbikgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6Ci0gICAg
ICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7CisgICAgICAgIHJldHVy
biBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzIyNDsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yMjQ7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpT
SEFfMjU2OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7
CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2Owog
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKLSAgICAgICAgcmV0
dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OworICAgICAgICByZXR1cm4gUEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlNIQV81MTI6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzUxMjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV81MTI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IHNpZ25SU0FTU0FfUEtDUzFfdjFfNShDcnlwdG9BbGdvcml0aG1JZGVudGlmCiAgICAg
YXV0byBjcnlwdG9EaWdlc3RBbGdvcml0aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0
aG0oaGFzaCk7CiAgICAgaWYgKCFjcnlwdG9EaWdlc3RBbGdvcml0aG0pCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRv
RGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CisgICAgYXV0byBkaWdlc3Qg
PSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOwogICAg
IGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3Ig
fTsKICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGgpOwpAQCAtOTMsNyArOTMs
NyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gdmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLAogICAgIGF1dG8gY3J5cHRvRGlnZXN0QWxnb3Jp
dGhtID0gV2ViQ29yZTo6Y3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2gpOwogICAgIGlmICghY3J5
cHRvRGlnZXN0QWxnb3JpdGhtKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9u
RXJyb3IgfTsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9E
aWdlc3RBbGdvcml0aG0pOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKICAgICBpZiAoIWRpZ2VzdCkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAgICAgZGlnZXN0LT5hZGRCeXRl
cyhkYXRhLCBkYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCmluZGV4IGRmOTYxZTAuLjhiZGFhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNDUsNyArNDUsNiBAQAog
I2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRl
ICJDb29raWVKYXIuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJET01F
ZGl0b3IuaCIKICNpbmNsdWRlICJET01QYXRjaFN1cHBvcnQuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKQEAgLTk3LDYgKzk2LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSWRlbnRpZmllcnNG
YWN0b3J5Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgorI2luY2x1ZGUgPFBBTC9jcnlw
dG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpA
QCAtMTMxNyw3ICsxMzE3LDcgQEAgc3RhdGljIFN0cmluZyBjb21wdXRlQ29udGVudFNlY3VyaXR5
UG9saWN5U0hBMjU2SGFzaChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgIFRleHRFbmNvZGlu
ZyBkb2N1bWVudEVuY29kaW5nID0gZWxlbWVudC5kb2N1bWVudCgpLnRleHRFbmNvZGluZygpOwog
ICAgIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmdUb1VzZSA9IGRvY3VtZW50RW5jb2Rpbmcu
aXNWYWxpZCgpID8gZG9jdW1lbnRFbmNvZGluZyA6IFVURjhFbmNvZGluZygpOwogICAgIENTdHJp
bmcgY29udGVudCA9IGVuY29kaW5nVG9Vc2UuZW5jb2RlKFRleHROb2RlVHJhdmVyc2FsOjpjb250
ZW50c0FzU3RyaW5nKGVsZW1lbnQpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgYXV0
byBjcnlwdG9EaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgIGNy
eXB0b0RpZ2VzdC0+YWRkQnl0ZXMoY29udGVudC5kYXRhKCksIGNvbnRlbnQubGVuZ3RoKCkpOwog
ICAgIFZlY3Rvcjx1aW50OF90PiBkaWdlc3QgPSBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCk7
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInNoYTI1Ni0iLCBiYXNlNjRFbmNvZGUoZGlnZXN0LmRh
dGEoKSwgZGlnZXN0LnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggZjA1OWI2MC4uYmU2M2VhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0z
Myw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNp
bmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudExvYWRlci5oIgpAQCAtNTcsNiArNTYsNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KKyNpbmNs
dWRlIDxQQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29w
ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0UG9zaXRpb24uaD4KQEAgLTMwMSwxOCArMzAxLDE4IEBAIGJvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxQb2xpY2llc0FsbG93KFZpb2xhdGVkRGlyZWN0aXZlQ2FsbGJhY2sm
JiBjYWxsYmFjCiAgICAgcmV0dXJuIGlzQWxsb3dlZDsKIH0KIAotc3RhdGljIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRlbnRTZWN1cml0eVBvbGlj
eUhhc2hBbGdvcml0aG0gYWxnb3JpdGhtKQorc3RhdGljIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFs
Z29yaXRobSBhbGdvcml0aG0pCiB7CiAgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKICAgICBjYXNl
IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIHJl
dHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKKyAgICAgICAgcmV0dXJuIFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CiAgICAgY2FzZSBDb250ZW50U2Vj
dXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICByZXR1cm4gQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5
SGFzaEFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfNTEyOworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzUxMjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAgIHJldHVybiBQQUw6OkNy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQ
cmVkaWNhdGU+CkBAIC0zMzMsNyArMzMzLDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIYXNo
SW5FbmZvcmNlZEFuZFJlcG9ydE9ubHlQb2xpY2llc1BhaXIgQ29udGVudFNlY3VyaXR5UG8KICAg
ICBib29sIGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyA9IGZhbHNlOwogICAgIGJvb2wgZm91
bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8gYWxnb3Jp
dGhtIDogYWxnb3JpdGhtcykgewotICAgICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IENyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOworICAgICAg
ICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9E
aWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7CiAgICAgICAgIGNyeXB0b0RpZ2VzdC0+YWRkQnl0
ZXMoY29udGVudENTdHJpbmcuZGF0YSgpLCBjb250ZW50Q1N0cmluZy5sZW5ndGgoKSk7CiAgICAg
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2ggaGFzaCA9IHsgYWxnb3JpdGhtLCBjcnlwdG9E
aWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKICAgICAgICAgaWYgKCFmb3VuZEhhc2hJbkVuZm9yY2Vk
UG9saWNpZXMgJiYgYWxsUG9saWNpZXNXaXRoRGlzcG9zaXRpb25BbGxvdyhDb250ZW50U2VjdXJp
dHlQb2xpY3k6OkRpc3Bvc2l0aW9uOjpFbmZvcmNlLCBzdGQ6OmZvcndhcmQ8UHJlZGljYXRlPihw
cmVkaWNhdGUpLCBoYXNoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggYzM0NTU3ZC4uNmYx
ZmNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5o
IgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTQzLDYg
KzQyLDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1
ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWNlcnRpZmljYXRlRGF0YSkK
ICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIGRpZ2VzdCA9IENy
eXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAg
ICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGNl
cnRpZmljYXRlRGF0YS0+ZGF0YSwgY2VydGlmaWNhdGVEYXRhLT5sZW4pOwogCiAgICAgICAgIGF1
dG8gaGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9XZWJLaXRGUy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZQppbmRleCAyOWEw
OTY5Li41MTMwZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UKKysr
IGIvU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlCkBAIC0xMCw2ICsxMCw5IEBAIGVuZGlmICgp
CiBpZiAoTk9UIFdFQkNPUkVfRElSKQogICAgIHNldChXRUJDT1JFX0RJUiAiJHtDTUFLRV9TT1VS
Q0VfRElSfS9Tb3VyY2UvV2ViQ29yZSIpCiBlbmRpZiAoKQoraWYgKE5PVCBQQUxfRElSKQorICAg
IHNldChQQUxfRElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJDb3JlL1BBTCIpCitl
bmRpZiAoKQogaWYgKE5PVCBXRUJLSVRfRElSKQogICAgIHNldChXRUJLSVRfRElSICIke0NNQUtF
X1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJLaXQiKQogZW5kaWYgKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298418</attachid>
            <date>2017-01-09 16:48:06 -0800</date>
            <delta_ts>2017-01-09 17:00:29 -0800</delta_ts>
            <desc>First stab at the PAL layer</desc>
            <filename>bug143358.diff</filename>
            <type>text/plain</type>
            <size>31250</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggNzlhMTdi
YS4uN2FjOWQ4YyAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50
eHQKQEAgLTExNSw2ICsxMTUsNyBAQCBlbHNlICgpCiAgICAgc2V0KFdlYkNvcmVfTElCUkFSWV9U
WVBFIFNUQVRJQykKIGVuZGlmICgpCiAKK3NldChQQUxfTElCUkFSWV9UWVBFIFNUQVRJQykKIHNl
dChXZWJLaXRfTElCUkFSWV9UWVBFIFNIQVJFRCkKIHNldChXZWJLaXQyX0xJQlJBUllfVFlQRSBT
SEFSRUQpCiBzZXQoV2ViQ29yZVRlc3RTdXBwb3J0X0xJQlJBUllfVFlQRSBTVEFUSUMpCmRpZmYg
LS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTRmNjQ3MS4uN2Q4NmRiYSAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE3
LTAxLTA5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAYW0uc29ueS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFNvdXJjZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvV2ViS2l0RlMuY21ha2U6CisKKzIwMTctMDEtMDkgIERvbiBPbG1zdGVhZCAgPGRvbi5v
bG1zdGVhZEBhbS5zb255LmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0g
QWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU291cmNlL0NNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZToKKworMjAx
Ny0wMS0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQGFtLnNvbnkuY29tPgorCisgICAg
ICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0cmFjdGlvbiBMYXllciAoUEFMKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMzU4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2UvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU291cmNl
L2NtYWtlL1dlYktpdEZTLmNtYWtlOgorCiAyMDE2LTEyLTIxICBLb25zdGFudGluIFRva2FyZXYg
IDxhbm51bGVuQHlhbmRleC5ydT4KIAogICAgICAgICBzZXQgUFlUSE9OUEFUSCBpbiBzZXBhcmF0
ZSBDT01NQU5EIGRvZXNuJ3Qgd29yayB3aXRoIGFsbCBDTWFrZSBnZW5lcmF0b3JzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvQ01ha2VMaXN0cy50eHQKaW5kZXgg
MWI4YTJkYy4uMTVmZGYyMiAxMDA2NDQKLS0tIGEvU291cmNlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9DTWFrZUxpc3RzLnR4dApAQCAtNDYsNiArNDYsNyBAQCBXRUJLSVRfU0VUX0VYVFJB
X0NPTVBJTEVSX0ZMQUdTKFdURiAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogV0VCS0lU
X1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhKYXZhU2NyaXB0Q29yZSAke0FERElUSU9OQUxfQ09N
UElMRVJfRkxBR1N9KQogCiBpZiAoRU5BQkxFX1dFQkNPUkUpCisgICAgV0VCS0lUX1NFVF9FWFRS
QV9DT01QSUxFUl9GTEFHUyhQQUwgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKICAgICBX
RUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmVUZXN0U3VwcG9ydCAke0FERElU
SU9OQUxfQ09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxB
R1MoV2ViQ29yZSAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9TRVRf
RVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29yZURlcml2ZWRTb3VyY2VzICR7QURESVRJT05BTF9D
T01QSUxFUl9GTEFHU30pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDZlYjMxNDYuLmE5Zjg3YmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xLDYgKzEsNyBAQAogY21ha2VfbWluaW11bV9yZXF1
aXJlZChWRVJTSU9OIDIuOC4xMikKIGluY2x1ZGUoV2ViS2l0Q29tbW9uKQogc2V0X3Byb3BlcnR5
KERJUkVDVE9SWSAuIFBST1BFUlRZIEZPTERFUiAiV2ViQ29yZSIpCithZGRfc3ViZGlyZWN0b3J5
KFBBTCkKIAogc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0NNQUtFX0JJ
TkFSWV9ESVJ9IgpAQCAtMjk1Miw2ICsyOTUzLDcgQEAgc2V0KFdlYkNvcmVfUExVR19JTlNfUkVT
T1VSQ0VTCiBzZXQoV2ViQ29yZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJSQVJJRVN9CiAgICAg
SmF2YVNjcmlwdENvcmUke0RFQlVHX1NVRkZJWH0KKyAgICBQQUwKICkKIAogaWYgKEVOQUJMRV9M
RUdBQ1lfRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdiMWExMTIuLjQ1M2JhYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAorMjAxNy0wMS0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9u
Lm9sbXN0ZWFkQGFtLnNvbnkuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9y
bSBBYnN0cmFjdGlvbiBMYXllciAoUEFMKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBQQUwvQ01ha2VMaXN0cy50eHQ6
IEFkZGVkLgorICAgICAgICAqIFBBTC9QbGF0Zm9ybUVmbC5jbWFrZTogQWRkZWQuCisgICAgICAg
ICogUEFML1BsYXRmb3JtR1RLLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvUGxhdGZvcm1N
YWMuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9QbGF0Zm9ybVdpbi5jbWFrZTogQWRkZWQu
CisgICAgICAgICogUEFML2NvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvY3J5cHRvL0Ny
eXB0b0RpZ2VzdC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRv
L0NyeXB0b0RpZ2VzdC5oLgorICAgICAgICAqIFBBTC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0
b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAuCisg
ICAgICAgIChXZWJDb3JlOjpQQUw6OnRvU0hBMUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
UEFMOjp0b1NIQTIyNENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UEFMOjp0b1NIQTI1NkNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UEFMOjp0b1NIQTM4NENvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UEFMOjp0b1NIQTUxMkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UEFM
OjpDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNy
eXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0
b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0Ojph
ZGRCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhh
c2gpOgorICAgICAgICAqIFBBTC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHA6
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0RpZ2VzdEdDcnlwdC5jcHAuCisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0b0RpZ2VzdDo6
Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0Ojp+Q3J5
cHRvRGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCk6CisgICAgICAgICog
UEFML2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNw
cC4KKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQQUw6OkNyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UEFM
OjpDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKToKKyAgICAgICAgKiBQQUwvY3J5cHRvL3dpbi9D
cnlwdG9EaWdlc3RXaW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwLgorICAgICAgICAoV2ViQ29yZTo6UEFMOjpD
cnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0
b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0OjphZGRC
eXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gp
OgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2lu
LmNtYWtlOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMTo6ZGlnZXN0KToKKyAg
ICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QpOgorICAgICAgICAq
IGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRv
RGlnZXN0QWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6OnNpZ25SU0FTU0FfUEtDUzFfdjFf
NSk6CisgICAgICAgIChXZWJDb3JlOjp2ZXJpZnlSU0FTU0FfUEtDUzFfdjFfNSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKToKKyAgICAgICAgKiBwYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9DcnlwdG9E
aWdlc3RBbGdvcml0aG0pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5
OjpmaW5kSGFzaE9mQ29udGVudEluUG9saWNpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SG9zdFRM
U0NlcnRpZmljYXRlU2V0Ojpjb21wdXRlQ2VydGlmaWNhdGVIYXNoKToKKwogMjAxNy0wMS0wOSAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaWxlIHNjaGVt
ZSBzaG91bGQgbm90IGFsbG93IGFjY2VzcyBvZiBhIHJlc291cmNlIG9uIGEgZGlmZmVyZW50IHZv
bHVtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DTWFrZUxpc3RzLnR4dAppbmRleCBlNjlkZTI5Li44MDhhNDUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML0NNYWtlTGlzdHMudHh0CkBAIC0wLDAgKzEsMzAgQEAKK3NldChQQUxfSU5D
TFVERV9ESVJFQ1RPUklFUworICAgICIke1BBTF9ESVJ9IgorICAgICIke1BBTF9ESVJ9L2NyeXB0
byIKKykKKworc2V0KFBBTF9TT1VSQ0VTCispCisKK3NldChQQUxfTElCUkFSSUVTCisgICAgV1RG
CispCisKK1dFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQorCitXRUJLSVRf
V1JBUF9TT1VSQ0VMSVNUKCR7UEFMX1NPVVJDRVN9KQorV0VCS0lUX0ZSQU1FV09SSyhQQUwpCisK
K2lmIChNU1ZDKQorICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgVEFSR0VUIFBBTAor
ICAgICAgICBQUkVfQlVJTEQKKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtX
RUJLSVRfTElCUkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0cy9hdXRvLXZlcnNpb24ucGwgJHtERVJJ
VkVEX1NPVVJDRVNfRElSfQorICAgICAgICBWRVJCQVRJTSkKKworICAgIGFkZF9jdXN0b21fY29t
bWFuZCgKKyAgICAgICAgVEFSR0VUIFBBTAorICAgICAgICBQT1NUX0JVSUxECisgICAgICAgIENP
TU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V0VCS0lUX0xJQlJBUklFU19ESVJ9L3Rvb2xzL3Nj
cmlwdHMvdmVyc2lvbi1zdGFtcC5wbCAke0RFUklWRURfU09VUkNFU19ESVJ9ICQ8VEFSR0VUX0ZJ
TEU6UEFMPgorICAgICAgICBWRVJCQVRJTSkKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZv
cm1FZmwuY21ha2UKaW5kZXggZTY5ZGUyOS4uNzc1YzE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCisg
ICAgY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCispCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
UGxhdGZvcm1HVEsuY21ha2UKaW5kZXggZTY5ZGUyOS4uNzc1YzE4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VS
Q0VTCisgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCispCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggZTY5ZGUyOS4uMmY5NjhlYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQ
QUxfU09VUkNFUworICAgIGNyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5
cHRvLmNwcAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtV2luLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGU2OWRlMjku
LjZmNjkxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybVdpbi5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTAsMCArMSwz
IEBACitsaXN0KEFQUEVORCBQQUxfU09VUkNFUworICAgIGNyeXB0by93aW4vQ3J5cHRvRGlnZXN0
V2luLmNwcAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oIGIvU291
cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oCmluZGV4IGU2OWRlMjkuLjU0ODhjODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Y29uZmlnLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
ZiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICYmIEhBVkVfQ09ORklHX0ggJiYgZGVmaW5lZChCVUlM
RElOR19XSVRIX0NNQUtFKQorI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCisjZW5kaWYKKworI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgor
CisjaWZkZWYgX19BUFBMRV9fCisjZGVmaW5lIEhBVkVfRlVOQ19VU0xFRVAgMQorI2VuZGlmIC8q
IF9fQVBQTEVfXyAqLworCisjaWYgT1MoV0lORE9XUykKKworI2lmbmRlZiBfV0lOMzJfV0lOTlQK
KyNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4NjAxCisjZW5kaWYKKworI2lmbmRlZiBXSU5WRVIKKyNk
ZWZpbmUgV0lOVkVSIDB4MDYwMQorI2VuZGlmCisKKyNlbmRpZiAvKiBPUyhXSU5ET1dTKSAqLwor
CisjaWZkZWYgX19jcGx1c3BsdXMKKworLy8gVGhlc2UgdW5kZWZzIG1hdGNoIHVwIHdpdGggZGVm
aW5lcyBpbiBXZWJDb3JlUHJlZml4LmggZm9yIE1hYyBPUyBYLgorLy8gSGVscHMgdXMgY2F0Y2gg
aWYgYW55b25lIHVzZXMgbmV3IG9yIGRlbGV0ZSBieSBhY2NpZGVudCBpbiBjb2RlIGFuZCBkb2Vz
bid0IGluY2x1ZGUgImNvbmZpZy5oIi4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNs
dWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCisjaW5jbHVkZSA8Y2lzbzY0Nj4KKworI2VuZGlmCisK
KyNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8v
Q3J5cHRvRGlnZXN0LmgKaW5kZXggMzFmMDc1YS4uZjUxODg5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7CituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwgewogCiBzdHJ1Y3QgQ3J5
cHRvRGlnZXN0Q29udGV4dDsKIApAQCAtNTUsNiArNTUsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBtX2NvbnRleHQ7CiB9OwogCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTAogCiAjZW5kaWYg
Ly8gQ3J5cHRvRGlnZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8v
Y29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCmlu
ZGV4IGUzZmZjNTYuLmM3ZTc2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlw
dG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRv
LmNwcApAQCAtMjgsNyArMjgsNyBAQAogCiAjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNy
eXB0by5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVz
cGFjZSBQQUwgewogCiBzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CiAgICAgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOwpAQCAtMTc2LDQgKzE3Niw0IEBAIFZlY3Rvcjx1aW50
OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0
R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2Vz
dEdDcnlwdC5jcHAKaW5kZXggMGEzYzhiZi4uNzM5ZTM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUEFML2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCkBAIC0y
OSw3ICsyOSw3IEBACiAKICNpbmNsdWRlIDxnY3J5cHQuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUg
eworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsKIAogc3RydWN0IENyeXB0b0Rp
Z2VzdENvbnRleHQgewogICAgIGludCBhbGdvcml0aG07CkBAIC05NCw0ICs5NCw0IEBAIFZlY3Rv
cjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2Vz
dEdudVRMUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdl
c3RHbnVUTFMuY3BwCmluZGV4IDg5YTVkODEuLjBlODY1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcApAQCAt
MjksNyArMjksNyBAQAogI2luY2x1ZGUgPGdudXRscy9nbnV0bHMuaD4KICNpbmNsdWRlIDxnbnV0
bHMvY3J5cHRvLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsg
bmFtZXNwYWNlIFBBTCB7CiAKIHN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKICAgICBnbnV0
bHNfZGlnZXN0X2FsZ29yaXRobV90IGFsZ29yaXRobTsKQEAgLTk5LDQgKzk5LDQgQEAgVmVjdG9y
PHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6
UEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL3dpbi9DcnlwdG9EaWdl
c3RXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2lu
LmNwcAppbmRleCA3NmNjMTkyLi5jZTcxMzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKQEAgLTI2LDkgKzI2LDEwIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAKKyNpbmNsdWRlIDx3
aW5kb3dzLmg+CiAjaW5jbHVkZSA8d2luY3J5cHQuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsKIAogc3RydWN0IENyeXB0b0RpZ2Vz
dENvbnRleHQgewogICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKQEAgLTEw
MCw0ICsxMDEsNCBAQCBWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorfSB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlOjpQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZjNh
ZTg5Yi4uMWYwZTEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTY5LDggKzY5LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9lZmwv
QXVkaW9CdXNFZmwuY3BwCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2Vz
dEdDcnlwdC5jcHAKLQogICAgIHBsYXRmb3JtL2VmbC9DdXJzb3JFZmwuY3BwCiAgICAgcGxhdGZv
cm0vZWZsL0RyYWdEYXRhRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9EcmFnSW1hZ2VFZmwuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDYyNDIxNjIuLmIxYzZlNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02OCw4ICs2OCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogCiAgICAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1c0dMaWIuY3BwCiAKLSAg
ICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKLQogICAgIHBs
YXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCiAKICAgICBwbGF0Zm9ybS9nZW9j
bHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlMS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UKaW5kZXggNGZkZjJmNC4uNzg4NjM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAg
LTMzNCw4ICszMzQsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9y
bS9jb2NvYS9WTm9kZVRyYWNrZXJDb2NvYS5jcHAKICAgICBwbGF0Zm9ybS9jb2NvYS9XZWJDb3Jl
TlNFcnJvckV4dHJhcy5tbQogCi0gICAgcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9Dcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCi0KICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkLmNwcAogICAgIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5j
cHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCAwMWRhOTA2Li5kOWMwNjRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtNzQsOCArNzQsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAog
Ci0gICAgcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCi0KICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCiAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcAppbmRleCAwYzhk
ZmRkLi4yMTBkOThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYg
RU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0
b0FsZ29yaXRobVNIQTE6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRo
bVNIQTE6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYm
IGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBh
dXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewog
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVj
dG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWwKIAogRXhjZXB0aW9u
T3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwg
VmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
KQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8xKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0
OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwogICAgIGlmICgh
ZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTIyNC5jcHAKaW5kZXggNmNhMWFlZS4uYmU0NDE5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEyMjQuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykK
IAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0
by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3
IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjppZGVu
dGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0
b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRp
b25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0
b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBh
dXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzIyNCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0
aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2
NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+
JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0
b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNE
ZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1
dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yMjQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKICAgICBpZiAoIWRpZ2VzdCkg
ewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTI1Ni5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1TSEEyNTYuY3BwCmluZGV4IDczNjYwZjUuLjZmODE2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNw
cApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNs
dWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRv
RGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6aWRlbnRpZmllcigp
IGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4
X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdl
c3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yNTYpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3Nh
Z2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0
aG1TSEEyNTY6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAg
ICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
LmNwcAppbmRleCBjOTc3NTJkLi5kZTExNTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKQEAgLTI4
LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5
cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmlkZW50aWZpZXIoKSBjb25zdAog
CiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1l
c3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhj
ZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1
ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUo
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFM
OjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
Mzg0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVy
YXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlw
dG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0
b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAg
YXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8zODQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1
cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKaW5k
ZXggMzNlNDgzZC4uMzY1ODkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCkBAIC0yOCw5ICsyOCw5
IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2Vz
dC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBD
cnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBW
ZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNh
bGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtR
dWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRv
RGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CiAg
ICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJy
b3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtU0hBNTEyOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJh
Y2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOworICAgIGF1dG8gZGln
ZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfNTEyKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJh
Y2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5j
cHAKaW5kZXggZjZhYjdhMi4uN2ZjZjVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1h
Yy5jcHAKQEAgLTMwLDI2ICszMCwyNiBAQAogCiAjaW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZC5o
IgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDxDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1
bmN0aW9uKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1
bmN0aW9uKQogewogICAgIHN3aXRjaCAoaGFzaEZ1bmN0aW9uKSB7CiAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMTsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8xOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIy
NDoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OworICAg
ICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMzg0OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMzg0OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoK
LSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAgICAg
ICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KQEAgLTY2LDcgKzY2LDcg
QEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gc2lnblJTQVNTQV9QS0NTMV92
MV81KENyeXB0b0FsZ29yaXRobUlkZW50aWYKICAgICBhdXRvIGNyeXB0b0RpZ2VzdEFsZ29yaXRo
bSA9IFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNoKTsKICAgICBpZiAoIWNyeXB0
b0RpZ2VzdEFsZ29yaXRobSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVy
cm9yIH07Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGln
ZXN0QWxnb3JpdGhtKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVh
dGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CiAgICAgaWYgKCFkaWdlc3QpCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIGRpZ2VzdC0+YWRkQnl0ZXMo
ZGF0YSwgZGF0YUxlbmd0aCk7CkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxi
b29sPiB2ZXJpZnlSU0FTU0FfUEtDUzFfdjFfNShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhh
c2gsCiAgICAgYXV0byBjcnlwdG9EaWdlc3RBbGdvcml0aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdl
c3RBbGdvcml0aG0oaGFzaCk7CiAgICAgaWYgKCFjcnlwdG9EaWdlc3RBbGdvcml0aG0pCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotICAgIGF1dG8gZGlnZXN0
ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CisgICAgYXV0
byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0
aG0pOwogICAgIGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IgfTsKICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZGY5
NjFlMC4uOGJkYWE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5o
IgogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgotI2luY2x1ZGUg
IkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkRPTUVkaXRvci5oIgogI2luY2x1ZGUgIkRPTVBh
dGNoU3VwcG9ydC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAtOTcsNiArOTYsNyBAQAog
I2luY2x1ZGUgPGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNs
dWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBzdGF0
aWMgU3RyaW5nIGNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCiAgICAgVGV4dEVuY29kaW5nIGRvY3VtZW50RW5jb2RpbmcgPSBlbGVt
ZW50LmRvY3VtZW50KCkudGV4dEVuY29kaW5nKCk7CiAgICAgY29uc3QgVGV4dEVuY29kaW5nJiBl
bmNvZGluZ1RvVXNlID0gZG9jdW1lbnRFbmNvZGluZy5pc1ZhbGlkKCkgPyBkb2N1bWVudEVuY29k
aW5nIDogVVRGOEVuY29kaW5nKCk7CiAgICAgQ1N0cmluZyBjb250ZW50ID0gZW5jb2RpbmdUb1Vz
ZS5lbmNvZGUoVGV4dE5vZGVUcmF2ZXJzYWw6OmNvbnRlbnRzQXNTdHJpbmcoZWxlbWVudCksIEVu
dGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IENyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRv
IGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgY3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250
ZW50LmRhdGEoKSwgY29udGVudC5sZW5ndGgoKSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRpZ2Vz
dCA9IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKICAgICByZXR1cm4gbWFrZVN0cmluZygi
c2hhMjU2LSIsIGJhc2U2NEVuY29kZShkaWdlc3QuZGF0YSgpLCBkaWdlc3Quc2l6ZSgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApp
bmRleCBmMDU5YjYwLi5iZTYzZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3Nw
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJD
b250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5U291cmNlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5o
IgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC01
Nyw2ICs1Niw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGln
ZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAt
MzAxLDE4ICszMDEsMTggQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbFBvbGljaWVz
QWxsb3coVmlvbGF0ZWREaXJlY3RpdmVDYWxsYmFjayYmIGNhbGxiYWMKICAgICByZXR1cm4gaXNB
bGxvd2VkOwogfQogCi1zdGF0aWMgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdl
c3RBbGdvcml0aG0oQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0aG0p
CitzdGF0aWMgUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSB0b0NyeXB0b0RpZ2VzdEFsZ29y
aXRobShDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtIGFsZ29yaXRobSkKIHsKICAg
ICBzd2l0Y2ggKGFsZ29yaXRobSkgewogICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFz
aEFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMjU2OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1NjsKICAgICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06
OlNIQV8zODQ6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4
NDsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7
CiAgICAgY2FzZSBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfNTEyOgot
ICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgICAg
IHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV81MTI7CisgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV81MTI7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4KQEAgLTMzMyw3ICszMzMs
NyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okhhc2hJbkVuZm9yY2VkQW5kUmVwb3J0T25seVBv
bGljaWVzUGFpciBDb250ZW50U2VjdXJpdHlQbwogICAgIGJvb2wgZm91bmRIYXNoSW5FbmZvcmNl
ZFBvbGljaWVzID0gZmFsc2U7CiAgICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9ubHlQb2xpY2ll
cyA9IGZhbHNlOwogICAgIGZvciAoYXV0byBhbGdvcml0aG0gOiBhbGdvcml0aG1zKSB7Ci0gICAg
ICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdl
c3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7CisgICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFM
OjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0p
KTsKICAgICAgICAgY3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250ZW50Q1N0cmluZy5kYXRhKCks
IGNvbnRlbnRDU3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5
SGFzaCBoYXNoID0geyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9Owog
ICAgICAgICBpZiAoIWZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyAmJiBhbGxQb2xpY2llc1dp
dGhEaXNwb3NpdGlvbkFsbG93KENvbnRlbnRTZWN1cml0eVBvbGljeTo6RGlzcG9zaXRpb246OkVu
Zm9yY2UsIHN0ZDo6Zm9yd2FyZDxQcmVkaWNhdGU+KHByZWRpY2F0ZSksIGhhc2gpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdv
cmtTZXNzaW9uLmNwcAppbmRleCBjMzQ1NTdkLi42ZjFmY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9u
LmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCIKICNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0
LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtNDMsNiArNDIsNyBAQAogI2luY2x1ZGUgPHd0Zi90
ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9EaWdl
c3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGlmICghY2VydGlmaWNhdGVEYXRhKQogICAgICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCi0gICAgICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
Nik7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoY2VydGlmaWNhdGVEYXRhLT5kYXRhLCBjZXJ0
aWZpY2F0ZURhdGEtPmxlbik7CiAKICAgICAgICAgYXV0byBoYXNoID0gZGlnZXN0LT5jb21wdXRl
SGFzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlIGIvU291cmNl
L2NtYWtlL1dlYktpdEZTLmNtYWtlCmluZGV4IDI5YTA5NjkuLjUxMzBmZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RlMu
Y21ha2UKQEAgLTEwLDYgKzEwLDkgQEAgZW5kaWYgKCkKIGlmIChOT1QgV0VCQ09SRV9ESVIpCiAg
ICAgc2V0KFdFQkNPUkVfRElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJDb3JlIikK
IGVuZGlmICgpCitpZiAoTk9UIFBBTF9ESVIpCisgICAgc2V0KFBBTF9ESVIgIiR7Q01BS0VfU09V
UkNFX0RJUn0vU291cmNlL1dlYkNvcmUvUEFMIikKK2VuZGlmICgpCiBpZiAoTk9UIFdFQktJVF9E
SVIpCiAgICAgc2V0KFdFQktJVF9ESVIgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlL1dlYktp
dCIpCiBlbmRpZiAoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298420</attachid>
            <date>2017-01-09 17:00:29 -0800</date>
            <delta_ts>2017-01-10 00:27:33 -0800</delta_ts>
            <desc>First stab at the PAL layer</desc>
            <filename>bug143358.diff</filename>
            <type>text/plain</type>
            <size>31508</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggNzlhMTdi
YS4uN2FjOWQ4YyAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50
eHQKQEAgLTExNSw2ICsxMTUsNyBAQCBlbHNlICgpCiAgICAgc2V0KFdlYkNvcmVfTElCUkFSWV9U
WVBFIFNUQVRJQykKIGVuZGlmICgpCiAKK3NldChQQUxfTElCUkFSWV9UWVBFIFNUQVRJQykKIHNl
dChXZWJLaXRfTElCUkFSWV9UWVBFIFNIQVJFRCkKIHNldChXZWJLaXQyX0xJQlJBUllfVFlQRSBT
SEFSRUQpCiBzZXQoV2ViQ29yZVRlc3RTdXBwb3J0X0xJQlJBUllfVFlQRSBTVEFUSUMpCmRpZmYg
LS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTRmNjQ3MS4uNjEyMDY4YiAxMDA2
NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE3
LTAxLTA5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAYW0uc29ueS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFNvdXJjZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvV2ViS2l0RlMuY21ha2U6CisKKzIwMTctMDEtMDkgIERvbiBPbG1zdGVhZCAgPGRvbi5v
bG1zdGVhZEBhbS5zb255LmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0g
QWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU291cmNlL0NNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZToKKworMjAx
Ny0wMS0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQGFtLnNvbnkuY29tPgorCisgICAg
ICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0cmFjdGlvbiBMYXllciAoUEFMKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMzU4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2UvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU291cmNl
L2NtYWtlL1dlYktpdEZTLmNtYWtlOgorCisyMDE3LTAxLTA5ICBEb24gT2xtc3RlYWQgIDxkb24u
b2xtc3RlYWRAYW0uc29ueS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhlIFBsYXRmb3Jt
IEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2U6CisKIDIw
MTYtMTItMjEgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAg
ICAgIHNldCBQWVRIT05QQVRIIGluIHNlcGFyYXRlIENPTU1BTkQgZG9lc24ndCB3b3JrIHdpdGgg
YWxsIENNYWtlIGdlbmVyYXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxYjhhMmRjLi4xNWZkZjIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0NNYWtlTGlzdHMudHh0CkBAIC00
Niw2ICs0Niw3IEBAIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV1RGICR7QURESVRJ
T05BTF9DT01QSUxFUl9GTEFHU30pCiBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKEph
dmFTY3JpcHRDb3JlICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAKIGlmIChFTkFCTEVf
V0VCQ09SRSkKKyAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFBBTCAke0FERElU
SU9OQUxfQ09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxB
R1MoV2ViQ29yZVRlc3RTdXBwb3J0ICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAgICAg
V0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhXZWJDb3JlICR7QURESVRJT05BTF9DT01Q
SUxFUl9GTEFHU30pCiAgICAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhXZWJDb3Jl
RGVyaXZlZFNvdXJjZXMgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggNmViMzE0Ni4uYTlmODdiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEs
NiArMSw3IEBACiBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44LjEyKQogaW5jbHVk
ZShXZWJLaXRDb21tb24pCiBzZXRfcHJvcGVydHkoRElSRUNUT1JZIC4gUFJPUEVSVFkgRk9MREVS
ICJXZWJDb3JlIikKK2FkZF9zdWJkaXJlY3RvcnkoUEFMKQogCiBzZXQoV2ViQ29yZV9JTkNMVURF
X0RJUkVDVE9SSUVTCiAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0iCkBAIC0yOTUyLDYgKzI5NTMs
NyBAQCBzZXQoV2ViQ29yZV9QTFVHX0lOU19SRVNPVVJDRVMKIHNldChXZWJDb3JlX0xJQlJBUklF
UwogICAgICR7SUNVX0xJQlJBUklFU30KICAgICBKYXZhU2NyaXB0Q29yZSR7REVCVUdfU1VGRklY
fQorICAgIFBBTAogKQogCiBpZiAoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNmRiYjVjNC4uMDQxYTEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisy
MDE3LTAxLTA5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAYW0uc29ueS5jb20+CisKKyAg
ICAgICAgSW50cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIFBBTC9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRm
b3JtRWZsLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvUGxhdGZvcm1HVEsuY21ha2U6IEFk
ZGVkLgorICAgICAgICAqIFBBTC9QbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQuCisgICAgICAgICog
UEFML1BsYXRmb3JtV2luLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvY29uZmlnLmg6IEFk
ZGVkLgorICAgICAgICAqIFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmguCisgICAgICAgICog
UEFML2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDogUmVu
YW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5
cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6dG9TSEEx
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OnRvU0hBMjI0Q29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpQQUw6OnRvU0hBMjU2Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQ
QUw6OnRvU0hBMzg0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OnRvU0hBNTEyQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlBBTDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCk6CisgICAgICAgICogUEFML2NyeXB0by9n
Y3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcC4KKyAgICAgICAg
KFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNy
eXB0b0RpZ2VzdDo6YWRkQnl0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdl
c3Q6OmNvbXB1dGVIYXNoKToKKyAgICAgICAgKiBQQUwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdl
c3RHbnVUTFMuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRv
L2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwLgorICAgICAgICAoV2ViQ29yZTo6UEFMOjpD
cnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0
b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0OjphZGRC
eXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gp
OgorICAgICAgICAqIFBBTC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5j
cHAuCisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBB
TDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCk6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21h
a2U6CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1NYWMu
Y21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1TSEEyMjQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjU2LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTI1
Njo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEzODQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdl
c3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdCk6Cisg
ICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOgorICAgICAgICAo
V2ViQ29yZTo6c2lnblJTQVNTQV9QS0NTMV92MV81KToKKyAgICAgICAgKFdlYkNvcmU6OnZlcmlm
eVJTQVNTQV9QS0NTMV92MV81KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUNvbnRlbnRTZWN1cml0eVBvbGljeVNI
QTI1Nkhhc2gpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2ll
cyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIb3N0VExTQ2VydGlmaWNhdGVTZXQ6OmNvbXB1dGVDZXJ0
aWZpY2F0ZUhhc2gpOgorCiAyMDE3LTAxLTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gRHJvcCBWTm9kZVRyYWNrZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DTWFrZUxp
c3RzLnR4dAppbmRleCBlNjlkZTI5Li44MDhhNDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NNYWtlTGlzdHMu
dHh0CkBAIC0wLDAgKzEsMzAgQEAKK3NldChQQUxfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICIk
e1BBTF9ESVJ9IgorICAgICIke1BBTF9ESVJ9L2NyeXB0byIKKykKKworc2V0KFBBTF9TT1VSQ0VT
CispCisKK3NldChQQUxfTElCUkFSSUVTCisgICAgV1RGCispCisKK1dFQktJVF9JTkNMVURFX0NP
TkZJR19GSUxFU19JRl9FWElTVFMoKQorCitXRUJLSVRfV1JBUF9TT1VSQ0VMSVNUKCR7UEFMX1NP
VVJDRVN9KQorV0VCS0lUX0ZSQU1FV09SSyhQQUwpCisKK2lmIChNU1ZDKQorICAgIGFkZF9jdXN0
b21fY29tbWFuZCgKKyAgICAgICAgVEFSR0VUIFBBTAorICAgICAgICBQUkVfQlVJTEQKKyAgICAg
ICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVRfTElCUkFSSUVTX0RJUn0vdG9v
bHMvc2NyaXB0cy9hdXRvLXZlcnNpb24ucGwgJHtERVJJVkVEX1NPVVJDRVNfRElSfQorICAgICAg
ICBWRVJCQVRJTSkKKworICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgVEFSR0VUIFBB
TAorICAgICAgICBQT1NUX0JVSUxECisgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9
ICR7V0VCS0lUX0xJQlJBUklFU19ESVJ9L3Rvb2xzL3NjcmlwdHMvdmVyc2lvbi1zdGFtcC5wbCAk
e0RFUklWRURfU09VUkNFU19ESVJ9ICQ8VEFSR0VUX0ZJTEU6UEFMPgorICAgICAgICBWRVJCQVRJ
TSkKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1FZmwu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZTY5ZGUy
OS4uNzc1YzE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtRWZsLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMCwwICsx
LDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCisgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9E
aWdlc3RHQ3J5cHQuY3BwCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZv
cm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXgg
ZTY5ZGUyOS4uNzc1YzE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAt
MCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCisgICAgY3J5cHRvL2djcnlwdC9D
cnlwdG9EaWdlc3RHQ3J5cHQuY3BwCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggZTY5ZGUyOS4uMmY5NjhlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9Q
bGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1NYWMuY21h
a2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQQUxfU09VUkNFUworICAgIGNyeXB0by9j
b21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAorKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFM
L1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGU2OWRlMjkuLjZmNjkxOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQQUxfU09V
UkNFUworICAgIGNyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAorKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oIGIvU291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5o
CmluZGV4IGU2OWRlMjkuLjU0ODhjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9j
b25maWcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmgKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ09ORklHX0gp
ICYmIEhBVkVfQ09ORklHX0ggJiYgZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQorI2luY2x1
ZGUgImNtYWtlY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgor
CisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgorCisjaWZkZWYgX19BUFBMRV9fCisjZGVm
aW5lIEhBVkVfRlVOQ19VU0xFRVAgMQorI2VuZGlmIC8qIF9fQVBQTEVfXyAqLworCisjaWYgT1Mo
V0lORE9XUykKKworI2lmbmRlZiBfV0lOMzJfV0lOTlQKKyNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4
NjAxCisjZW5kaWYKKworI2lmbmRlZiBXSU5WRVIKKyNkZWZpbmUgV0lOVkVSIDB4MDYwMQorI2Vu
ZGlmCisKKyNlbmRpZiAvKiBPUyhXSU5ET1dTKSAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKKwor
Ly8gVGhlc2UgdW5kZWZzIG1hdGNoIHVwIHdpdGggZGVmaW5lcyBpbiBXZWJDb3JlUHJlZml4Lmgg
Zm9yIE1hYyBPUyBYLgorLy8gSGVscHMgdXMgY2F0Y2ggaWYgYW55b25lIHVzZXMgbmV3IG9yIGRl
bGV0ZSBieSBhY2NpZGVudCBpbiBjb2RlIGFuZCBkb2Vzbid0IGluY2x1ZGUgImNvbmZpZy5oIi4K
KyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgor
CisjaW5jbHVkZSA8Y2lzbzY0Nj4KKworI2VuZGlmCisKKyNpbmNsdWRlIDx3dGYvRGlzYWxsb3dD
VHlwZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9DcnlwdG9EaWdl
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKaW5kZXggMzFm
MDc1YS4uZjUxODg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9Dcnlw
dG9EaWdlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5o
CkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViQ29y
ZSB7IG5hbWVzcGFjZSBQQUwgewogCiBzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dDsKIApAQCAt
NTUsNiArNTUsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RD
b250ZXh0PiBtX2NvbnRleHQ7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmU6OlBBTAogCiAjZW5kaWYgLy8gQ3J5cHRvRGlnZXN0X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2Vz
dENvbW1vbkNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL2NvbW1vbmNyeXB0
by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCmluZGV4IGUzZmZjNTYuLmM3ZTc2NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0Rp
Z2VzdENvbW1vbkNyeXB0by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9jb21t
b25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcApAQCAtMjgsNyArMjgsNyBAQAog
CiAjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7CituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwgewogCiBzdHJ1Y3QgQ3J5
cHRvRGlnZXN0Q29udGV4dCB7CiAgICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGht
OwpAQCAtMTc2LDQgKzE3Niw0IEBAIFZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1
dGVIYXNoKCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKaW5kZXggMGEzYzhi
Zi4uZDM3ZmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nY3J5cHQv
Q3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL2dj
cnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpbmNsdWRl
IDxnY3J5cHQuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFdlYkNvcmUgeyBu
YW1lc3BhY2UgUEFMIHsKIAogc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewogICAgIGludCBh
bGdvcml0aG07CkBAIC05NCw0ICs5NCw0IEBAIFZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6
OmNvbXB1dGVIYXNoKCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKaW5kZXgg
ODlhNWQ4MS4uMGU4NjVlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9n
bnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5
cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5j
bHVkZSA8Z251dGxzL2dudXRscy5oPgogI2luY2x1ZGUgPGdudXRscy9jcnlwdG8uaD4KIAotbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsKIAog
c3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewogICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGht
X3QgYWxnb3JpdGhtOwpAQCAtOTksNCArOTksNCBAQCBWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGln
ZXN0Ojpjb21wdXRlSGFzaCgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorfSB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpQQUwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCmluZGV4IDc2Y2MxOTIu
LmNlNzEzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vd2luL0NyeXB0
b0RpZ2VzdFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by93aW4vQ3J5cHRv
RGlnZXN0V2luLmNwcApAQCAtMjYsOSArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKIAorI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRl
IDx3aW5jcnlwdC5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgV2ViQ29yZSB7
IG5hbWVzcGFjZSBQQUwgewogCiBzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CiAgICAgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOwpAQCAtMTAwLDQgKzEwMSw0IEBAIFZlY3Rv
cjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6
OlBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBmM2FlODliLi4xZjBlMTAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNjksOCArNjksNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2F1ZGlvL2VmbC9BdWRpb0J1c0VmbC5jcHAKIAot
ICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAotCiAgICAg
cGxhdGZvcm0vZWZsL0N1cnNvckVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwu
Y3BwCiAgICAgcGxhdGZvcm0vZWZsL0RyYWdJbWFnZUVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsu
Y21ha2UKaW5kZXggNjI0MjE2Mi4uYjFjNmU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
QEAgLTY4LDggKzY4LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0
Zm9ybS9hdWRpby9nbGliL0F1ZGlvQnVzR0xpYi5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9nbGli
L0dhbWVwYWRzR2xpYi5jcHAKIAogICAgIHBsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92
aWRlckdlb2NsdWUxLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBiODEyYjljLi5j
OTQzN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzMyLDggKzMzMiw2IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2Eu
bW0KICAgICBwbGF0Zm9ybS9jb2NvYS9XZWJDb3JlTlNFcnJvckV4dHJhcy5tbQogCi0gICAgcGxh
dGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCi0K
ICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAogICAgIHBsYXRmb3JtL2dh
bWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFr
ZQppbmRleCA4ZDdmNTA4Li5hNGE5OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAt
NzMsOCArNzMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3Jt
L2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAogCi0gICAgcGxhdGZvcm0vY3J5cHRvL3dpbi9D
cnlwdG9EaWdlc3RXaW4uY3BwCi0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdM
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEExLmNwcAppbmRleCAwYzhkZmRkLi4yMTBkOThmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEx
LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNp
bmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5
cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTE6OmlkZW50aWZpZXIo
KSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChWZWN0b3I8dWludDhf
dD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFj
ayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
b3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgYXV0byBkaWdlc3Qg
PSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhP
cGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWwKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hB
MTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5
cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKKyAgICBh
dXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzEpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVD
YWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKaW5kZXgg
NmNhMWFlZS4uYmU0NDE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCkBAIC0yOCw5ICsyOCw5IEBA
CiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlw
dG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxi
YWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1
ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGln
ZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7CiAgICAg
aWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3Ip
OwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGht
U0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2sm
JiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0Ojpj
cmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOworICAgIGF1dG8gZGlnZXN0
ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjI0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2so
KTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCmluZGV4IDczNjYwZjUu
LjZmODE2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYg
RU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0
b0FsZ29yaXRobVNIQTI1Njo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0g
ICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgIGlmICghZGln
ZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6
ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBF
eGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdChjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
Nik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAg
ICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAppbmRleCBjOTc3NTJkLi5kZTExNTg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEEzODQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShT
VUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNs
dWRlIDxQQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0
aG1TSEEzODQ6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4
NDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8g
ZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8zODQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6
OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKICAgICBpZiAoIWRpZ2VzdCkgewog
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChW
ZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9u
T3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRh
LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2spCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOwogICAg
IGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1
cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKaW5kZXggMzNlNDgzZC4uMzY1ODkzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
NTEyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEE1MTIuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NS
WVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFM
L2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3
ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2Vz
dChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBF
eGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9
IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsK
KyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAg
ZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02
NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVjdG9yPHVp
bnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+
IENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewot
ICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV81MTIpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKICAgICBpZiAoIWRp
Z2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKaW5kZXggZjZhYjdhMi4uN2ZjZjVlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKQEAgLTMwLDI2ICszMCwyNiBAQAog
CiAjaW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5o
IgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0
by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RkOjpv
cHRpb25hbDxDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQoraW5saW5lIHN0ZDo6b3B0aW9u
YWw8UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQogewogICAgIHN3aXRjaCAoaGFz
aEZ1bmN0aW9uKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToK
LSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsKKyAgICAgICAg
cmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOwogICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKLSAgICAgICAgcmV0dXJuIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzI1NjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTY7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgotICAgICAg
ICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVy
biBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzUxMjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gc2lnblJTQVNTQV9QS0NTMV92MV81KENyeXB0b0FsZ29yaXRobUlkZW50aWYK
ICAgICBhdXRvIGNyeXB0b0RpZ2VzdEFsZ29yaXRobSA9IFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFs
Z29yaXRobShoYXNoKTsKICAgICBpZiAoIWNyeXB0b0RpZ2VzdEFsZ29yaXRobSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0gICAgYXV0byBkaWdlc3QgPSBD
cnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKKyAgICBhdXRvIGRp
Z2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7
CiAgICAgaWYgKCFkaWdlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OwogICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YSwgZGF0YUxlbmd0aCk7CkBAIC05Myw3
ICs5Myw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiB2ZXJpZnlSU0FTU0FfUEtDUzFfdjFf
NShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsCiAgICAgYXV0byBjcnlwdG9EaWdlc3RB
bGdvcml0aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaCk7CiAgICAgaWYg
KCFjcnlwdG9EaWdlc3RBbGdvcml0aG0pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciB9OwotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNy
eXB0b0RpZ2VzdEFsZ29yaXRobSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOwogICAgIGlmICghZGlnZXN0KQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICBkaWdlc3QtPmFk
ZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZGY5NjFlMC4uOGJkYWE5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00NSw3ICs0NSw2
IEBACiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2lu
Y2x1ZGUgIkNvb2tpZUphci5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUg
IkRPTUVkaXRvci5oIgogI2luY2x1ZGUgIkRPTVBhdGNoU3VwcG9ydC5oIgogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgpAQCAtOTcsNiArOTYsNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JZGVudGlm
aWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaD4KICNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8UEFM
L2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVDb250ZW50U2Vj
dXJpdHlQb2xpY3lTSEEyNTZIYXNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgVGV4dEVu
Y29kaW5nIGRvY3VtZW50RW5jb2RpbmcgPSBlbGVtZW50LmRvY3VtZW50KCkudGV4dEVuY29kaW5n
KCk7CiAgICAgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZ1RvVXNlID0gZG9jdW1lbnRFbmNv
ZGluZy5pc1ZhbGlkKCkgPyBkb2N1bWVudEVuY29kaW5nIDogVVRGOEVuY29kaW5nKCk7CiAgICAg
Q1N0cmluZyBjb250ZW50ID0gZW5jb2RpbmdUb1VzZS5lbmNvZGUoVGV4dE5vZGVUcmF2ZXJzYWw6
OmNvbnRlbnRzQXNTdHJpbmcoZWxlbWVudCksIEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAg
ICBhdXRvIGNyeXB0b0RpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRv
RGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAg
ICAgY3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250ZW50LmRhdGEoKSwgY29udGVudC5sZW5ndGgo
KSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRpZ2VzdCA9IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhh
c2goKTsKICAgICByZXR1cm4gbWFrZVN0cmluZygic2hhMjU2LSIsIGJhc2U2NEVuY29kZShkaWdl
c3QuZGF0YSgpLCBkaWdlc3Quc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCBmMDU5YjYwLi5iZTYzZWE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
QEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmgi
CiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmgiCiAjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5o
IgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC01Nyw2ICs1Niw3IEBACiAjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxs
U3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgor
I2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZv
clNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAtMzAxLDE4ICszMDEsMTggQEAgYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbFBvbGljaWVzQWxsb3coVmlvbGF0ZWREaXJlY3RpdmVDYWxs
YmFjayYmIGNhbGxiYWMKICAgICByZXR1cm4gaXNBbGxvd2VkOwogfQogCi1zdGF0aWMgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oQ29udGVudFNlY3VyaXR5
UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0aG0pCitzdGF0aWMgUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobSB0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShDb250ZW50U2VjdXJpdHlQb2xpY3lI
YXNoQWxnb3JpdGhtIGFsZ29yaXRobSkKIHsKICAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewogICAg
IGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAg
ICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OworICAgICAgICByZXR1
cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKICAgICBjYXNlIENvbnRl
bnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIHJldHVybiBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CiAgICAgY2FzZSBDb250ZW50U2VjdXJpdHlQ
b2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfNTEyOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgcmV0dXJuIFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFByZWRpY2F0ZT4KQEAgLTMzMyw3ICszMzMsNyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
Okhhc2hJbkVuZm9yY2VkQW5kUmVwb3J0T25seVBvbGljaWVzUGFpciBDb250ZW50U2VjdXJpdHlQ
bwogICAgIGJvb2wgZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzID0gZmFsc2U7CiAgICAgYm9v
bCBmb3VuZEhhc2hJblJlcG9ydE9ubHlQb2xpY2llcyA9IGZhbHNlOwogICAgIGZvciAoYXV0byBh
bGdvcml0aG0gOiBhbGdvcml0aG1zKSB7Ci0gICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gQ3J5
cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7Cisg
ICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0b0Ny
eXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAgICAgICAgY3J5cHRvRGlnZXN0LT5h
ZGRCeXRlcyhjb250ZW50Q1N0cmluZy5kYXRhKCksIGNvbnRlbnRDU3RyaW5nLmxlbmd0aCgpKTsK
ICAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCBoYXNoID0geyBhbGdvcml0aG0sIGNy
eXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogICAgICAgICBpZiAoIWZvdW5kSGFzaEluRW5m
b3JjZWRQb2xpY2llcyAmJiBhbGxQb2xpY2llc1dpdGhEaXNwb3NpdGlvbkFsbG93KENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6RGlzcG9zaXRpb246OkVuZm9yY2UsIHN0ZDo6Zm9yd2FyZDxQcmVkaWNh
dGU+KHByZWRpY2F0ZSksIGhhc2gpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBjMzQ1NTdk
Li42ZjFmY2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtMzEsNyArMzEsNiBAQAogCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJDb29raWVKYXJT
b3VwLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAt
NDMsNiArNDIsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+Cisj
aW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghY2VydGlmaWNhdGVE
YXRhKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgICAgIGF1dG8gZGlnZXN0
ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYp
OworICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0
ZXMoY2VydGlmaWNhdGVEYXRhLT5kYXRhLCBjZXJ0aWZpY2F0ZURhdGEtPmxlbik7CiAKICAgICAg
ICAgYXV0byBoYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L2NtYWtlL1dlYktpdEZTLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlCmluZGV4
IDI5YTA5NjkuLjUxMzBmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFr
ZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UKQEAgLTEwLDYgKzEwLDkgQEAgZW5k
aWYgKCkKIGlmIChOT1QgV0VCQ09SRV9ESVIpCiAgICAgc2V0KFdFQkNPUkVfRElSICIke0NNQUtF
X1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJDb3JlIikKIGVuZGlmICgpCitpZiAoTk9UIFBBTF9ESVIp
CisgICAgc2V0KFBBTF9ESVIgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlL1dlYkNvcmUvUEFM
IikKK2VuZGlmICgpCiBpZiAoTk9UIFdFQktJVF9ESVIpCiAgICAgc2V0KFdFQktJVF9ESVIgIiR7
Q01BS0VfU09VUkNFX0RJUn0vU291cmNlL1dlYktpdCIpCiBlbmRpZiAoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298449</attachid>
            <date>2017-01-10 00:32:27 -0800</date>
            <delta_ts>2017-01-10 12:41:39 -0800</delta_ts>
            <desc>First stab at the PAL layer</desc>
            <filename>bug-143358-20170110003049.patch</filename>
            <type>text/plain</type>
            <size>91476</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjFjODIyYjU5MzM1YjVi
M2MyYjgxYjM4MjE3NjEwOGI2YTU2NDk3Ni4uNzQ2YWE0MDU0YTZhODA4NzU0OTk5NjhkZDBiYzdj
ZDhkNTI0Y2ZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE3LTAxLTA5ICBEb24g
T2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAYW0uc29ueS5jb20+IGFuZCBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhlIFBsYXRm
b3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFBBTC9DTWFrZUxpc3RzLnR4
dDogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3JtRWZsLmNtYWtlOiBBZGRlZC4KKyAgICAg
ICAgKiBQQUwvUGxhdGZvcm1HVEsuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9QbGF0Zm9y
bU1hYy5jbWFrZTogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3JtV2luLmNtYWtlOiBBZGRl
ZC4KKyAgICAgICAgKiBQQUwvY29uZmlnLmg6IEFkZGVkLgorICAgICAgICAqIFBBTC9jcnlwdG8v
Q3J5cHRvRGlnZXN0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlw
dG8vQ3J5cHRvRGlnZXN0LmguCisgICAgICAgICogUEFML2NyeXB0by9jb21tb25jcnlwdG8vQ3J5
cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcC4K
KyAgICAgICAgKFdlYkNvcmU6OlBBTDo6dG9TSEExQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpQQUw6OnRvU0hBMjI0Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OnRvU0hBMjU2
Q29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OnRvU0hBMzg0Q29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpQQUw6OnRvU0hBNTEyQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpQ
QUw6OkNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6
Q3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5
cHRvRGlnZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6
OmFkZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRl
SGFzaCk6CisgICAgICAgICogUEFML2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5
cHRvRGlnZXN0R0NyeXB0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0
OjpDcnlwdG9EaWdlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6On5D
cnlwdG9EaWdlc3QpOgorICAgICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKToKKyAgICAgICAg
KiBQQUwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMu
Y3BwLgorICAgICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6
CisgICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpQ
QUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIFBBTC9jcnlwdG8vd2lu
L0NyeXB0b0RpZ2VzdFdpbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAuCisgICAgICAgIChXZWJDb3JlOjpQQUw6
OkNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5
cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRv
RGlnZXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UEFMOjpDcnlwdG9EaWdlc3Q6OmFk
ZEJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlBBTDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFz
aCk6CisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsu
Y21ha2U6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1X
aW4uY21ha2U6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
MS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgor
ICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdCk6CisgICAgICAg
ICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcnlw
dG9EaWdlc3RBbGdvcml0aG0pOgorICAgICAgICAoV2ViQ29yZTo6c2lnblJTQVNTQV9QS0NTMV92
MV81KToKKyAgICAgICAgKFdlYkNvcmU6OnZlcmlmeVJTQVNTQV9QS0NTMV92MV81KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29tcHV0ZUNvbnRlbnRTZWN1cml0eVBvbGljeVNIQTI1Nkhhc2gpOgorICAgICAgICAqIHBhZ2Uv
Y3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0NyeXB0
b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OmZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIb3N0
VExTQ2VydGlmaWNhdGVTZXQ6OmNvbXB1dGVDZXJ0aWZpY2F0ZUhhc2gpOgorCiAyMDE3LTAxLTA5
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEltcGxl
bWVudCBKU1NvdXJjZUNvZGUgdG8gcHJvcGFnYXRlIFNvdXJjZUNvZGUgaW4gbW9kdWxlIHBpcGVs
aW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvQ01ha2VMaXN0
cy50eHQKaW5kZXggMWI4YTJkY2I1MDRmYjU1NmFiYzVmNTgzYjc2YmUzOGQ5MmYwZmRmMS4uMTVm
ZGYyMjRhODk2NmJlMTFkY2Y2M2UyZmE4ZjU4N2EwM2U3MjY0NCAxMDA2NDQKLS0tIGEvU291cmNl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9DTWFrZUxpc3RzLnR4dApAQCAtNDYsNiArNDYs
NyBAQCBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdURiAke0FERElUSU9OQUxfQ09N
UElMRVJfRkxBR1N9KQogV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhKYXZhU2NyaXB0
Q29yZSAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogCiBpZiAoRU5BQkxFX1dFQkNPUkUp
CisgICAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhQQUwgJHtBRERJVElPTkFMX0NP
TVBJTEVSX0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNv
cmVUZXN0U3VwcG9ydCAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9T
RVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29yZSAke0FERElUSU9OQUxfQ09NUElMRVJfRkxB
R1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29yZURlcml2ZWRT
b3VyY2VzICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBjMmQ3
OGU1NTRkMjE2MTVlYWJhYTc0ZDVlY2FmMzgwMDliNTg3OGQyLi41NGJmN2NhNGViMmY5MzA1MDUx
MmMxYWMwMjYwYjAzMTc3NTZjODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTEyMTQsNyArMTIxNCw3IEBA
CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9B
TExPV0VEID49IDEwMTIwMSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEw
MTIwMAotI2RlZmluZSBIQVZFX1RPVUNIX0JBUiAxCisjZGVmaW5lIEhBVkVfVE9VQ0hfQkFSIDAK
ICNkZWZpbmUgSEFWRV9BRFZBTkNFRF9TUEVMTF9DSEVDS0lORyAxCiAKICNpZiBkZWZpbmVkKF9f
TFA2NF9fKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2ZWIzMTQ2OTlhYmQ1MTQ5YTlkNGI1ZmY5
ZTkxNjg1ODY1NDk4MTNkLi5hOWY4N2JiN2IwYjliOWQ0ZWE3YzcxZmFmNjk5MmU3YjA3OGYwODZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMSw2ICsxLDcgQEAKIGNtYWtlX21pbmltdW1fcmVx
dWlyZWQoVkVSU0lPTiAyLjguMTIpCiBpbmNsdWRlKFdlYktpdENvbW1vbikKIHNldF9wcm9wZXJ0
eShESVJFQ1RPUlkgLiBQUk9QRVJUWSBGT0xERVIgIldlYkNvcmUiKQorYWRkX3N1YmRpcmVjdG9y
eShQQUwpCiAKIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtDTUFLRV9C
SU5BUllfRElSfSIKQEAgLTI5NTIsNiArMjk1Myw3IEBAIHNldChXZWJDb3JlX1BMVUdfSU5TX1JF
U09VUkNFUwogc2V0KFdlYkNvcmVfTElCUkFSSUVTCiAgICAgJHtJQ1VfTElCUkFSSUVTfQogICAg
IEphdmFTY3JpcHRDb3JlJHtERUJVR19TVUZGSVh9CisgICAgUEFMCiApCiAKIGlmIChFTkFCTEVf
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL1BBTC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1BB
TC54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWJhMmVkMDYyZGU5NDFiOTY5MDJjYTQ0Y2VhYTFjMGU0
NzE3OTcyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMv
UEFMLnhjY29uZmlnCkBAIC0wLDAgKzEsMzYgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKworI2luY2x1ZGUgIldlYkNvcmUueGNjb25maWciCisKK0lOU1RBTExfUEFUSCA9
ICQoSU5TVEFMTF9QQVRIXyQoQ09ORklHVVJBVElPTikpOworSU5TVEFMTF9QQVRIX1Byb2R1Y3Rp
b24gPSAvdXNyL2xvY2FsL2xpYjsKKworU0tJUF9JTlNUQUxMID0gJChTS0lQX0lOU1RBTExfJChG
T1JDRV9UT09MX0lOU1RBTEwpKTsKK1NLSVBfSU5TVEFMTF8gPSBZRVM7CitTS0lQX0lOU1RBTExf
Tk8gPSBZRVM7CitTS0lQX0lOU1RBTExfWUVTID0gTk87CisKK1BST0RVQ1RfTkFNRSA9IFBBTDsK
K0VYRUNVVEFCTEVfUFJFRklYID0gbGliOworRVhQT1JURURfU1lNQk9MU19GSUxFID0gOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZyBi
L1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKaW5kZXggYzQ4
OGY4MDRmZmIwMDY3NGJiZTk4YTFkMjg1NmIzNjBkYWMwYzhhMy4uNTlmMzhlNTBjYjgzZWY0Yzg5
NWQwNTEwNDgzOGJkOTU0NzZjYzFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmln
dXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0
aW9ucy9XZWJDb3JlLnhjY29uZmlnCkBAIC00Niw3ICs0Niw3IEBAIE9USEVSX0NQTFVTUExVU0ZM
QUdTID0gJChPVEhFUl9DRkxBR1MpOwogCiBXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9Q
QVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRp
dGlvbnMgJChTREtST09UKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnM7CiAKLUhF
QURFUl9TRUFSQ0hfUEFUSFMgPSBGb3J3YXJkaW5nSGVhZGVycyBpY3UgL3Vzci9pbmNsdWRlL2xp
YnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRl
IiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKEhFQURFUl9TRUFSQ0hf
UEFUSFMpOworSEVBREVSX1NFQVJDSF9QQVRIUyA9IEZvcndhcmRpbmdIZWFkZXJzIGljdSAkKFNS
Q1JPT1QpIC91c3IvaW5jbHVkZS9saWJ4c2x0IC91c3IvaW5jbHVkZS9saWJ4bWwyICIkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZSIgIiQoQlVJTFRfUFJPRFVDVFNf
RElSKS91c3IvbG9jYWwvaW5jbHVkZSIgJChXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9Q
QVRIUykgJChIRUFERVJfU0VBUkNIX1BBVEhTKTsKIElORk9QTElTVF9GSUxFID0gSW5mby5wbGlz
dDsKIElOU1RBTExfUEFUSCA9ICQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3Jr
czsKIElOU1RBTExfUEFUSFtzZGs9bWFjb3N4Kl0gPSAkKFdFQkNPUkVfRlJBTUVXT1JLU19ESVIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L1dlYkNvcmUvUEFML0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwOGE0NTNhNzA1YjZlNjIw
MWJkOTk2Njg0NjU4NTA2NjA2NTcxODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ01ha2VMaXN0cy50eHQKQEAgLTAsMCArMSwzMCBAQAorc2V0KFBBTF9JTkNMVURFX0RJ
UkVDVE9SSUVTCisgICAgIiR7UEFMX0RJUn0iCisgICAgIiR7UEFMX0RJUn0vY3J5cHRvIgorKQor
CitzZXQoUEFMX1NPVVJDRVMKKykKKworc2V0KFBBTF9MSUJSQVJJRVMKKyAgICBXVEYKKykKKwor
V0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCisKK1dFQktJVF9XUkFQX1NP
VVJDRUxJU1QoJHtQQUxfU09VUkNFU30pCitXRUJLSVRfRlJBTUVXT1JLKFBBTCkKKworaWYgKE1T
VkMpCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAgICAg
IFBSRV9CVUlMRAorICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVF9M
SUJSQVJJRVNfRElSfS90b29scy9zY3JpcHRzL2F1dG8tdmVyc2lvbi5wbCAke0RFUklWRURfU09V
UkNFU19ESVJ9CisgICAgICAgIFZFUkJBVElNKQorCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAor
ICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBPU1RfQlVJTEQKKyAgICAgICAgQ09NTUFORCAk
e1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVRfTElCUkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0cy92
ZXJzaW9uLXN0YW1wLnBsICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0gJDxUQVJHRVRfRklMRTpQQUw+
CisgICAgICAgIFZFUkJBVElNKQorZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUVmbC5j
bWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NzVjMTg5ODRhZTg5YjljZWFhYjI1YjU3ZmRhMDZhMWExNWZjNjNi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtRWZsLmNtYWtl
CkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2Ny
eXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUdUSy5j
bWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NzVjMTg5ODRhZTg5YjljZWFhYjI1YjU3ZmRhMDZhMWExNWZjNjNi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtR1RLLmNtYWtl
CkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2Ny
eXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybU1hYy5j
bWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yZjk2OGVjNGQ5OGU0MWY3MzcyOTBmOGY0ZjI4Zjc0ZjZhMmU2MWY4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtTWFjLmNtYWtl
CkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vY29t
bW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKKykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Q
bGF0Zm9ybVdpbi5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjY5MTlmNzZmMTA4ZjcyZWM4ODdhMWI3MzUw
NzgxNzIyYTI1OGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRm
b3JtV2luLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAg
ICBjcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9jb25maWcuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41NDg4YzgwYWRmNmMxMWY2YzMwODIwM2E4ZTcyZWE0ODM2ODZmM2Y0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWYgZGVmaW5lZChIQVZFX0NPTkZJR19IKSAmJiBI
QVZFX0NPTkZJR19IICYmIGRlZmluZWQoQlVJTERJTkdfV0lUSF9DTUFLRSkKKyNpbmNsdWRlICJj
bWFrZWNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lu
Y2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKworI2lmZGVmIF9fQVBQTEVfXworI2RlZmluZSBI
QVZFX0ZVTkNfVVNMRUVQIDEKKyNlbmRpZiAvKiBfX0FQUExFX18gKi8KKworI2lmIE9TKFdJTkRP
V1MpCisKKyNpZm5kZWYgX1dJTjMyX1dJTk5UCisjZGVmaW5lIF9XSU4zMl9XSU5OVCAweDYwMQor
I2VuZGlmCisKKyNpZm5kZWYgV0lOVkVSCisjZGVmaW5lIFdJTlZFUiAweDA2MDEKKyNlbmRpZgor
CisjZW5kaWYgLyogT1MoV0lORE9XUykgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKy8vIFRo
ZXNlIHVuZGVmcyBtYXRjaCB1cCB3aXRoIGRlZmluZXMgaW4gV2ViQ29yZVByZWZpeC5oIGZvciBN
YWMgT1MgWC4KKy8vIEhlbHBzIHVzIGNhdGNoIGlmIGFueW9uZSB1c2VzIG5ldyBvciBkZWxldGUg
YnkgYWNjaWRlbnQgaW4gY29kZSBhbmQgZG9lc24ndCBpbmNsdWRlICJjb25maWcuaCIuCisjdW5k
ZWYgbmV3CisjdW5kZWYgZGVsZXRlCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworI2lu
Y2x1ZGUgPGNpc282NDY+CisKKyNlbmRpZgorCisjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjli
MjA4NmE1ZWVlZmIxMTNkNWFkMjE5Y2VmOGI0MTk3N2Q3NGJmYWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eyBuYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQ7CisKK2NsYXNz
IENyeXB0b0RpZ2VzdCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvRGlnZXN0KTsK
K3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7CisgICAgICAgIFNIQV8xLAorICAg
ICAgICBTSEFfMjI0LAorICAgICAgICBTSEFfMjU2LAorICAgICAgICBTSEFfMzg0LAorICAgICAg
ICBTSEFfNTEyLAorICAgIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdl
c3Q+IGNyZWF0ZShBbGdvcml0aG0pOworICAgIH5DcnlwdG9EaWdlc3QoKTsKKworICAgIHZvaWQg
YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOworICAgIFZlY3Rvcjx1
aW50OF90PiBjb21wdXRlSGFzaCgpOworCitwcml2YXRlOgorICAgIENyeXB0b0RpZ2VzdCgpOwor
CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+IG1fY29udGV4dDsKK307
CisKK30gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6UEFMCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RD
b21tb25DcnlwdG8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3ZTc2NmFhOGE1NjFiOTllNGU1N2RhOWUyNjkx
MmMzYmU4NWJlZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRv
L2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCkBAIC0wLDAgKzEsMTc5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0Rp
Z2VzdC5oIgorCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29u
dGV4dCB7CisgICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOworICAgIHZvaWQq
IGNjQ29udGV4dDsKK307CisKK2lubGluZSBDQ19TSEExX0NUWCogdG9TSEExQ29udGV4dChDcnlw
dG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0
aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q0NfU0hBMV9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NI
QTI1Nl9DVFgqIHRvU0hBMjI0Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQor
eworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yMjQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29u
dGV4dC0+Y2NDb250ZXh0KTsKK30KK2lubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTI1NkNvbnRl
eHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+
YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9Citp
bmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEEzODRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQq
IGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUx
Ml9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTUxMl9DVFgqIHRv
U0hBNTEyQ29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VS
VChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250
ZXh0KTsKK30KKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0
KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9E
aWdlc3QoKQoreworICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAgICAgICAgZGVsZXRlIHRvU0hBMUNv
bnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIGRlbGV0ZSB0b1NIQTIyNENvbnRl
eHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIGRlbGV0ZSB0b1NIQTI1NkNvbnRleHQo
bV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIGRlbGV0ZSB0b1NIQTM4NENvbnRleHQobV9j
b250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIGRlbGV0ZSB0b1NIQTUxMkNvbnRleHQobV9jb250
ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworCitzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobSBhbGdvcml0aG0pCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGln
ZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0g
PSBhbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIENDX1NIQTFfQ1RYKiBjb250ZXh0
ID0gbmV3IENDX1NIQTFfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0
ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMV9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1
cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjI0OiB7CisgICAgICAgIENDX1NIQTI1Nl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMjU2X0NU
WDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAg
ICAgIENDX1NIQTIyNF9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAg
IH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAg
IENDX1NIQTI1Nl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMjU2X0NUWDsKKyAgICAgICAgZGln
ZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTI1Nl9J
bml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7CisgICAgICAgIENDX1NIQTUxMl9DVFgq
IGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEyX0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQt
PmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTM4NF9Jbml0KGNvbnRleHQpOwor
ICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfNTEyOiB7CisgICAgICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcg
Q0NfU0hBNTEyX0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNv
bnRleHQ7CisgICAgICAgIENDX1NIQTUxMl9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4g
ZGlnZXN0OworICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhj
b25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBzd2l0Y2ggKG1fY29udGV4
dC0+YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6
CisgICAgICAgIENDX1NIQTFfVXBkYXRlKHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSwg
aW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAgICBDQ19TSEEyMjRfVXBkYXRlKHRvU0hBMjI0Q29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIENDX1NI
QTI1Nl9VcGRhdGUodG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5n
dGgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzM4NDoKKyAgICAgICAgQ0NfU0hBMzg0X1VwZGF0ZSh0b1NIQTM4NENvbnRleHQobV9jb250
ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgorICAgICAgICBDQ19TSEE1MTJfVXBkYXRl
KHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KK30KKworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29t
cHV0ZUhhc2goKQoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CisgICAgc3dpdGNoICht
X2NvbnRleHQtPmFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8xOgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTFfRElHRVNUX0xFTkdUSCk7Cisg
ICAgICAgIENDX1NIQTFfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEExQ29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzIyNDoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEyMjRfRElHRVNUX0xF
TkdUSCk7CisgICAgICAgIENDX1NIQTIyNF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTIyNENv
bnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hB
MjU2X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEEyNTZfRmluYWwocmVzdWx0LmRhdGEo
KSwgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgorICAgICAgICByZXN1bHQu
cmVzaXplKENDX1NIQTM4NF9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMzg0X0ZpbmFs
KHJlc3VsdC5kYXRhKCksIHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAg
ICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEE1MTJfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIEND
X1NIQTUxMl9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0Lmdl
dCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM3
ZmVmNGZmODJjN2RkZGFjNTkwMzhiNjRmNWViNGU2M2M5ZGFkYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAK
QEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IFNvZnRBdEhvbWUKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z2NyeXB0Lmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlwdG9E
aWdlc3RDb250ZXh0IHsKKyAgICBpbnQgYWxnb3JpdGhtOworICAgIGdjcnlfbWRfaGRfdCBtZDsK
K307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcg
Q3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0
KCkKK3sKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0Ojpj
cmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIGludCBnY3J5
cHRBbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZ
X01EX1NIQTE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yMjQ6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjI0Owor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTI1NjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAg
Z2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEzODQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIGdjcnlwdEFsZ29y
aXRobSA9IEdDUllfTURfU0hBNTEyOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAg
ZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdjcnlwdEFsZ29yaXRobTsKKworICAgIGdj
cnlfbWRfb3BlbigmZGlnZXN0LT5tX2NvbnRleHQtPm1kLCBnY3J5cHRBbGdvcml0aG0sIDApOwor
ICAgIGlmICghZGlnZXN0LT5tX2NvbnRleHQtPm1kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBkaWdlc3Q7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhj
b25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBnY3J5X21kX3dyaXRlKG1f
Y29udGV4dC0+bWQsIGlucHV0LCBsZW5ndGgpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRv
RGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgaW50IGRpZ2VzdExlbiA9IGdjcnlfbWRfZ2V0
X2FsZ29fZGxlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
c3VsdChkaWdlc3RMZW4pOworCisgICAgZ2NyeV9tZF9maW5hbChtX2NvbnRleHQtPm1kKTsKKyAg
ICBtZW1jcHkocmVzdWx0LmRhdGEoKSwgZ2NyeV9tZF9yZWFkKG1fY29udGV4dC0+bWQsIDApLCBk
aWdlc3RMZW4pOworICAgIGdjcnlfbWRfY2xvc2UobV9jb250ZXh0LT5tZCk7CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVhN2JhMTkwMTQ0ZWY1OTFlNWE4MDNiM2NhZTIzMWJjNzYwYWFiMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ251dGxzL0NyeXB0
b0RpZ2VzdEdudVRMUy5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z251
dGxzL2NyeXB0by5oPgorI2luY2x1ZGUgPGdudXRscy9nbnV0bHMuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewor
ICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgYWxnb3JpdGhtOworICAgIGdudXRsc19oYXNo
X2hkX3QgaGFzaDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1f
Y29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+
Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBnbnV0bHNfaGFzaF9kZWluaXQobV9jb250ZXh0LT5oYXNo
LCAwKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0Ojpj
cmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIGdudXRsc19k
aWdlc3RfYWxnb3JpdGhtX3QgZ251dGxzQWxnb3JpdGhtOworCisgICAgc3dpdGNoIChhbGdvcml0
aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAgICAg
ICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTE7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7CisgICAgICAg
IGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjI0OworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogeworICAgICAg
ICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTI1NjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAgICAg
ICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEzODQ7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7CisgICAg
ICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBNTEyOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0
KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBn
bnV0bHNBbGdvcml0aG07CisKKyAgICBpbnQgcmV0ID0gZ251dGxzX2hhc2hfaW5pdCgmZGlnZXN0
LT5tX2NvbnRleHQtPmhhc2gsIGdudXRsc0FsZ29yaXRobSk7CisgICAgaWYgKHJldCAhPSBHTlVU
TFNfRV9TVUNDRVNTKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBkaWdl
c3Q7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwg
c2l6ZV90IGxlbmd0aCkKK3sKKyAgICBnbnV0bHNfaGFzaChtX2NvbnRleHQtPmhhc2gsIGlucHV0
LCBsZW5ndGgpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFz
aCgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBpbnQgZGlnZXN0TGVuID0g
Z251dGxzX2hhc2hfZ2V0X2xlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7CisgICAgcmVzdWx0LnJl
c2l6ZShkaWdlc3RMZW4pOworCisgICAgZ251dGxzX2hhc2hfb3V0cHV0KG1fY29udGV4dC0+aGFz
aCwgcmVzdWx0LmRhdGEoKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0
by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vd2lu
L0NyeXB0b0RpZ2VzdFdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTY1ZTMyYzM0MzBkOWFkNzQ5Y2I5Yjll
NzhmODEzNTViMzNjOWZjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9j
cnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNp
bmNsdWRlIDx3aW5jcnlwdC5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewor
ICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKKyAgICBIQ1JZUFRQUk9WIGhD
b250ZXh0IHsgMCB9OworICAgIEhDUllQVEhBU0ggaEhhc2ggeyAwIH07Cit9OworCitDcnlwdG9E
aWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCisgICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENv
bnRleHQpCit7Cit9CisKK0NyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7CisgICAgaWYg
KEhDUllQVEhBU0ggaEhhc2ggPSBtX2NvbnRleHQtPmhIYXNoKQorICAgICAgICBDcnlwdERlc3Ry
b3lIYXNoKGhIYXNoKTsKKyAgICBpZiAoSENSWVBUUFJPViBoQ29udGV4dCA9IG1fY29udGV4dC0+
aENvbnRleHQpCisgICAgICAgIENyeXB0UmVsZWFzZUNvbnRleHQoaENvbnRleHQsIDApOworfQor
CitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShBbGdv
cml0aG0gYWxnb3JpdGhtKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRp
Z2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGht
ID0gYWxnb3JpdGhtOworICAgIGlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmZGlnZXN0LT5tX2Nv
bnRleHQtPmhDb250ZXh0LCBudWxscHRyLCBudWxscHRyIC8qIHVzZSBkZWZhdWx0IHByb3ZpZGVy
ICovLCBQUk9WX1JTQV9BRVMsIENSWVBUX1ZFUklGWUNPTlRFWFQpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICBib29sIHN1Y2NlZWRlZCA9IGZhbHNlOworICAgIHN3aXRjaCAoYWxnb3Jp
dGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKKyAgICAg
ICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4
dCwgQ0FMR19TSEExLCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6
IHsKKyAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0
LT5oQ29udGV4dCwgQ0FMR19TSEFfMjU2LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8zODQ6IHsKKyAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2Vz
dC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMzg0LCAwLCAwLCAmZGlnZXN0LT5tX2Nv
bnRleHQtPmhIYXNoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKKyAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVh
dGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfNTEyLCAwLCAwLCAm
ZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0K
KyAgICBpZiAoc3VjY2VlZGVkKQorICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIHJldHVybiBu
dWxscHRyOworfQorCit2b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5w
dXQsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKCFpbnB1dCB8fCAhbGVuZ3RoKQorICAgICAg
ICByZXR1cm47CisgICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRIYXNoRGF0YShtX2NvbnRleHQtPmhI
YXNoLCByZWludGVycHJldF9jYXN0PGNvbnN0IEJZVEUqPihpbnB1dCksIGxlbmd0aCwgMCkpOwor
fQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXI7Cisg
ICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSA9IHNpemVvZihkaWdlc3RMZW5ndGhCdWZm
ZXIpOworCisgICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5o
SGFzaCwgSFBfSEFTSFNJWkUsIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+KCZkaWdlc3RMZW5ndGhC
dWZmZXIpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSwgMCkpOworICAgIHJlc3VsdC5yZXNpemUo
ZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFzaFBh
cmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hWQUwsIHJlc3VsdC5kYXRhKCksICZkaWdlc3RM
ZW5ndGhCdWZmZXIsIDApKTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuc2l6ZSgpID09IGRp
Z2VzdExlbmd0aEJ1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlOjpQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZjNhZTg5YjAw
ZTNkMzRiZDk0NThjNThmZmI0NGE4ZWEyNzk2YjNkZC4uMWYwZTEwMzVhZDRhZDJlMWUzZjBiMTcy
NWEyYWNlY2VlM2M4MGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTY5LDggKzY5
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9l
ZmwvQXVkaW9CdXNFZmwuY3BwCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Rp
Z2VzdEdDcnlwdC5jcHAKLQogICAgIHBsYXRmb3JtL2VmbC9DdXJzb3JFZmwuY3BwCiAgICAgcGxh
dGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9EcmFnSW1hZ2VFZmwu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDYyNDIxNjI5YzVlZDUwN2E3NzM0YTNl
NmRmY2QzNGE3Mjg4MWViZGYuLmIxYzZlNmI4Y2UxMzM3ZTM4YzI4NDYzMTU0YjVmYWUxNzBjZDA0
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02OCw4ICs2OCw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1c0dM
aWIuY3BwCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5j
cHAKLQogICAgIHBsYXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCiAKICAgICBw
bGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlMS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggYjgxMmI5YzFhZTdmZDgzMTFhMGQwZTYzZWQ4MzNlOTAxN2Fk
ZGZhMi4uYzk0MzdlNzNkNzBiMmVlOGZjYWQyMzQwZGI3MmNiMzRkZjU0YTljZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTMzMiw4ICszMzIsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCiAgICAgcGxhdGZvcm0v
Y29jb2EvV2ViQ29yZU5TRXJyb3JFeHRyYXMubW0KIAotICAgIHBsYXRmb3JtL2NyeXB0by9jb21t
b25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAotCiAgICAgcGxhdGZvcm0vZ2Ft
ZXBhZC9tYWMvSElER2FtZXBhZC5jcHAKICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1l
cGFkUHJvdmlkZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2lu
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggOGQ3ZjUwOGEx
MjI5NTcxNzkwN2RlZjQxNGYyZjI2NGRmMTBjMTlhZC4uYTRhOTkwOWIxMjEzNDNjZWViYzY5YmQw
MWE4MzVjMThmMTg5MDFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4u
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTczLDggKzcz
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9jZi93aW4v
Q2VydGlmaWNhdGVDRldpbi5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGln
ZXN0V2luLmNwcAotCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAxMzM2ZmNlM2E4Y2M0NTZjNmE4MTRiZjMzMTBmY2FjY2EzMGY0ZDI4Li40MzgyYTAyZWVmZDI1
NThlNWQ5OTIxOWM5MTVmNTg4M2Y4NmJmMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NjIxLDYgKzU2MjEsMTAgQEAKIAkJ
QzI4MDgzM0YxQzZEQzI2RjAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAv
KiBKU0ZvbnRGYWNlLmggKi87IH07CiAJCUMyODA4MzQwMUM2REMyNzUwMDE0NTFCNiAvKiBKU0Zv
bnRGYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMyODA4MzNEMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmNwcCAqLzsgfTsKIAkJQzI4
MDgzNDIxQzZEQzk2QTAwMTQ1MUI2IC8qIEpTRm9udEZhY2VDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MDgzNDExQzZEQzk2QTAwMTQ1
MUI2IC8qIEpTRm9udEZhY2VDdXN0b20uY3BwICovOyB9OworCQlDMjlFN0M2MjFFMjRCRUM0MDBG
RkVDM0QgLyogQ3J5cHRvRGlnZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjlFN0M2MTFFMjRCRUM0MDBGRkVDM0QgLyogQ3J5cHRvRGlnZXN0Lmgg
Ki87IH07CisJCUMyOUU3QzY1MUUyNEJFRTYwMEZGRUMzRCAvKiBDcnlwdG9EaWdlc3RDb21tb25D
cnlwdG8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzI5RTdDNjQxRTI0QkVFNjAwRkZFQzNEIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAg
Ki87IH07CisJCUMyOUU3QzZBMUUyNEMzOTAwMEZGRUMzRCAvKiBjb25maWcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOUU3QzY5MUUyNEMzOTAwMEZG
RUMzRCAvKiBjb25maWcuaCAqLzsgfTsKKwkJQzI5RTdDNkMxRTI0Q0MyQjAwRkZFQzNEIC8qIGxp
YlBBTC5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzI5RTdDNUExRTI0QkMxRDAwRkZFQzNEIC8qIGxpYlBBTC5hICovOyB9OwogCQlDMkUxRjQzRjFE
NjI1NEUxMDA5NDYyNUMgLyogQnJlYWtMaW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkNFQTQ4MTYwOTdEOTMwMjAwOTRDOUU0IC8qIEJyZWFrTGlu
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
MzMwQTIyMzEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMzMwQTIyMTEzRUMxOTZCMDAwMEI0NUIg
LyogQ29sb3JDaG9vc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQzMzRUU1QzQxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRo
S2V5SW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMzM0VFNUMyMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlu
cHV0VHlwZS5jcHAgKi87IH07CkBAIC02MjYwLDggKzYyNjQsNiBAQAogCQlFMUY4MEI4ODE4MzE3
MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGODBCODYxODMxNzI1MjAwNzg4NUMzIC8qIENyeXB0b0tl
eVBhaXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMUY4MEI4RDE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjgwQjhCMTgzMTcyQjUw
MDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3BwICovOyB9OwogCQlFMUY4MEI4RTE4MzE3MkI1
MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4MEI4QzE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9L
ZXlQYWlyLmggKi87IH07Ci0JCUUxRkUxMzY0MTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdl
c3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFGRTEzNjIxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNy
eXB0by5jcHAgKi87IH07Ci0JCUUxRkUxMzY3MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdl
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUx
MzY2MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCAqLzsgfTsKIAkJRTFGRTEzNkEx
ODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzY4MTgzRkUxQUIwMDg5
MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgKi87IH07CiAJCUUxRkUxMzZCMTgz
RkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjkxODNGRTFBQjAwODkyRjEz
IC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggKi87IH07CiAJCUUxRkUxMzcwMTgzRkVDRjAw
MDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2RTE4M0ZFQ0YwMDA4OTJGMTMg
LyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwICovOyB9OwpAQCAtNjkwMiw2ICs2OTA0
LDEzIEBACiAJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDQxN0RBNkNGMTM3MzRFMDIwMDdDNTdG
QjsKIAkJCXJlbW90ZUluZm8gPSBXZWJDb3JlVGVzdFN1cHBvcnQ7CiAJCX07CisJCUMyOUU3QzY2
MUUyNEJGMjcwMEZGRUMzRCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2Eg
PSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZF
ODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOwor
CQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBDMjlFN0M1OTFFMjRCQzFDMDBGRkVDM0Q7CisJCQly
ZW1vdGVJbmZvID0gUEFMOworCQl9OwogCQlERDA0MUZGMDA5RDlFMzI1MDAxMEFGMkEgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5
OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2pl
Y3Qgb2JqZWN0ICovOwpAQCAtMTM1MzksNiArMTM1NDgsMTEgQEAKIAkJQzI4MDgzM0QxQzZEQzIy
QzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNGb250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMy
ODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTRm9udEZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzI4MDgzNDExQzZEQzk2QTAwMTQ1MUI2IC8qIEpTRm9udEZhY2VDdXN0b20uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGb250RmFjZUN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOUU3QzVBMUUyNEJDMUQwMEZGRUMzRCAvKiBs
aWJQQUwuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0g
YXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliUEFMLmE7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUMyOUU3QzYxMUUyNEJFQzQwMEZGRUMzRCAv
KiBDcnlwdG9EaWdlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRv
RGlnZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOUU3QzY0MUUyNEJFRTYw
MEZGRUMzRCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5RTdDNjkxRTI0QzM5MDAwRkZFQzNEIC8qIGNvbmZp
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5RTdDNkIxRTI0QzdEMTAwRkZFQzNEIC8qIFBBTC54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBQQUwueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzMzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xv
ckNob29zZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDaG9vc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzM0VFNUMyMTRGQjQ5NjEwMDAyMDk1
QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzM0VFNUMzMTRGQjQ5NjEwMDAyMDk1QSAvKiBC
YXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQyNjIsOCArMTQyNzYsNiBAQAogCQlFMUY4MEI4NjE4MzE3MjUyMDA3
ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcnlwdG9LZXlQYWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRjgwQjhC
MTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNDcnlwdG9LZXlQYWlyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTFGODBCOEMxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFp
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NyeXB0b0tleVBhaXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFGRTEzNjIxODM0MzUxMTAwODkyRjEzIC8q
IENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlFMUZFMTM2NjE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0RpZ2VzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2ODE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRTEzNkUxODNGRUNGMDAwODky
RjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0OTcyLDYgKzE0OTg0LDcgQEAKIAkJCWlzYSA9IFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
IAkJCWZpbGVzID0gKAorCQkJCUMyOUU3QzZDMUUyNENDMkIwMEZGRUMzRCAvKiBsaWJQQUwuYSBp
biBGcmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjEyMTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVy
YXRlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjEzMTJCMDQ4QTMwMEVE
OThDNiAvKiBBdWRpb1Rvb2xib3guZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMUFC
MzNEQTUxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
LApAQCAtMTQ5ODUsNiArMTQ5OTgsMTMgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJQzI5RTdDNTcxRTI0QkMxQzAwRkZFQzNEIC8q
IEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJRTFCQTY3MEUx
NzQyQkRFMDAwQzIwMjUxIC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0xNTAx
NSw2ICsxNTAzNSw3IEBACiAJCQkJRTFCQTY3MTYxNzQyQkRFMDAwQzIwMjUxIC8qIGxpYldlYkNv
cmVUZXN0U2hpbS5keWxpYiAqLywKIAkJCQk0MTdEQTZEMDEzNzM0RTAyMDA3QzU3RkIgLyogbGli
V2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovLAogCQkJCTkzRjE5QjFBMDgyNDVFNUEwMDFFOUFC
QyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLywKKwkJCQlDMjlFN0M1QTFFMjRCQzFEMDBGRkVDM0Qg
LyogbGliUEFMLmEgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOwpAQCAtMTU0MTgsNiArMTU0MzksNyBAQAogCQkJCTJFNDM0NjMxMEY1
NDZBNjgwMEIwRjFCQSAvKiB3b3JrZXJzICovLAogCQkJCUUxRjA0MjQzMDk4MzkzODkwMDY2OTRF
QSAvKiB4bWwgKi8sCiAJCQkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3IC8qIERlcml2ZWQgU291
cmNlcyAqLywKKwkJCQlDMjlFN0M1RjFFMjRCQ0EyMDBGRkVDM0QgLyogUEFMICovLAogCQkJCTA4
OUMxNjY1RkU4NDExNThDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJMzcxN0Q3RTQxN0VD
QzM2QzAwM0MyNzZEIC8qIFNjcmlwdHMgKi8sCiAJCQkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3
IC8qIEZyYW1ld29ya3MgKi8sCkBAIC0xNjE5Nyw2ICsxNjIxOSw3IEBACiAJCTFDREQ0NDY2MEJB
OUM4MDAwMEY5MDE0NyAvKiBDb25maWd1cmF0aW9ucyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzI5RTdDNkIxRTI0QzdEMTAwRkZFQzNEIC8qIFBBTC54
Y2NvbmZpZyAqLywKIAkJCQkxQ0RENDVFNjBCQTlDODQ2MDBGOTAxNDcgLyogQmFzZS54Y2NvbmZp
ZyAqLywKIAkJCQkxQ0RENDVFNDBCQTlDODQ2MDBGOTAxNDcgLyogRGVidWdSZWxlYXNlLnhjY29u
ZmlnICovLAogCQkJCTQ0OTA5OEIxMEY4RjgyNTIwMDc2QTMyNyAvKiBGZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZyAqLywKQEAgLTIyNDgxLDcgKzIyNTA0LDYgQEAKIAkJCQlGRDMxNjA0MDEyQjAyNkEz
MDBDMUEzNTkgLyogYXVkaW8gKi8sCiAJCQkJMUFFNDJGNjcwQUE0QjhDQjAwQzg2MTJEIC8qIGNm
ICovLAogCQkJCUE1Qzk3NENFMTE0ODVGREEwMDY2RjJBQiAvKiBjb2NvYSAqLywKLQkJCQlDRTUw
RDhDRTFDODkzMkVEMDA3MkVBNUEgLyogY3J5cHRvICovLAogCQkJCTUxNUJFMTg3MUQ1NEY1REIw
MEREN0M2OCAvKiBnYW1lcGFkICovLAogCQkJCUIyQTAxNTkxMEFGNkNENTMwMDZCQ0UwRSAvKiBn
cmFwaGljcyAqLywKIAkJCQlBNTlFM0MxQjExNTgwRjM0MDA3MjkyOEUgLyogaW9zICovLApAQCAt
MjI2NzUsNiArMjI2OTcsMzIgQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsK
IAkJfTsKKwkJQzI5RTdDNUYxRTI0QkNBMjAwRkZFQzNEIC8qIFBBTCAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzI5RTdDNjkxRTI0QzM5MDAwRkZFQzNE
IC8qIGNvbmZpZy5oICovLAorCQkJCUMyOUU3QzYwMUUyNEJDREYwMEZGRUMzRCAvKiBjcnlwdG8g
Ki8sCisJCQkpOworCQkJcGF0aCA9IFBBTDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCUMyOUU3QzYwMUUyNEJDREYwMEZGRUMzRCAvKiBjcnlwdG8gKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMyOUU3QzYzMUUyNEJFRDQwMEZGRUMz
RCAvKiBjb21tb25jcnlwdG8gKi8sCisJCQkJQzI5RTdDNjExRTI0QkVDNDAwRkZFQzNEIC8qIENy
eXB0b0RpZ2VzdC5oICovLAorCQkJKTsKKwkJCXBhdGggPSBjcnlwdG87CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQlDMjlFN0M2MzFFMjRCRUQ0MDBGRkVDM0QgLyogY29tbW9u
Y3J5cHRvICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlD
MjlFN0M2NDFFMjRCRUU2MDBGRkVDM0QgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAq
LywKKwkJCSk7CisJCQlwYXRoID0gY29tbW9uY3J5cHRvOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJQzk2RjVFQkYxQjU4NzIyNjAwOTFFQTlEIC8qIG1lZGlhc2Vzc2lvbiAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMjkxOSwyMyAr
MjI5NjcsNiBAQAogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07Ci0JCUNFNTBEOENFMUM4OTMyRUQwMDcyRUE1QSAvKiBjcnlwdG8gKi8gPSB7Ci0JCQlpc2Eg
PSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUNFNTBEOENGMUM4OTMyRkIwMDcyRUE1
QSAvKiBjb21tb25jcnlwdG8gKi8sCi0JCQkJRTFGRTEzNjYxODM0M0ExMDAwODkyRjEzIC8qIENy
eXB0b0RpZ2VzdC5oICovLAotCQkJKTsKLQkJCXBhdGggPSBjcnlwdG87Ci0JCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwotCQl9OwotCQlDRTUwRDhDRjFDODkzMkZCMDA3MkVBNUEgLyogY29tbW9u
Y3J5cHRvICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlF
MUZFMTM2MjE4MzQzNTExMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAq
LywKLQkJCSk7Ci0JCQlwYXRoID0gY29tbW9uY3J5cHRvOwotCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKLQkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjUyMjUsNyArMjUyNTYsNiBA
QAogCQkJCUUxOUFDM0YxMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTYu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxOUFDM0YzMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9B
bGdvcml0aG1TSEEzODQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOUFDM0Y1MTgyNERDNzkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuaCBpbiBIZWFkZXJzICovLAotCQkJCUUxRkUx
MzY3MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxNTdBOEU1MTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxMjVGODRFMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9LZXlBRVMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxMjVGODVFMTgyQzJERjYwMEQ4NENEOSAvKiBDcnlwdG9LZXlEYXRhLmggaW4g
SGVhZGVycyAqLywKQEAgLTI4NDIzLDYgKzI4NDUzLDE1IEBACiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCUMyOUU3QzU4MUUyNEJDMUMw
MEZGRUMzRCAvKiBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQzI5
RTdDNkExRTI0QzM5MDAwRkZFQzNEIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzI5
RTdDNjIxRTI0QkVDNDAwRkZFQzNEIC8qIENyeXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJ
CUUxQkE2NkY2MTc0MkJERTAwMEMyMDI1MSAvKiBIZWFkZXJzICovID0gewogCQkJaXNhID0gUEJY
SGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAt
Mjg0NzIsNiArMjg1MTEsNyBAQAogCQkJYnVpbGRSdWxlcyA9ICgKIAkJCSk7CiAJCQlkZXBlbmRl
bmNpZXMgPSAoCisJCQkJQzI5RTdDNjcxRTI0QkYyNzAwRkZFQzNEIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCiAJCQkJREQwNDFGRjEwOUQ5RTMyNTAwMTBBRjJBIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFdlYkNvcmU7CkBAIC0yODQ4MCw2ICsyODUyMCwy
MyBAQAogCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDkzRjE5QjFBMDgyNDVFNUEwMDFFOUFCQyAvKiBX
ZWJDb3JlLmZyYW1ld29yayAqLzsKIAkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0
LXR5cGUuZnJhbWV3b3JrIjsKIAkJfTsKKwkJQzI5RTdDNTkxRTI0QkMxQzAwRkZFQzNEIC8qIFBB
TCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlv
bkxpc3QgPSBDMjlFN0M1RTFFMjRCQzFEMDBGRkVDM0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJ
CQlDMjlFN0M1NjFFMjRCQzFDMDBGRkVDM0QgLyogU291cmNlcyAqLywKKwkJCQlDMjlFN0M1NzFF
MjRCQzFDMDBGRkVDM0QgLyogRnJhbWV3b3JrcyAqLywKKwkJCQlDMjlFN0M1ODFFMjRCQzFDMDBG
RkVDM0QgLyogSGVhZGVycyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJ
CWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gUEFMOworCQkJcHJvZHVjdE5hbWUg
PSBQQUw7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gQzI5RTdDNUExRTI0QkMxRDAwRkZFQzNEIC8q
IGxpYlBBTC5hICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5s
aWJyYXJ5LnN0YXRpYyI7CisJCX07CiAJCUUxQkE2NkYzMTc0MkJERTAwMEMyMDI1MSAvKiBXZWJD
b3JlVGVzdFNoaW0gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gRTFCQTY3MTIxNzQyQkRFMDAwQzIwMjUxIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJDb3JlVGVzdFNoaW0iICovOwpA
QCAtMjg1MDcsNiArMjg1NjQsMTIgQEAKIAkJCQlCdWlsZEluZGVwZW5kZW50VGFyZ2V0c0luUGFy
YWxsZWwgPSBZRVM7CiAJCQkJTGFzdFN3aWZ0VXBkYXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RV
cGdyYWRlQ2hlY2sgPSAwNzAwOworCQkJCVRhcmdldEF0dHJpYnV0ZXMgPSB7CisJCQkJCUMyOUU3
QzU5MUUyNEJDMUMwMEZGRUMzRCA9IHsKKwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDgu
Mi4xOworCQkJCQkJUHJvdmlzaW9uaW5nU3R5bGUgPSBBdXRvbWF0aWM7CisJCQkJCX07CisJCQkJ
fTsKIAkJCX07CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAw
OEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29y
ZSIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOwpAQCAtMjg1MzEs
NiArMjg1OTQsNyBAQAogCQkJCUREMDQxRkJFMDlEOUREQkUwMDEwQUYyQSAvKiBEZXJpdmVkIFNv
dXJjZXMgKi8sCiAJCQkJNDE3REE2Q0YxMzczNEUwMjAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3Vw
cG9ydCAqLywKIAkJCQlFMUJBNjZGMzE3NDJCREUwMDBDMjAyNTEgLyogV2ViQ29yZVRlc3RTaGlt
ICovLAorCQkJCUMyOUU3QzU5MUUyNEJDMUMwMEZGRUMzRCAvKiBQQUwgKi8sCiAJCQkpOwogCQl9
OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwpAQCAtMjkwNjAsNyArMjkxMjQsNiBAQAog
CQkJCUUxOUFDM0YwMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTYuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTE5QUMzRjIxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0Fs
Z29yaXRobVNIQTM4NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTlBQzNGNDE4MjREQzc5MDAz
NDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUx
RkUxMzY0MTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTE1N0E4RTQxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTI1Rjg0RDE4MjQyODlEMDBEODRDRDkgLyogQ3J5cHRv
S2V5QUVTLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjVGODYzMTgyQzMwM0EwMEQ4NENEOSAv
KiBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxODg0
LDYgKzMxOTQ3LDE0IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CisJCUMyOUU3QzU2MUUyNEJDMUMwMEZGRUMzRCAvKiBTb3VyY2VzICov
ID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQzI5RTdDNjUxRTI0QkVFNjAwRkZFQzNE
IC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJRTFCQTY3
MDIxNzQyQkRFMDAwQzIwMjUxIC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zMTkxMCw2
ICszMTk4MSwxMSBAQAogCQkJdGFyZ2V0ID0gNDE3REE2Q0YxMzczNEUwMjAwN0M1N0ZCIC8qIFdl
YkNvcmVUZXN0U3VwcG9ydCAqLzsKIAkJCXRhcmdldFByb3h5ID0gNDE4MTZGODQxMzg1OUM3RDAw
NTdBQUE0IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKIAkJfTsKKwkJQzI5RTdDNjcxRTI0
QkYyNzAwRkZFQzNEIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhU
YXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gQzI5RTdDNTkxRTI0QkMxQzAwRkZFQzNEIC8q
IFBBTCAqLzsKKwkJCXRhcmdldFByb3h5ID0gQzI5RTdDNjYxRTI0QkYyNzAwRkZFQzNEIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJREQwNDFGRjEwOUQ5RTMyNTAwMTBBRjJB
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRl
bmN5OwogCQkJdGFyZ2V0ID0gREQwNDFGQkUwOUQ5RERCRTAwMTBBRjJBIC8qIERlcml2ZWQgU291
cmNlcyAqLzsKQEAgLTMyMDUzLDYgKzMyMTI5LDI3IEBACiAJCQl9OwogCQkJbmFtZSA9IFByb2R1
Y3Rpb247CiAJCX07CisJCUMyOUU3QzVCMUUyNEJDMUQwMEZGRUMzRCAvKiBEZWJ1ZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSBDMjlFN0M2QjFFMjRDN0QxMDBGRkVDM0QgLyogUEFMLnhjY29uZmlnICovOworCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCUMyOUU3
QzVDMUUyNEJDMUQwMEZGRUMzRCAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEMyOUU3QzZCMUUy
NEM3RDEwMEZGRUMzRCAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQlDMjlFN0M1RDFFMjRCQzFEMDBGRkVD
M0QgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBDMjlFN0M2QjFFMjRDN0QxMDBGRkVDM0Qg
LyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1l
ID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJREQwNDFGQzIwOUQ5REREQzAwMTBBRjJBIC8qIERlYnVn
ICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDREQ0NUU1MEJBOUM4NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29u
ZmlnICovOwpAQCAtMzIxNDEsNiArMzIyMzgsMTYgQEAKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9u
SXNWaXNpYmxlID0gMDsKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247
CiAJCX07CisJCUMyOUU3QzVFMUUyNEJDMUQwMEZGRUMzRCAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUEFMIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmln
dXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCUMyOUU3QzVCMUUy
NEJDMUQwMEZGRUMzRCAvKiBEZWJ1ZyAqLywKKwkJCQlDMjlFN0M1QzFFMjRCQzFEMDBGRkVDM0Qg
LyogUmVsZWFzZSAqLywKKwkJCQlDMjlFN0M1RDFFMjRCQzFEMDBGRkVDM0QgLyogUHJvZHVjdGlv
biAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQlERDA0MUZDMTA5
RDlERERDMDAxMEFGMkEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdh
dGVUYXJnZXQgIkRlcml2ZWQgU291cmNlcyIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKaW5kZXgg
MGM4ZGZkZGQxZTBhN2FkYmFhMThlZjljNTEyYTcyOGM5NDJhZGUyOS4uMjEwZDk4ZjNkNjBmN2Fm
YjNlYzk3ZjAyZTJiMzQ4ZTdjOTIyYWQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKQEAgLTI4LDkgKzI4
LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGln
ZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEExOjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBD
cnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxs
YmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVl
dWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdl
c3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CiAgICAgaWYg
KCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwog
ICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hB
MTo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRl
KENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6
OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCmluZGV4IDZjYTFhZWU1YTZiYjdkODNj
YTA1NjQxOWRjYmViZDUxN2I5ZDYxODUuLmJlNDQxOTU3NDIyOGNiNTEwOTFmZTY1YjQ4Y2JmMzFj
MjBmYmY4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYg
RU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0
b0FsZ29yaXRobVNIQTIyNDo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0g
ICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzIyNCk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwogICAgIGlmICghZGln
ZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6
ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBF
eGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIy
NCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAg
ICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAppbmRleCA3MzY2MGY1OTlhZjM3Y2E5
ZGU5YTIxOWUzZjRmMjM0OGY0NmFjMmIzLi42ZjgxNmM4OTRhNzllZTdhNmQzYmU3YmY2OTRkNDE4
OTA2MGI4NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lm
IEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlw
dG9BbGdvcml0aG1TSEEyNTY6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29y
aXRobVNIQTI1Njo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewot
ICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yNTYpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICBpZiAoIWRp
Z2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAg
ICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6
OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAog
RXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6
OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTYpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAg
ICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKaW5kZXggYzk3NzUyZDgxYzAwNTQy
MzliMGI4OGM2MGFhMzQzZWZhNjVlMTQ3Ny4uZGUxMTU4NzcwMzhiNTIxMWIwNzA1MWMyNjRiMzBl
YTA1MGQ0NTllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNp
ZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5
cHRvQWxnb3JpdGhtU0hBMzg0OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdv
cml0aG1TSEEzODQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxs
YmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsK
LSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMzg0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0Ojpj
cmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CiAgICAgaWYgKCFk
aWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAg
ICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAK
IEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUo
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFM
OjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
Mzg0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCmluZGV4IDMzZTQ4M2RhMTVkMTBj
Y2RiNzNlZTM4ZjkzYTEzZDZkNzE4NzAyZWYuLjM2NTg5MzAyODZiOGYwZGQzZmM2MjI3YjhlY2Iz
ZTEwNDYwYmMzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAj
aWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENy
eXB0b0FsZ29yaXRobVNIQTUxMjo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxn
b3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7
Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzUxMik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6
Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOwogICAgIGlmICgh
ZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUx
Mjo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwog
CiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRl
KENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBB
TDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzUxMik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAg
ICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFj
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4
IGY2YWI3YTIxNTU1M2I2Y2JmYjQ3MzAzNTVjZmU1MzUyYTlkMDIzNTUuLjdmY2Y1ZTIxNjg2NThm
OWE3NDExOTY2MWZkMDA0YzhkNzBhZmI4OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVN
YWMuY3BwCkBAIC0zMCwyNiArMzAsMjYgQEAKIAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxp
dGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQu
aCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotaW5saW5lIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hG
dW5jdGlvbikKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hG
dW5jdGlvbikKIHsKICAgICBzd2l0Y2ggKGhhc2hGdW5jdGlvbikgewogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzE7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMTsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8y
MjQ6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKKyAg
ICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ7CiAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgotICAgICAgICByZXR1cm4g
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CisgICAgICAgIHJldHVybiBQQUw6OkNy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzM4NDoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMzg0OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NDsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6
Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICAg
ICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CkBAIC02Niw3ICs2Niw3
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHNpZ25SU0FTU0FfUEtDUzFf
djFfNShDcnlwdG9BbGdvcml0aG1JZGVudGlmCiAgICAgYXV0byBjcnlwdG9EaWdlc3RBbGdvcml0
aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaCk7CiAgICAgaWYgKCFjcnlw
dG9EaWdlc3RBbGdvcml0aG0pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OwotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0Rp
Z2VzdEFsZ29yaXRobSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOwogICAgIGlmICghZGlnZXN0KQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICBkaWdlc3QtPmFkZEJ5dGVz
KGRhdGEsIGRhdGFMZW5ndGgpOwpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
Ym9vbD4gdmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBo
YXNoLAogICAgIGF1dG8gY3J5cHRvRGlnZXN0QWxnb3JpdGhtID0gV2ViQ29yZTo6Y3J5cHRvRGln
ZXN0QWxnb3JpdGhtKGhhc2gpOwogICAgIGlmICghY3J5cHRvRGlnZXN0QWxnb3JpdGhtKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOworICAgIGF1
dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3Jp
dGhtKTsKICAgICBpZiAoIWRpZ2VzdCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJh
dGlvbkVycm9yIH07CiAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLCBkYXRhTGVuZ3RoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGRm
OTYxZTAxOGFiN2ZhMDNjZGE1OTRiOTI0MThmNTk0ZWY5NDhiOGIuLjIyMjYyMjI4OTk0YjVhODdk
ODk4Y2YxOGI0YWZiNzQ3YjI1OGQ0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkNvbnRh
aW5lck5vZGUuaCIKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIK
LSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJET01FZGl0b3IuaCIKICNpbmNs
dWRlICJET01QYXRjaFN1cHBvcnQuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTc5LDYg
Kzc4LDcgQEAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNs
dWRlICJQYWdlLmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNs
dWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgogI2luY2x1ZGUg
IlJlbmRlclN0eWxlLmgiCkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBzdGF0aWMgU3RyaW5nIGNvbXB1
dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgVGV4dEVuY29kaW5nIGRvY3VtZW50RW5jb2RpbmcgPSBlbGVtZW50LmRvY3VtZW50KCku
dGV4dEVuY29kaW5nKCk7CiAgICAgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZ1RvVXNlID0g
ZG9jdW1lbnRFbmNvZGluZy5pc1ZhbGlkKCkgPyBkb2N1bWVudEVuY29kaW5nIDogVVRGOEVuY29k
aW5nKCk7CiAgICAgQ1N0cmluZyBjb250ZW50ID0gZW5jb2RpbmdUb1VzZS5lbmNvZGUoVGV4dE5v
ZGVUcmF2ZXJzYWw6OmNvbnRlbnRzQXNTdHJpbmcoZWxlbWVudCksIEVudGl0aWVzRm9yVW5lbmNv
ZGFibGVzKTsKLSAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9
IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzI1Nik7CiAgICAgY3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250ZW50LmRhdGEoKSwgY29u
dGVudC5sZW5ndGgoKSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRpZ2VzdCA9IGNyeXB0b0RpZ2Vz
dC0+Y29tcHV0ZUhhc2goKTsKICAgICByZXR1cm4gbWFrZVN0cmluZygic2hhMjU2LSIsIGJhc2U2
NEVuY29kZShkaWdlc3QuZGF0YSgpLCBkaWdlc3Quc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCBmMDU5YjYwMTRj
ODRiN2ZhNGE3MzZmOTU0YTg5MTMxNGFiNzNhNWVkLi45M2VlZDEzZDhlZDQ0NDEzODg3ZDQxNTg0
Yjk2NWViMDFjZTUzMDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRl
bnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDb250ZW50
U2VjdXJpdHlQb2xpY3lIYXNoLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291
cmNlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oIgotI2lu
Y2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC00NSw2ICs0
NCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgor
I2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSAiUGFyc2luZ1V0
aWxpdGllcy5oIgogI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKQEAgLTMwMSwxOCArMzAxLDE4IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
OjphbGxQb2xpY2llc0FsbG93KFZpb2xhdGVkRGlyZWN0aXZlQ2FsbGJhY2smJiBjYWxsYmFjCiAg
ICAgcmV0dXJuIGlzQWxsb3dlZDsKIH0KIAotc3RhdGljIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
IHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0
aG0gYWxnb3JpdGhtKQorc3RhdGljIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9Dcnlw
dG9EaWdlc3RBbGdvcml0aG0oQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSBhbGdv
cml0aG0pCiB7CiAgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKICAgICBjYXNlIENvbnRlbnRTZWN1
cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CiAgICAgY2FzZSBDb250ZW50U2VjdXJpdHlQb2xpY3lI
YXNoQWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRo
bTo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
NTEyOworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
MjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfNTEyOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+CkBA
IC0zMzMsNyArMzMzLDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIYXNoSW5FbmZvcmNlZEFu
ZFJlcG9ydE9ubHlQb2xpY2llc1BhaXIgQ29udGVudFNlY3VyaXR5UG8KICAgICBib29sIGZvdW5k
SGFzaEluRW5mb3JjZWRQb2xpY2llcyA9IGZhbHNlOwogICAgIGJvb2wgZm91bmRIYXNoSW5SZXBv
cnRPbmx5UG9saWNpZXMgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8gYWxnb3JpdGhtIDogYWxnb3Jp
dGhtcykgewotICAgICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRl
KHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOworICAgICAgICBhdXRvIGNyeXB0
b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0
aG0oYWxnb3JpdGhtKSk7CiAgICAgICAgIGNyeXB0b0RpZ2VzdC0+YWRkQnl0ZXMoY29udGVudENT
dHJpbmcuZGF0YSgpLCBjb250ZW50Q1N0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgIENvbnRlbnRT
ZWN1cml0eVBvbGljeUhhc2ggaGFzaCA9IHsgYWxnb3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1
dGVIYXNoKCkgfTsKICAgICAgICAgaWYgKCFmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYg
YWxsUG9saWNpZXNXaXRoRGlzcG9zaXRpb25BbGxvdyhDb250ZW50U2VjdXJpdHlQb2xpY3k6OkRp
c3Bvc2l0aW9uOjpFbmZvcmNlLCBzdGQ6OmZvcndhcmQ8UHJlZGljYXRlPihwcmVkaWNhdGUpLCBo
YXNoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9DcnlwdG9E
aWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFmMDc1YWEzN2NiMzQ2MjA5ODQ3YTU5OWUx
ZjU0Mjg0ZjlmMzgxOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDcnlw
dG9EaWdlc3RfaAotI2RlZmluZSBDcnlwdG9EaWdlc3RfaAotCi0jaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0OwotCi1jbGFzcyBDcnlwdG9EaWdlc3Qgewot
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0RpZ2VzdCk7Ci1wdWJsaWM6Ci0gICAgZW51
bSBjbGFzcyBBbGdvcml0aG0gewotICAgICAgICBTSEFfMSwKLSAgICAgICAgU0hBXzIyNCwKLSAg
ICAgICAgU0hBXzI1NiwKLSAgICAgICAgU0hBXzM4NCwKLSAgICAgICAgU0hBXzUxMiwKLSAgICB9
OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBjcmVhdGUoQWxnb3Jp
dGhtKTsKLSAgICB+Q3J5cHRvRGlnZXN0KCk7Ci0KLSAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IHZv
aWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKLSAgICBWZWN0b3I8dWludDhfdD4gY29tcHV0ZUhh
c2goKTsKLQotcHJpdmF0ZToKLSAgICBDcnlwdG9EaWdlc3QoKTsKLQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBtX2NvbnRleHQ7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDcnlwdG9EaWdlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25D
cnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9D
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlM2ZmYzU2MDUyMjZiNjRiNDkzNzNiZWE2ODVlOTIzZjAxOTliYjRlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDE3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0Nv
bW1vbkNyeXB0by5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdl
c3RDb250ZXh0IHsKLSAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07Ci0gICAg
dm9pZCogY2NDb250ZXh0OwotfTsKLQotaW5saW5lIENDX1NIQTFfQ1RYKiB0b1NIQTFDb250ZXh0
KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFs
Z29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDQ19TSEExX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUg
Q0NfU0hBMjU2X0NUWCogdG9TSEEyMjRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRl
eHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzIyNCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgq
Pihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjU2
Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250
ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsK
LX0KLWlubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTM4NENvbnRleHQoQ3J5cHRvRGlnZXN0Q29u
dGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0Nf
U0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBNTEyX0NU
WCogdG9TSEE1MTJDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAg
QVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzUxMik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5j
Y0NvbnRleHQpOwotfQotCi1DcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2Nv
bnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNy
eXB0b0RpZ2VzdCgpCi17Ci0gICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewotICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICBkZWxldGUgdG9T
SEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgZGVsZXRlIHRvU0hBMjI0
Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgZGVsZXRlIHRvU0hBMjU2Q29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgZGVsZXRlIHRvU0hBMzg0Q29udGV4
dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgZGVsZXRlIHRvU0hBNTEyQ29udGV4dCht
X2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi0KLXN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0
PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29y
aXRobSA9IGFsZ29yaXRobTsKLQotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKLSAgICAgICAgQ0NfU0hBMV9DVFgqIGNv
bnRleHQgPSBuZXcgQ0NfU0hBMV9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0Nv
bnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEExX0luaXQoY29udGV4dCk7Ci0gICAgICAg
IHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yMjQ6IHsKLSAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEy
NTZfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsK
LSAgICAgICAgQ0NfU0hBMjI0X0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7
Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKLSAg
ICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOwotICAgICAg
ICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hB
MjU2X0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAgQ0NfU0hBNTEy
X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29u
dGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBMzg0X0luaXQoY29udGV4
dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTI6IHsKLSAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9
IG5ldyBDQ19TSEE1MTJfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0
ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBNTEyX0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIH0KLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5
dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIHN3aXRjaCAobV9j
b250ZXh0LT5hbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMToKLSAgICAgICAgQ0NfU0hBMV9VcGRhdGUodG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0
KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIENDX1NIQTIyNF9VcGRhdGUodG9TSEEy
MjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAg
Q0NfU0hBMjU2X1VwZGF0ZSh0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQs
IGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMzg0OgotICAgICAgICBDQ19TSEEzODRfVXBkYXRlKHRvU0hBMzg0Q29udGV4dCht
X2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIENDX1NIQTUxMl9V
cGRhdGUodG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0
Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBzd2l0
Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzE6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMV9ESUdFU1RfTEVOR1RI
KTsKLSAgICAgICAgQ0NfU0hBMV9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250ZXh0KG1f
Y29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTIyNF9ESUdF
U1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBMjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hB
MjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShD
Q19TSEEyNTZfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTI1Nl9GaW5hbChyZXN1bHQu
ZGF0YSgpLCB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIHJl
c3VsdC5yZXNpemUoQ0NfU0hBMzg0X0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEEzODRf
RmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEy
OgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTUxMl9ESUdFU1RfTEVOR1RIKTsKLSAgICAg
ICAgQ0NfU0hBNTEyX0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBNTEyQ29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEzYzhiZjI0M2RjMDcyYWJiYTg0NjE4OTczM2EwZjUz
ZmQ2YzA0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0SG9tZQotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNp
bmNsdWRlIDxnY3J5cHQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRv
RGlnZXN0Q29udGV4dCB7Ci0gICAgaW50IGFsZ29yaXRobTsKLSAgICBnY3J5X21kX2hkX3QgbWQ7
Ci19OwotCi1DcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3
IENyeXB0b0RpZ2VzdENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2Vz
dCgpCi17Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBpbnQgZ2Ny
eXB0QWxnb3JpdGhtOwotCi0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NS
WV9NRF9TSEExOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMjI0OgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTIyNDsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
NjoKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEyNTY7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAg
IGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMzg0OwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICBnY3J5cHRBbGdv
cml0aG0gPSBHQ1JZX01EX1NIQTUxMjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAg
IGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnY3J5cHRBbGdvcml0aG07Ci0KLSAgICBn
Y3J5X21kX29wZW4oJmRpZ2VzdC0+bV9jb250ZXh0LT5tZCwgZ2NyeXB0QWxnb3JpdGhtLCAwKTsK
LSAgICBpZiAoIWRpZ2VzdC0+bV9jb250ZXh0LT5tZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICByZXR1cm4gZGlnZXN0OwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMo
Y29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgZ2NyeV9tZF93cml0ZSht
X2NvbnRleHQtPm1kLCBpbnB1dCwgbGVuZ3RoKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0
b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIGludCBkaWdlc3RMZW4gPSBnY3J5X21kX2dl
dF9hbGdvX2RsZW4obV9jb250ZXh0LT5hbGdvcml0aG0pOwotICAgIFZlY3Rvcjx1aW50OF90PiBy
ZXN1bHQoZGlnZXN0TGVuKTsKLQotICAgIGdjcnlfbWRfZmluYWwobV9jb250ZXh0LT5tZCk7Ci0g
ICAgbWVtY3B5KHJlc3VsdC5kYXRhKCksIGdjcnlfbWRfcmVhZChtX2NvbnRleHQtPm1kLCAwKSwg
ZGlnZXN0TGVuKTsKLSAgICBnY3J5X21kX2Nsb3NlKG1fY29udGV4dC0+bWQpOwotCi0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVU
TFMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWE1ZDgxZjJiNGJlMjczMmNl
ZTNlNTI2MzM4NmVkNTljYjIxNGRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nbnV0bHMvQ3J5cHRv
RGlnZXN0R251VExTLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQot
I2luY2x1ZGUgPGdudXRscy9nbnV0bHMuaD4KLSNpbmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAg
IGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgYWxnb3JpdGhtOwotICAgIGdudXRsc19oYXNoX2hk
X3QgaGFzaDsKLX07Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29u
dGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5
cHRvRGlnZXN0KCkKLXsKLSAgICBnbnV0bHNfaGFzaF9kZWluaXQobV9jb250ZXh0LT5oYXNoLCAw
KTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVh
dGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQotewotICAgIGdudXRsc19kaWdl
c3RfYWxnb3JpdGhtX3QgZ251dGxzQWxnb3JpdGhtOwotCi0gICAgc3dpdGNoIChhbGdvcml0aG0p
IHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewotICAgICAgICBn
bnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTE7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7Ci0gICAgICAgIGdu
dXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjI0OwotICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogewotICAgICAgICBn
bnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTI1NjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAg
Z251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEzODQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAg
IGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBNTEyOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgfQotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5l
dyBDcnlwdG9EaWdlc3QpOwotICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnbnV0
bHNBbGdvcml0aG07Ci0KLSAgICBpbnQgcmV0ID0gZ251dGxzX2hhc2hfaW5pdCgmZGlnZXN0LT5t
X2NvbnRleHQtPmhhc2gsIGdudXRsc0FsZ29yaXRobSk7Ci0gICAgaWYgKHJldCAhPSBHTlVUTFNf
RV9TVUNDRVNTKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBkaWdlc3Q7
Ci19Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6
ZV90IGxlbmd0aCkKLXsKLSAgICBnbnV0bHNfaGFzaChtX2NvbnRleHQtPmhhc2gsIGlucHV0LCBs
ZW5ndGgpOwotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgp
Ci17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBpbnQgZGlnZXN0TGVuID0gZ251
dGxzX2hhc2hfZ2V0X2xlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7Ci0gICAgcmVzdWx0LnJlc2l6
ZShkaWdlc3RMZW4pOwotCi0gICAgZ251dGxzX2hhc2hfb3V0cHV0KG1fY29udGV4dC0+aGFzaCwg
cmVzdWx0LmRhdGEoKSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2lu
L0NyeXB0b0RpZ2VzdFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2lu
L0NyeXB0b0RpZ2VzdFdpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2Y2Mx
OTJjMmIzMDM5NTk0MzBmMjQ5YzczNjM0YjEzOWM3YThhNDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRv
L3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0
LmgiCi0KLSNpbmNsdWRlIDx3aW5jcnlwdC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKLSAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBh
bGdvcml0aG07Ci0gICAgSENSWVBUUFJPViBoQ29udGV4dCB7IDAgfTsKLSAgICBIQ1JZUFRIQVNI
IGhIYXNoIHsgMCB9OwotfTsKLQotQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDog
bV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6
On5DcnlwdG9EaWdlc3QoKQotewotICAgIGlmIChIQ1JZUFRIQVNIIGhIYXNoID0gbV9jb250ZXh0
LT5oSGFzaCkKLSAgICAgICAgQ3J5cHREZXN0cm95SGFzaChoSGFzaCk7Ci0gICAgaWYgKEhDUllQ
VFBST1YgaENvbnRleHQgPSBtX2NvbnRleHQtPmhDb250ZXh0KQotICAgICAgICBDcnlwdFJlbGVh
c2VDb250ZXh0KGhDb250ZXh0LCAwKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2Vz
dD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAg
ZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRobTsKLSAgICBpZiAoIUNyeXB0
QWNxdWlyZUNvbnRleHQoJmRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgbnVsbHB0ciwgbnVs
bHB0ciAvKiB1c2UgZGVmYXVsdCBwcm92aWRlciAqLywgUFJPVl9SU0FfQUVTLCBDUllQVF9WRVJJ
RllDT05URVhUKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYm9vbCBzdWNjZWVkZWQg
PSBmYWxzZTsKLSAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8xOiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFz
aChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBMSwgMCwgMCwgJmRpZ2VzdC0+
bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0
Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzI1NiwgMCwg
MCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7Ci0gICAgICAgIHN1Y2Nl
ZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdf
U0hBXzM4NCwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0g
ICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENv
bnRleHQsIENBTEdfU0hBXzUxMiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0gICAgaWYgKHN1Y2NlZWRlZCkKLSAgICAgICAg
cmV0dXJuIGRpZ2VzdDsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBDcnlwdG9EaWdl
c3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGlm
ICghaW5wdXQgfHwgIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuOwotICAgIFJFTEVBU0VfQVNTRVJU
KENyeXB0SGFzaERhdGEobV9jb250ZXh0LT5oSGFzaCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBC
WVRFKj4oaW5wdXQpLCBsZW5ndGgsIDApKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0Rp
Z2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAg
RFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyOwotICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlclNp
emUgPSBzaXplb2YoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKENy
eXB0R2V0SGFzaFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hTSVpFLCByZWludGVycHJl
dF9jYXN0PEJZVEUqPigmZGlnZXN0TGVuZ3RoQnVmZmVyKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlclNp
emUsIDApKTsKLSAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbmd0aEJ1ZmZlcik7Ci0KLSAgICBS
RUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNI
VkFMLCByZXN1bHQuZGF0YSgpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyLCAwKSk7Ci0gICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0LnNpemUoKSA9PSBkaWdlc3RMZW5ndGhCdWZmZXIpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5j
cHAKaW5kZXggYzM0NTU3ZDk3Y2NlNzBhMTI3MDY4ZmJiNDBmODY0YTQ0ODY1NGEzYS4uZDRiZDhh
ZTAzZWU0ZGFjY2NhNmViYmUxN2FiNzc3ZTZlZGNiYjZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5j
cHAKQEAgLTMxLDEwICszMSwxMCBAQAogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCIKICNpbmNsdWRlICJDb29raWVKYXJTb3VwLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0
LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0
Lmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlIDxnbGliL2dzdGRpby5o
PgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgpAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgog
ICAgICAgICBpZiAoIWNlcnRpZmljYXRlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIAotICAgICAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNy
eXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYp
OwogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGNlcnRpZmljYXRlRGF0YS0+ZGF0YSwgY2VydGlm
aWNhdGVEYXRhLT5sZW4pOwogCiAgICAgICAgIGF1dG8gaGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhh
c2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9XZWJLaXRGUy5jbWFrZQppbmRleCAyOWEwOTY5MDM4ZmFhNzQ0ZTFhOGM1OGYzNTZhZDA3
M2YwMDUyNWJkLi41MTMwZmZjYmNjN2M5Y2U3NTE0YWY0ZDU1M2JkOGE0ZjA1MDE0NTZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dl
YktpdEZTLmNtYWtlCkBAIC0xMCw2ICsxMCw5IEBAIGVuZGlmICgpCiBpZiAoTk9UIFdFQkNPUkVf
RElSKQogICAgIHNldChXRUJDT1JFX0RJUiAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2Vi
Q29yZSIpCiBlbmRpZiAoKQoraWYgKE5PVCBQQUxfRElSKQorICAgIHNldChQQUxfRElSICIke0NN
QUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJDb3JlL1BBTCIpCitlbmRpZiAoKQogaWYgKE5PVCBX
RUJLSVRfRElSKQogICAgIHNldChXRUJLSVRfRElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJj
ZS9XZWJLaXQiKQogZW5kaWYgKCkKZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VM
aXN0cy50eHQKaW5kZXggNzlhMTdiYWNhMGRmNTMyOGU3YjNkMTE5NzJiYjZiN2I0N2UyZTZmYS4u
N2FjOWQ4YzBmMWJkOGMyMjMyOWQwMDBmOWM4MDU5NTU1NjNlNTZlZSAxMDA2NDQKLS0tIGEvQ01h
a2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50eHQKQEAgLTExNSw2ICsxMTUsNyBAQCBlbHNl
ICgpCiAgICAgc2V0KFdlYkNvcmVfTElCUkFSWV9UWVBFIFNUQVRJQykKIGVuZGlmICgpCiAKK3Nl
dChQQUxfTElCUkFSWV9UWVBFIFNUQVRJQykKIHNldChXZWJLaXRfTElCUkFSWV9UWVBFIFNIQVJF
RCkKIHNldChXZWJLaXQyX0xJQlJBUllfVFlQRSBTSEFSRUQpCiBzZXQoV2ViQ29yZVRlc3RTdXBw
b3J0X0xJQlJBUllfVFlQRSBTVEFUSUMpCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggMTRmNjQ3MTYwOGU5NGVhOTRlN2QyZGJmZmFiZDZmNGI4ZTVjZDczZS4uZWJjNzhh
NjExMTBhNmYwNTQyZjNhNWUxZDdkNWFiNmQzZmJiYTY0MCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE3LTAxLTA5ICBEb24gT2xtc3Rl
YWQgIDxkb24ub2xtc3RlYWRAYW0uc29ueS5jb20+IGFuZCBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFi
c3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2U6CisKKzIwMTct
MDEtMDkgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogU291cmNlL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9j
bWFrZS9XZWJLaXRGUy5jbWFrZToKKworMjAxNy0wMS0wOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9s
bXN0ZWFkQGFtLnNvbnkuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9ybSBB
YnN0cmFjdGlvbiBMYXllciAoUEFMKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2UvQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlOgorCisyMDE3
LTAxLTA5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAYW0uc29ueS5jb20+CisKKyAgICAg
ICAgSW50cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFNvdXJjZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2Uv
Y21ha2UvV2ViS2l0RlMuY21ha2U6CisKIDIwMTYtMTItMjEgIEtvbnN0YW50aW4gVG9rYXJldiAg
PGFubnVsZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIHNldCBQWVRIT05QQVRIIGluIHNlcGFyYXRl
IENPTU1BTkQgZG9lc24ndCB3b3JrIHdpdGggYWxsIENNYWtlIGdlbmVyYXRvcnMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298502</attachid>
            <date>2017-01-10 12:41:49 -0800</date>
            <delta_ts>2017-01-10 12:45:51 -0800</delta_ts>
            <desc>Needs cmake invariant enforcement</desc>
            <filename>bug-143358-20170110124011.patch</filename>
            <type>text/plain</type>
            <size>95401</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjFjODIyYjU5MzM1YjVi
M2MyYjgxYjM4MjE3NjEwOGI2YTU2NDk3Ni4uNTljOTQ0YTA3MjEyNzFlNDAzOGYwZjc3OWQwZWE3
MTEwODU0ODE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE3LTAxLTEwICBEb24g
T2xtc3RlYWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4gYW5kIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZv
cm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGVuZm9yY2UgbGF5ZXJpbmcgYW5kIHByb21v
dGUgdGVzdGFiaWxpdHksIFdlYkNvcmUvcGxhdGZvcm0gZmlsZXMKKyAgICAgICAgc2hvdWxkIGJl
IGNvbXBpbGVkIGluIHRoZWlyIG93biB0YXJnZXQuIFRoaXMgbmV3IHRhcmdldCBjYW4gZW5mb3Jj
ZSBsYXllcmluZworICAgICAgICBhbmQgY2FuIGJlIHRlc3RlZCB3aXRoIHVuaXQgdGVzdHMgaW4g
YWRkaXRpb24gdG8gbGF5b3V0IHRlc3RzLgorCisgICAgICAgIFRoZSBuYW1lIG9mIHRoaXMgbmV3
IHRhcmdldCBpcyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIsIG9yICJQQUwuIgorICAg
ICAgICBUaGlzIGNvbXByaXNlcyBvZiBhIG5ldyBkaXJlY3RvcnkgaW4gV2ViQ29yZSB3aGljaCB3
aWxsIGJlIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBmb3IgZmlsZXMgbWlncmF0ZWQgZnJvbSBX
ZWJDb3JlL3BsYXRmb3JtLiBUaGlzIG5ldyBmb2xkZXIsIGFuZCBpdHMgYXNzb2NpYXRlZAorICAg
ICAgICB0YXJnZXQsIHdpbGwgbWFpbnRhaW4gbGF5ZXJpbmcgaW52YXJpYW50cy4gVGhlc2UgaW52
YXJpYW50cyBhcmUgZW5mb3JjZWQgYXQKKyAgICAgICAgYnVpbGQtdGltZSB3aXRoIGEgYnVpbGQg
c3RlcCB3aGljaCBwcm9jZXNzZXMgdGhlIHN5bWJvbHMgd2l0aGluIHRoZSBjb21waWxlZAorICAg
ICAgICBhcmNoaXZlIGZpbGUgYXMgd2VsbCBhcyB0aGUgI2luY2x1ZGUgZGlyZWN0aXZlcyBpbnNp
ZGUgdGhlIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgRmlsZXMgd2lsbCBiZSBtaWdyYXRlZCBpbnRv
IHRoaXMgbmV3IHRhcmdldC9kaXJlY3RvcnkgcGllY2UtYnktcGllY2UsIGFuZCB0aGUKKyAgICAg
ICAgbWlncmF0aW9uIG9mIGEgZmlsZSB3aWxsIGJlIHBlcmZvcm1lZCBhcyBzb29uIGFzIGl0IGNh
biBiZSBtaWdyYXRlZCB3aXRob3V0CisgICAgICAgIHZpb2xhdGluZyBsYXllcmluZy4KKworICAg
ICAgICBXaXRoaW4gV2ViQ29yZSwgZmlsZXMgc2hvdWxkIGluY2x1ZGUgZmlsZXMgaW4gUEFMIHVz
aW5nIHRoZSBjb252ZW50aW9uCisgICAgICAgICNpbmNsdWRlIDxQQUwvZm9vLmg+LiBTeW1ib2xz
IHdpdGhpbiBQQUwgYXJlIHBsYWNlZCB3aXRoaW4gYSBuZXcgbmFtZXNwYWNlLAorICAgICAgICBX
ZWJDb3JlOjpQQUwsIGFuZCB0aGVyZWZvcmUgd2hlbiB1c2VkIGluc2lkZSBXZWJDb3JlIHNob3Vs
ZCBiZSByZWZlcnJlZCB0bworICAgICAgICBhcyBQQUw6OkZvby4KKworICAgICAgICBUaGUgZmly
c3Qgc2V0IG9mIGZpbGVzIHRvIG1vdmUgaW50byB0aGUgbmV3IHBsYXRmb3JtIGlzIHRoZSBjcnlw
dG8vIHN1YmRpcmVjdG9yeQorICAgICAgICBiZWNhdXNlIGl0IGlzIGJvdGggc2ltcGxlIGJ1dCBh
bHNvIGluY2x1ZGVzIHBsYXRmb3JtLWRlcGVuZGVudCBmaWxlcy4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9QQUwueGNjb25maWc6IEFk
ZGVkLiBQQUwtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLgorICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6IE5lZWQgdG8gdXBkYXRlIHRoZSBzZWFyY2ggcGF0
aHMgc28gZmlsZXMgY2FuCisgICAgICAgIGluY2x1ZGUgUEFMIGZpbGVzLgorICAgICAgICAqIFBB
TC9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3JtRWZsLmNtYWtl
OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvUGxhdGZvcm1HVEsuY21ha2U6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9QbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3Jt
V2luLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvY29uZmlnLmg6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmguCisgICAgICAgICogUEFML2NyeXB0by9j
b21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcC4KKyAgICAgICAgKiBQQUwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RH
Q3J5cHQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dj
cnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwLgorICAgICAgICAqIFBBTC9jcnlwdG8vZ251dGxz
L0NyeXB0b0RpZ2VzdEdudVRMUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAuCisgICAgICAgICogUEFM
L2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcC4KKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAg
ICAgKiBTY3JpcHRzL0VuZm9yY2VQQUxMYXllcmluZy5weTogQWRkZWQuIFRoaXMgaXMgdGhlIGxh
eWVyaW5nIGVuZm9yY2VtZW50IG1lY2hhbmlzbS4KKyAgICAgICAgSXQgY2hlY2tzIGJvdGggc3lt
Ym9sIG5hbWVzIGluIHRoZSBjb21waWxlZCAuYSBmaWxlIGFzIHdlbGwgYXMgaW5jbHVkZSBkaXJl
Y3RpdmVzIGluCisgICAgICAgIHRoZSBzb3VyY2UgY29kZS4KKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCB0aGUgbmV3IFBBTCB0YXJnZXQuCisgICAgICAg
ICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6IFVwZGF0ZSB0byB1
c2UgdGhlIFBBTCBzeW1ib2wgbmFtaW5nCisgICAgICAgIGNvbnZlbnRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjpz
aWduUlNBU1NBX1BLQ1MxX3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UlNBU1NBX1BL
Q1MxX3YxXzUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6IERp
dHR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEy
NTZIYXNoKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJblBv
bGljaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNz
aW9uLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIb3N0VExTQ2VydGlmaWNhdGVTZXQ6
OmNvbXB1dGVDZXJ0aWZpY2F0ZUhhc2gpOgorCiAyMDE3LTAxLTA5ICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBKU1NvdXJjZUNvZGUg
dG8gcHJvcGFnYXRlIFNvdXJjZUNvZGUgaW4gbW9kdWxlIHBpcGVsaW5lCmRpZmYgLS1naXQgYS9T
b3VyY2UvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvQ01ha2VMaXN0cy50eHQKaW5kZXggMWI4YTJk
Y2I1MDRmYjU1NmFiYzVmNTgzYjc2YmUzOGQ5MmYwZmRmMS4uMTVmZGYyMjRhODk2NmJlMTFkY2Y2
M2UyZmE4ZjU4N2EwM2U3MjY0NCAxMDA2NDQKLS0tIGEvU291cmNlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9DTWFrZUxpc3RzLnR4dApAQCAtNDYsNiArNDYsNyBAQCBXRUJLSVRfU0VUX0VY
VFJBX0NPTVBJTEVSX0ZMQUdTKFdURiAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogV0VC
S0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhKYXZhU2NyaXB0Q29yZSAke0FERElUSU9OQUxf
Q09NUElMRVJfRkxBR1N9KQogCiBpZiAoRU5BQkxFX1dFQkNPUkUpCisgICAgV0VCS0lUX1NFVF9F
WFRSQV9DT01QSUxFUl9GTEFHUyhQQUwgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKICAg
ICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmVUZXN0U3VwcG9ydCAke0FE
RElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJf
RkxBR1MoV2ViQ29yZSAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9T
RVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29yZURlcml2ZWRTb3VyY2VzICR7QURESVRJT05B
TF9DT01QSUxFUl9GTEFHU30pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDZlYjMxNDY5OWFiZDUx
NDlhOWQ0YjVmZjllOTE2ODU4NjU0OTgxM2QuLmE5Zjg3YmI3YjBiOWI5ZDRlYTdjNzFmYWY2OTky
ZTdiMDc4ZjA4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xLDYgKzEsNyBAQAogY21ha2Vf
bWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuOC4xMikKIGluY2x1ZGUoV2ViS2l0Q29tbW9uKQog
c2V0X3Byb3BlcnR5KERJUkVDVE9SWSAuIFBST1BFUlRZIEZPTERFUiAiV2ViQ29yZSIpCithZGRf
c3ViZGlyZWN0b3J5KFBBTCkKIAogc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpAQCAtMjk1Miw2ICsyOTUzLDcgQEAgc2V0KFdlYkNvcmVf
UExVR19JTlNfUkVTT1VSQ0VTCiBzZXQoV2ViQ29yZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJS
QVJJRVN9CiAgICAgSmF2YVNjcmlwdENvcmUke0RFQlVHX1NVRkZJWH0KKyAgICBQQUwKICkKIAog
aWYgKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmln
dXJhdGlvbnMvUEFMLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5YmEyZWQwNjJkZTk0MWI5NjkwMmNh
NDRjZWFhMWMwZTQ3MTc5NzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9QQUwueGNjb25maWcKQEAgLTAsMCArMSwzNiBAQAorLy8gQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
Ky8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVkZSAiV2ViQ29yZS54Y2NvbmZpZyIKKworSU5T
VEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfJChDT05GSUdVUkFUSU9OKSk7CitJTlNUQUxMX1BB
VEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwvbGliOworCitTS0lQX0lOU1RBTEwgPSAkKFNLSVBf
SU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFMTCkpOworU0tJUF9JTlNUQUxMXyA9IFlFUzsKK1NL
SVBfSU5TVEFMTF9OTyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9ZRVMgPSBOTzsKKworUFJPRFVDVF9O
QU1FID0gUEFMOworRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CitFWFBPUlRFRF9TWU1CT0xTX0ZJ
TEUgPSA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3Jl
LnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZp
ZwppbmRleCBjNDg4ZjgwNGZmYjAwNjc0YmJlOThhMWQyODU2YjM2MGRhYzBjOGEzLi41OWYzOGU1
MGNiODNlZjRjODk1ZDA1MTA0ODM4YmQ5NTQ3NmNjMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKQEAgLTQ2LDcgKzQ2LDcgQEAgT1RIRVJf
Q1BMVVNQTFVTRkxBR1MgPSAkKE9USEVSX0NGTEFHUyk7CiAKIFdFQktJVEFERElUSU9OU19IRUFE
RVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRl
L1dlYktpdEFkZGl0aW9ucyAkKFNES1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0
aW9uczsKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9IEZvcndhcmRpbmdIZWFkZXJzIGljdSAvdXNy
L2luY2x1ZGUvbGlieHNsdCAvdXNyL2luY2x1ZGUvbGlieG1sMiAiJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUiICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xv
Y2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoSEVB
REVSX1NFQVJDSF9QQVRIUyk7CitIRUFERVJfU0VBUkNIX1BBVEhTID0gRm9yd2FyZGluZ0hlYWRl
cnMgaWN1ICQoU1JDUk9PVCkgL3Vzci9pbmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnht
bDIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlM
VF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFE
RVJfU0VBUkNIX1BBVEhTKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUg
PSBJbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRIID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZh
dGVGcmFtZXdvcmtzOwogSU5TVEFMTF9QQVRIW3Nkaz1tYWNvc3gqXSA9ICQoV0VCQ09SRV9GUkFN
RVdPUktTX0RJUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA4YTQ1
M2E3MDViNmU2MjAxYmQ5OTY2ODQ2NTg1MDY2MDY1NzE4OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDMwIEBACitzZXQoUEFM
X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAiJHtQQUxfRElSfSIKKyAgICAiJHtQQUxfRElSfS9j
cnlwdG8iCispCisKK3NldChQQUxfU09VUkNFUworKQorCitzZXQoUEFMX0xJQlJBUklFUworICAg
IFdURgorKQorCitXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKworV0VC
S0lUX1dSQVBfU09VUkNFTElTVCgke1BBTF9TT1VSQ0VTfSkKK1dFQktJVF9GUkFNRVdPUksoUEFM
KQorCitpZiAoTVNWQykKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAgIFRBUkdFVCBQ
QUwKKyAgICAgICAgUFJFX0JVSUxECisgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9
ICR7V0VCS0lUX0xJQlJBUklFU19ESVJ9L3Rvb2xzL3NjcmlwdHMvYXV0by12ZXJzaW9uLnBsICR7
REVSSVZFRF9TT1VSQ0VTX0RJUn0KKyAgICAgICAgVkVSQkFUSU0pCisKKyAgICBhZGRfY3VzdG9t
X2NvbW1hbmQoCisgICAgICAgIFRBUkdFVCBQQUwKKyAgICAgICAgUE9TVF9CVUlMRAorICAgICAg
ICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVF9MSUJSQVJJRVNfRElSfS90b29s
cy9zY3JpcHRzL3ZlcnNpb24tc3RhbXAucGwgJHtERVJJVkVEX1NPVVJDRVNfRElSfSAkPFRBUkdF
VF9GSUxFOlBBTD4KKyAgICAgICAgVkVSQkFUSU0pCitlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML1Bs
YXRmb3JtRWZsLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NWMxODk4NGFlODliOWNlYWFiMjViNTdmZGEw
NmExYTE1ZmM2M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZv
cm1FZmwuY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQQUxfU09VUkNFUworICAg
IGNyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML1Bs
YXRmb3JtR1RLLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NWMxODk4NGFlODliOWNlYWFiMjViNTdmZGEw
NmExYTE1ZmM2M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZv
cm1HVEsuY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQQUxfU09VUkNFUworICAg
IGNyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML1Bs
YXRmb3JtTWFjLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmOTY4ZWM0ZDk4ZTQxZjczNzI5MGY4ZjRmMjhm
NzRmNmEyZTYxZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZv
cm1NYWMuY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQQUxfU09VUkNFUworICAg
IGNyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAorKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUEFML1BsYXRmb3JtV2luLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNjkxOWY3NmYxMDhmNzJl
Yzg4N2ExYjczNTA3ODE3MjJhMjU4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQQUxf
U09VUkNFUworICAgIGNyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAorKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oIGIvU291cmNlL1dlYkNvcmUvUEFML2NvbmZp
Zy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU0ODhjODBhZGY2YzExZjZjMzA4MjAzYThlNzJlYTQ4MzY4NmYzZjQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmgKQEAgLTAsMCAr
MSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ09O
RklHX0gpICYmIEhBVkVfQ09ORklHX0ggJiYgZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQor
I2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgorCisjaWZkZWYgX19BUFBMRV9f
CisjZGVmaW5lIEhBVkVfRlVOQ19VU0xFRVAgMQorI2VuZGlmIC8qIF9fQVBQTEVfXyAqLworCisj
aWYgT1MoV0lORE9XUykKKworI2lmbmRlZiBfV0lOMzJfV0lOTlQKKyNkZWZpbmUgX1dJTjMyX1dJ
Tk5UIDB4NjAxCisjZW5kaWYKKworI2lmbmRlZiBXSU5WRVIKKyNkZWZpbmUgV0lOVkVSIDB4MDYw
MQorI2VuZGlmCisKKyNlbmRpZiAvKiBPUyhXSU5ET1dTKSAqLworCisjaWZkZWYgX19jcGx1c3Bs
dXMKKworLy8gVGhlc2UgdW5kZWZzIG1hdGNoIHVwIHdpdGggZGVmaW5lcyBpbiBXZWJDb3JlUHJl
Zml4LmggZm9yIE1hYyBPUyBYLgorLy8gSGVscHMgdXMgY2F0Y2ggaWYgYW55b25lIHVzZXMgbmV3
IG9yIGRlbGV0ZSBieSBhY2NpZGVudCBpbiBjb2RlIGFuZCBkb2Vzbid0IGluY2x1ZGUgImNvbmZp
Zy5oIi4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgorCisjaW5jbHVkZSA8Y2lzbzY0Nj4KKworI2VuZGlmCisKKyNpbmNsdWRlIDx3dGYvRGlz
YWxsb3dDVHlwZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9Dcnlw
dG9EaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWIyMDg2YTVlZWVmYjExM2Q1YWQyMTljZWY4YjQxOTc3ZDc0YmZhYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4
dDsKKworY2xhc3MgQ3J5cHRvRGlnZXN0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcnlw
dG9EaWdlc3QpOworcHVibGljOgorICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKKyAgICAgICAg
U0hBXzEsCisgICAgICAgIFNIQV8yMjQsCisgICAgICAgIFNIQV8yNTYsCisgICAgICAgIFNIQV8z
ODQsCisgICAgICAgIFNIQV81MTIsCisgICAgfTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0RpZ2VzdD4gY3JlYXRlKEFsZ29yaXRobSk7CisgICAgfkNyeXB0b0RpZ2VzdCgpOwor
CisgICAgdm9pZCBhZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVIYXNoKCk7CisKK3ByaXZhdGU6CisgICAgQ3J5cHRv
RGlnZXN0KCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gbV9j
b250ZXh0OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpQQUwKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vY29tbW9uY3J5cHRvL0Ny
eXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdlNzY2YWE4YTU2MWI5OWU0
ZTU3ZGE5ZTI2OTEyYzNiZTg1YmVkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKQEAg
LTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRv
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlw
dG9EaWdlc3RDb250ZXh0IHsKKyAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07
CisgICAgdm9pZCogY2NDb250ZXh0OworfTsKKworaW5saW5lIENDX1NIQTFfQ1RYKiB0b1NIQTFD
b250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRl
eHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDQ19TSEExX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9Citp
bmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyMjRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQq
IGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1
Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTI1Nl9DVFgqIHRv
U0hBMjU2Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VS
VChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250
ZXh0KTsKK30KK2lubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTM4NENvbnRleHQoQ3J5cHRvRGln
ZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hB
NTEyX0NUWCogdG9TSEE1MTJDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7
CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzUxMik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250
ZXh0LT5jY0NvbnRleHQpOworfQorCitDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCisgICAg
OiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCit7Cit9CisKK0NyeXB0b0RpZ2Vz
dDo6fkNyeXB0b0RpZ2VzdCgpCit7CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkg
eworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBkZWxl
dGUgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAgZGVsZXRlIHRv
U0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgZGVsZXRlIHRvU0hB
MjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgZGVsZXRlIHRvU0hBMzg0
Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAgICAgICAgZGVsZXRlIHRvU0hBNTEyQ29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCisKK3N0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
RGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQt
PmFsZ29yaXRobSA9IGFsZ29yaXRobTsKKworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKKyAgICAgICAgQ0NfU0hBMV9D
VFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMV9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0
LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEExX0luaXQoY29udGV4dCk7Cisg
ICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQ6IHsKKyAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBD
Q19TSEEyNTZfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29u
dGV4dDsKKyAgICAgICAgQ0NfU0hBMjI0X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBk
aWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6
IHsKKyAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOwor
ICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAg
Q0NfU0hBMjU2X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQor
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAgICAgICAgQ0Nf
U0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOworICAgICAgICBkaWdlc3Qt
Pm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMzg0X0luaXQo
Y29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKKyAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29u
dGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2ND
b250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBNTEyX0luaXQoY29udGV4dCk7CisgICAg
ICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIH0KK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6
OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIHN3aXRj
aCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMToKKyAgICAgICAgQ0NfU0hBMV9VcGRhdGUodG9TSEExQ29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIENDX1NIQTIyNF9VcGRhdGUo
dG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAg
ICAgICAgQ0NfU0hBMjU2X1VwZGF0ZSh0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwg
aW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0OgorICAgICAgICBDQ19TSEEzODRfVXBkYXRlKHRvU0hBMzg0Q29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIENDX1NI
QTUxMl9VcGRhdGUodG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5n
dGgpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRv
RGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAg
ICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzE6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMV9ESUdFU1Rf
TEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMV9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250
ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTIy
NF9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCks
IHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgcmVzdWx0LnJl
c2l6ZShDQ19TSEEyNTZfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NIQTI1Nl9GaW5hbChy
ZXN1bHQuZGF0YSgpLCB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAg
ICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMzg0X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19T
SEEzODRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQo
KSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfNTEyOgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTUxMl9ESUdFU1RfTEVOR1RIKTsK
KyAgICAgICAgQ0NfU0hBNTEyX0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBNTEyQ29udGV4dCht
X2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6UEFMCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMzdmZWY0ZmY4MmM3ZGRkYWM1OTAzOGI2NGY1ZWI0ZTYzYzlkYWRiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0
R0NyeXB0LmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEln
YWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0SG9tZQorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRl
IDxnY3J5cHQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsKKworc3Ry
dWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIGludCBhbGdvcml0aG07CisgICAgZ2NyeV9t
ZF9oZF90IG1kOworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9j
b250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5D
cnlwdG9EaWdlc3QoKQoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7Cisg
ICAgaW50IGdjcnlwdEFsZ29yaXRobTsKKworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6CisgICAgICAgIGdjcnlwdEFsZ29y
aXRobSA9IEdDUllfTURfU0hBMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9N
RF9TSEEyMjQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yNTY6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjU2Owor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTM4NDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAgICAgICAg
Z2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEE1MTI7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGln
ZXN0KTsKKyAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gZ2NyeXB0QWxnb3JpdGht
OworCisgICAgZ2NyeV9tZF9vcGVuKCZkaWdlc3QtPm1fY29udGV4dC0+bWQsIGdjcnlwdEFsZ29y
aXRobSwgMCk7CisgICAgaWYgKCFkaWdlc3QtPm1fY29udGV4dC0+bWQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIGRpZ2VzdDsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6
OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGdjcnlf
bWRfd3JpdGUobV9jb250ZXh0LT5tZCwgaW5wdXQsIGxlbmd0aCk7Cit9CisKK1ZlY3Rvcjx1aW50
OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBpbnQgZGlnZXN0TGVuID0g
Z2NyeV9tZF9nZXRfYWxnb19kbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKKyAgICBWZWN0b3I8
dWludDhfdD4gcmVzdWx0KGRpZ2VzdExlbik7CisKKyAgICBnY3J5X21kX2ZpbmFsKG1fY29udGV4
dC0+bWQpOworICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBnY3J5X21kX3JlYWQobV9jb250ZXh0
LT5tZCwgMCksIGRpZ2VzdExlbik7CisgICAgZ2NyeV9tZF9jbG9zZShtX2NvbnRleHQtPm1kKTsK
KworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6UEFM
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdl
c3RHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nbnV0bHMvQ3J5cHRvRGln
ZXN0R251VExTLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWE3YmExOTAxNDRlZjU5MWU1YTgwM2IzY2FlMjMx
YmM3NjBhYWIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9n
bnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNp
bmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+CisjaW5jbHVkZSA8Z251dGxzL2dudXRscy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0
Q29udGV4dCB7CisgICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBhbGdvcml0aG07CisgICAg
Z251dGxzX2hhc2hfaGRfdCBoYXNoOworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3Qo
KQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlw
dG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQoreworICAgIGdudXRsc19oYXNoX2RlaW5pdChtX2Nv
bnRleHQtPmhhc2gsIDApOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7Cisg
ICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBnbnV0bHNBbGdvcml0aG07CisKKyAgICBzd2l0
Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
OiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6
IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEyMjQ7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
OiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjU2OworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4
NDogeworICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTM4NDsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81
MTI6IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEE1MTI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGln
ZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFs
Z29yaXRobSA9IGdudXRsc0FsZ29yaXRobTsKKworICAgIGludCByZXQgPSBnbnV0bHNfaGFzaF9p
bml0KCZkaWdlc3QtPm1fY29udGV4dC0+aGFzaCwgZ251dGxzQWxnb3JpdGhtKTsKKyAgICBpZiAo
cmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIGRpZ2VzdDsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZv
aWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGdudXRsc19oYXNoKG1fY29udGV4dC0+
aGFzaCwgaW5wdXQsIGxlbmd0aCk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6
OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAgIGludCBk
aWdlc3RMZW4gPSBnbnV0bHNfaGFzaF9nZXRfbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKKyAg
ICByZXN1bHQucmVzaXplKGRpZ2VzdExlbik7CisKKyAgICBnbnV0bHNfaGFzaF9vdXRwdXQobV9j
b250ZXh0LT5oYXNoLCByZXN1bHQuZGF0YSgpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K30gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6UEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjVlMzJjMzQzMGQ5
YWQ3NDljYjliOWU3OGY4MTM1NWIzM2M5ZmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcApAQCAtMCwwICsxLDEwNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9EaWdl
c3QuaCIKKworI2luY2x1ZGUgPHdpbmNyeXB0Lmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0
Q29udGV4dCB7CisgICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOworICAgIEhD
UllQVFBST1YgaENvbnRleHQgeyAwIH07CisgICAgSENSWVBUSEFTSCBoSGFzaCB7IDAgfTsKK307
CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5
cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkK
K3sKKyAgICBpZiAoSENSWVBUSEFTSCBoSGFzaCA9IG1fY29udGV4dC0+aEhhc2gpCisgICAgICAg
IENyeXB0RGVzdHJveUhhc2goaEhhc2gpOworICAgIGlmIChIQ1JZUFRQUk9WIGhDb250ZXh0ID0g
bV9jb250ZXh0LT5oQ29udGV4dCkKKyAgICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ29udGV4
dCwgMCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKEFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0
LT5hbGdvcml0aG0gPSBhbGdvcml0aG07CisgICAgaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZk
aWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIG51bGxwdHIsIG51bGxwdHIgLyogdXNlIGRlZmF1
bHQgcHJvdmlkZXIgKi8sIFBST1ZfUlNBX0FFUywgQ1JZUFRfVkVSSUZZQ09OVEVYVCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7CisgICAgc3dp
dGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MTogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRl
eHQtPmhDb250ZXh0LCBDQUxHX1NIQTEsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1NjogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0
LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8yNTYsIDAsIDAsICZkaWdlc3QtPm1fY29u
dGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0
ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8zODQsIDAsIDAsICZk
aWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogeworICAgICAgICBzdWNjZWVkZWQg
PSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV81
MTIsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgfQorICAgIGlmIChzdWNjZWVkZWQpCisgICAgICAgIHJldHVybiBkaWdlc3Q7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25z
dCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoIWlucHV0IHx8ICFsZW5n
dGgpCisgICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEhhc2hEYXRhKG1f
Y29udGV4dC0+aEhhc2gsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQllURSo+KGlucHV0KSwgbGVu
Z3RoLCAwKSk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNo
KCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAgIERXT1JEIGRpZ2VzdExlbmd0
aEJ1ZmZlcjsKKyAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXJTaXplID0gc2l6ZW9mKGRpZ2Vz
dExlbmd0aEJ1ZmZlcik7CisKKyAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbSht
X2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIU0laRSwgcmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oJmRp
Z2VzdExlbmd0aEJ1ZmZlciksICZkaWdlc3RMZW5ndGhCdWZmZXJTaXplLCAwKSk7CisgICAgcmVz
dWx0LnJlc2l6ZShkaWdlc3RMZW5ndGhCdWZmZXIpOworCisgICAgUkVMRUFTRV9BU1NFUlQoQ3J5
cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5oSGFzaCwgSFBfSEFTSFZBTCwgcmVzdWx0LmRhdGEo
KSwgJmRpZ2VzdExlbmd0aEJ1ZmZlciwgMCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5z
aXplKCkgPT0gZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCBmM2FlODliMDBlM2QzNGJkOTQ1OGM1OGZmYjQ0YThlYTI3OTZiM2RkLi4xZjBlMTAzNWFkNGFk
MmUxZTNmMGIxNzI1YTJhY2VjZWUzYzgwYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtNjksOCArNjksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRm
b3JtL2F1ZGlvL2VmbC9BdWRpb0J1c0VmbC5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5
cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZWZsL0N1cnNvckVmbC5j
cHAKICAgICBwbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL0Ry
YWdJbWFnZUVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjI0MjE2MjljNWVk
NTA3YTc3MzRhM2U2ZGZjZDM0YTcyODgxZWJkZi4uYjFjNmU2YjhjZTEzMzdlMzhjMjg0NjMxNTRi
NWZhZTE3MGNkMDRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTY4LDggKzY4LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9nbGli
L0F1ZGlvQnVzR0xpYi5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGln
ZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9nbGliL0dhbWVwYWRzR2xpYi5j
cHAKIAogICAgIHBsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUxLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBiODEyYjljMWFlN2ZkODMxMWEwZDBlNjNl
ZDgzM2U5MDE3YWRkZmEyLi5jOTQzN2U3M2Q3MGIyZWU4ZmNhZDIzNDBkYjcyY2IzNGRmNTRhOWNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzMyLDggKzMzMiw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KICAg
ICBwbGF0Zm9ybS9jb2NvYS9XZWJDb3JlTlNFcnJvckV4dHJhcy5tbQogCi0gICAgcGxhdGZvcm0v
Y3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCi0KICAgICBw
bGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAogICAgIHBsYXRmb3JtL2dhbWVwYWQv
bWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRl
eCA4ZDdmNTA4YTEyMjk1NzE3OTA3ZGVmNDE0ZjJmMjY0ZGYxMGMxOWFkLi5hNGE5OTA5YjEyMTM0
M2NlZWJjNjliZDAxYTgzNWMxOGYxODkwMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpA
QCAtNzMsOCArNzMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRm
b3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAogCi0gICAgcGxhdGZvcm0vY3J5cHRvL3dp
bi9DcnlwdG9EaWdlc3RXaW4uY3BwCi0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9FbmZvcmNlUEFMTGF5
ZXJpbmcucHkgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0VuZm9yY2VQQUxMYXllcmluZy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MmIzZjkyMjIxNmU0OWViZWIyOWY4Yjk0OTRhMWUzMWFhNDhkNDYyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9FbmZvcmNlUEFMTGF5ZXJpbmcu
cHkKQEAgLTAsMCArMSw0OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworaW1wb3J0IHN5cworaW1wb3J0IG9zCisKK2FyY2hpdmVGaWxlID0gc3lzLmFyZ3ZbMV0KK3Nv
dXJjZURpcmVjdG9yeSA9IHN5cy5hcmd2WzJdCisKK3N5bWJvbE5hbWVzcGFjZUNvbW1hbmQgPSAi
bm0gLWdVaiAiICsgYXJjaGl2ZUZpbGUgKyAiIHwgYysrZmlsdCB8IGdyZXAgXCJeV2ViQ29yZTo6
XCIgfCBncmVwIC12IFwiXldlYkNvcmU6OlBBTDo6XCIiCisKK3J2ID0gb3Muc3lzdGVtKHN5bWJv
bE5hbWVzcGFjZUNvbW1hbmQgKyAiID4gL2Rldi9udWxsIikKKworaWYgcnYgPT0gMDoKKyAgICBw
cmludCgiVGhlIGZvbGxvd2luZyBmaWxlcyBpbiBQQUwgZGVjbGFyZSBzeW1ib2xzIGluIHRoZSBX
ZWJDb3JlIG5hbWVzcGFjZSAod2hpY2ggaXMgZm9yYmlkZGVuIHRvIHByZXNlcnZlIGxheWVyaW5n
KToiKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgIG9zLnN5c3RlbShzeW1ib2xOYW1lc3Bh
Y2VDb21tYW5kKQorICAgIHN5cy5leGl0KDEpCisKK2luY2x1ZGVTZWFyY2hDb21tYW5kID0gImZp
bmQgIiArIHNvdXJjZURpcmVjdG9yeSArICIgXCggLW5hbWUgXCIqLmNwcFwiIC1vciAtbmFtZSBc
IiouaFwiIC1vciAtbmFtZSBcIioubVwiIC1vciAtbmFtZSBcIioubW1cIiBcKSAtZXhlYyBncmVw
IC1xRSBcIl4jKGluY2x1ZGV8aW1wb3J0KSAuV2ViQ29yZS9cIiB7fSBcOyAtcHJpbnQiCisKK3J2
ID0gb3Muc3lzdGVtKCJleGl0ICQoIiArIGluY2x1ZGVTZWFyY2hDb21tYW5kICsgIiB8IHdjIC1s
ICkiKQorCitpZiBydiAhPSAwOgorICAgIHByaW50KCJUaGUgZm9sbG93aW5nIGZpbGVzIGluIFBB
TCBpbmNsdWRlIGhlYWRlcnMgZnJvbSBXZWJDb3JlICh3aGljaCBpcyBmb3JiaWRkZW4gdG8gcHJl
c2VydmUgbGF5ZXJpbmcpOiIpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgb3Muc3lzdGVt
KGluY2x1ZGVTZWFyY2hDb21tYW5kKQorICAgIHN5cy5leGl0KDEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTMzNmZjZTNhOGNj
NDU2YzZhODE0YmYzMzEwZmNhY2NhMzBmNGQyOC4uNDc0ZmU4MTI2NGZmNzI0NTc5N2JlMzgwNjE1
N2RiNmZkN2RhNGE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNTYyMSw2ICs1NjIxLDEwIEBACiAJCUMyODA4MzNGMUM2REMy
NkYwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMjgwODMzRTFDNkRDMjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5o
ICovOyB9OwogCQlDMjgwODM0MDFDNkRDMjc1MDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjgwODMzRDFDNkRD
MjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgKi87IH07CiAJCUMyODA4MzQyMUM2REM5NkEw
MDE0NTFCNiAvKiBKU0ZvbnRGYWNlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzQxMUM2REM5NkEwMDE0NTFCNiAvKiBKU0ZvbnRG
YWNlQ3VzdG9tLmNwcCAqLzsgfTsKKwkJQzI5RTdDNjIxRTI0QkVDNDAwRkZFQzNEIC8qIENyeXB0
b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzI5RTdDNjExRTI0QkVDNDAwRkZFQzNEIC8qIENyeXB0b0RpZ2VzdC5oICovOyB9OworCQlDMjlF
N0M2NTFFMjRCRUU2MDBGRkVDM0QgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOUU3QzY0MUUyNEJF
RTYwMEZGRUMzRCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovOyB9OworCQlDMjlF
N0M2QTFFMjRDMzkwMDBGRkVDM0QgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjlFN0M2OTFFMjRDMzkwMDBGRkVDM0QgLyogY29uZmln
LmggKi87IH07CisJCUMyOUU3QzZDMUUyNENDMkIwMEZGRUMzRCAvKiBsaWJQQUwuYSBpbiBGcmFt
ZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOUU3QzVBMUUyNEJD
MUQwMEZGRUMzRCAvKiBsaWJQQUwuYSAqLzsgfTsKIAkJQzJFMUY0M0YxRDYyNTRFMTAwOTQ2MjVD
IC8qIEJyZWFrTGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRUE0ODE2MDk3RDkzMDIwMDk0QzlFNCAvKiBCcmVha0xpbmVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzMzMEEyMjMxM0VDMTk2
QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMz
M0VFNUM0MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMzNFRTVD
MjE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwICov
OyB9OwpAQCAtNjI2MCw4ICs2MjY0LDYgQEAKIAkJRTFGODBCODgxODMxNzI1MjAwNzg4NUMzIC8q
IENyeXB0b0tleVBhaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxRjgwQjg2MTgzMTcyNTIwMDc4ODVDMyAvKiBDcnlwdG9LZXlQYWlyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFGODBCOEQxODMx
NzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4MEI4QjE4MzE3MkI1MDA3ODg1QzMgLyogSlND
cnlwdG9LZXlQYWlyLmNwcCAqLzsgfTsKIAkJRTFGODBCOEUxODMxNzJCNTAwNzg4NUMzIC8qIEpT
Q3J5cHRvS2V5UGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFGODBCOEMxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5oICovOyB9
OwotCQlFMUZFMTM2NDE4MzQzNTExMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRv
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUx
MzYyMTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovOyB9
OwotCQlFMUZFMTM2NzE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2NjE4MzQzQTEwMDA4
OTJGMTMgLyogQ3J5cHRvRGlnZXN0LmggKi87IH07CiAJCUUxRkUxMzZBMTgzRkUxQUIwMDg5MkYx
MyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2ODE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVAuY3BwICovOyB9OwogCQlFMUZFMTM2QjE4M0ZFMUFCMDA4OTJGMTMg
LyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzY5MTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdv
cml0aG1SU0FfT0FFUC5oICovOyB9OwogCQlFMUZFMTM3MDE4M0ZFQ0YwMDA4OTJGMTMgLyogQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNkUxODNGRUNGMDAwODkyRjEzIC8qIENyeXB0b0FsZ29y
aXRobVJTQV9PQUVQTWFjLmNwcCAqLzsgfTsKQEAgLTY5MDIsNiArNjkwNCwxMyBAQAogCQkJcmVt
b3RlR2xvYmFsSURTdHJpbmcgPSA0MTdEQTZDRjEzNzM0RTAyMDA3QzU3RkI7CiAJCQlyZW1vdGVJ
bmZvID0gV2ViQ29yZVRlc3RTdXBwb3J0OwogCQl9OworCQlDMjlFN0M2NjFFMjRCRjI3MDBGRkVD
M0QgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVy
SXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3
IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2Jh
bElEU3RyaW5nID0gQzI5RTdDNTkxRTI0QkMxQzAwRkZFQzNEOworCQkJcmVtb3RlSW5mbyA9IFBB
TDsKKwkJfTsKIAkJREQwNDFGRjAwOUQ5RTMyNTAwMTBBRjJBIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5l
clBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsK
QEAgLTEzNTM5LDYgKzEzNTQ4LDEyIEBACiAJCUMyODA4MzNEMUM2REMyMkMwMDE0NTFCNiAvKiBK
U0ZvbnRGYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRm9u
dEZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjgwODMzRTFDNkRDMjJD
MDAxNDUxQjYgLyogSlNGb250RmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0ZvbnRGYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODA4MzQxMUM2
REM5NkEwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRm9udEZhY2VDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjlFN0M1QTFFMjRCQzFEMDBGRkVDM0QgLyogbGliUEFMLmEgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGlu
Y2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYlBBTC5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQlDMjlFN0M2MTFFMjRCRUM0MDBGRkVDM0QgLyogQ3J5cHRvRGlnZXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0RpZ2VzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjlFN0M2NDFFMjRCRUU2MDBGRkVDM0QgLyogQ3J5
cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyOUU3QzY5MUUyNEMzOTAwMEZGRUMzRCAvKiBjb25maWcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyOUU3QzZCMUUyNEM3RDEwMEZGRUMzRCAvKiBQQUwueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gUEFMLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMjlFN0M2RjFFMjU2RDgwMDBGRkVDM0QgLyogRW5mb3JjZVBBTExheWVyaW5n
LnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0gRW5mb3JjZVBBTExheWVy
aW5nLnB5OyBwYXRoID0gU2NyaXB0cy9FbmZvcmNlUEFMTGF5ZXJpbmcucHk7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUMzMzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29z
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDaG9vc2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzM0VFNUMyMTRGQjQ5NjEwMDAyMDk1QSAvKiBC
YXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzM0VFNUMzMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xp
Y2thYmxlV2l0aEtleUlucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTQyNjIsOCArMTQyNzcsNiBAQAogCQlFMUY4MEI4NjE4MzE3MjUyMDA3ODg1QzMg
LyogQ3J5cHRvS2V5UGFpci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlw
dG9LZXlQYWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRjgwQjhCMTgzMTcy
QjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNDcnlwdG9LZXlQYWlyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTFGODBCOEMxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NyeXB0b0tleVBhaXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFGRTEzNjIxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0
b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlFMUZFMTM2NjE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0RpZ2VzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMUZFMTM2ODE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRTEzNkUxODNGRUNGMDAwODkyRjEzIC8q
IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE0OTcyLDYgKzE0OTg1LDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1l
d29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAorCQkJCUMyOUU3QzZDMUUyNENDMkIwMEZGRUMzRCAvKiBsaWJQQUwuYSBpbiBGcmFt
ZXdvcmtzICovLAogCQkJCUZEMkRCRjEyMTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVyYXRlLmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjEzMTJCMDQ4QTMwMEVEOThDNiAv
KiBBdWRpb1Rvb2xib3guZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMUFCMzNEQTUx
MjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLApAQCAt
MTQ5ODUsNiArMTQ5OTksMTMgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJQzI5RTdDNTcxRTI0QkMxQzAwRkZFQzNEIC8qIEZyYW1l
d29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJRTFCQTY3MEUxNzQyQkRF
MDAwQzIwMjUxIC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0xNTAxNSw2ICsx
NTAzNiw3IEBACiAJCQkJRTFCQTY3MTYxNzQyQkRFMDAwQzIwMjUxIC8qIGxpYldlYkNvcmVUZXN0
U2hpbS5keWxpYiAqLywKIAkJCQk0MTdEQTZEMDEzNzM0RTAyMDA3QzU3RkIgLyogbGliV2ViQ29y
ZVRlc3RTdXBwb3J0LmR5bGliICovLAogCQkJCTkzRjE5QjFBMDgyNDVFNUEwMDFFOUFCQyAvKiBX
ZWJDb3JlLmZyYW1ld29yayAqLywKKwkJCQlDMjlFN0M1QTFFMjRCQzFEMDBGRkVDM0QgLyogbGli
UEFMLmEgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOwpAQCAtMTU0MTgsNiArMTU0NDAsNyBAQAogCQkJCTJFNDM0NjMxMEY1NDZBNjgw
MEIwRjFCQSAvKiB3b3JrZXJzICovLAogCQkJCUUxRjA0MjQzMDk4MzkzODkwMDY2OTRFQSAvKiB4
bWwgKi8sCiAJCQkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3IC8qIERlcml2ZWQgU291cmNlcyAq
LywKKwkJCQlDMjlFN0M1RjFFMjRCQ0EyMDBGRkVDM0QgLyogUEFMICovLAogCQkJCTA4OUMxNjY1
RkU4NDExNThDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJMzcxN0Q3RTQxN0VDQzM2QzAw
M0MyNzZEIC8qIFNjcmlwdHMgKi8sCiAJCQkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3IC8qIEZy
YW1ld29ya3MgKi8sCkBAIC0xNjE5Nyw2ICsxNjIyMCw3IEBACiAJCTFDREQ0NDY2MEJBOUM4MDAw
MEY5MDE0NyAvKiBDb25maWd1cmF0aW9ucyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQzI5RTdDNkIxRTI0QzdEMTAwRkZFQzNEIC8qIFBBTC54Y2NvbmZp
ZyAqLywKIAkJCQkxQ0RENDVFNjBCQTlDODQ2MDBGOTAxNDcgLyogQmFzZS54Y2NvbmZpZyAqLywK
IAkJCQkxQ0RENDVFNDBCQTlDODQ2MDBGOTAxNDcgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICov
LAogCQkJCTQ0OTA5OEIxMEY4RjgyNTIwMDc2QTMyNyAvKiBGZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZyAqLywKQEAgLTE2NTA5LDYgKzE2NTMzLDcgQEAKIAkJCQlGNDgzODk3OTFFMUREMjNBMDA3NkI3
RUEgLyogRWRpdGluZ0hpc3RvcnkgKi8sCiAJCQkJMzcxN0Q3RTUxN0VDQzNBNjAwM0MyNzZEIC8q
IGV4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbCAqLywKIAkJCQkzN0Q0NTZGQjFBOUE1MEI2
MDAzMzMwQTEgLyogTG9jYWxpemFibGVTdHJpbmdzLnBtICovLAorCQkJCUMyOUU3QzZGMUUyNTZE
ODAwMEZGRUMzRCAvKiBFbmZvcmNlUEFMTGF5ZXJpbmcucHkgKi8sCiAJCQkpOwogCQkJbmFtZSA9
IFNjcmlwdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjI0ODEsNyArMjI1MDYs
NiBAQAogCQkJCUZEMzE2MDQwMTJCMDI2QTMwMEMxQTM1OSAvKiBhdWRpbyAqLywKIAkJCQkxQUU0
MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8sCiAJCQkJQTVDOTc0Q0UxMTQ4NUZEQTAwNjZG
MkFCIC8qIGNvY29hICovLAotCQkJCUNFNTBEOENFMUM4OTMyRUQwMDcyRUE1QSAvKiBjcnlwdG8g
Ki8sCiAJCQkJNTE1QkUxODcxRDU0RjVEQjAwREQ3QzY4IC8qIGdhbWVwYWQgKi8sCiAJCQkJQjJB
MDE1OTEwQUY2Q0Q1MzAwNkJDRTBFIC8qIGdyYXBoaWNzICovLAogCQkJCUE1OUUzQzFCMTE1ODBG
MzQwMDcyOTI4RSAvKiBpb3MgKi8sCkBAIC0yMjY3NSw2ICsyMjY5OSwzMiBAQAogCQkJdGFiV2lk
dGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQlDMjlFN0M1RjFFMjRCQ0EyMDBGRkVD
M0QgLyogUEFMICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQlDMjlFN0M2OTFFMjRDMzkwMDBGRkVDM0QgLyogY29uZmlnLmggKi8sCisJCQkJQzI5RTdDNjAx
RTI0QkNERjAwRkZFQzNEIC8qIGNyeXB0byAqLywKKwkJCSk7CisJCQlwYXRoID0gUEFMOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzI5RTdDNjAxRTI0QkNERjAwRkZFQzNE
IC8qIGNyeXB0byAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJQzI5RTdDNjMxRTI0QkVENDAwRkZFQzNEIC8qIGNvbW1vbmNyeXB0byAqLywKKwkJCQlDMjlF
N0M2MTFFMjRCRUM0MDBGRkVDM0QgLyogQ3J5cHRvRGlnZXN0LmggKi8sCisJCQkpOworCQkJcGF0
aCA9IGNyeXB0bzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUMyOUU3QzYz
MUUyNEJFRDQwMEZGRUMzRCAvKiBjb21tb25jcnlwdG8gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMyOUU3QzY0MUUyNEJFRTYwMEZGRUMzRCAvKiBDcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBjb21tb25jcnlw
dG87CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlDOTZGNUVCRjFCNTg3MjI2
MDA5MUVBOUQgLyogbWVkaWFzZXNzaW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTIyOTE5LDIzICsyMjk2OSw2IEBACiAJCQlwYXRoID0gaW9zOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJQ0U1MEQ4Q0UxQzg5MzJFRDAwNzJFQTVB
IC8qIGNyeXB0byAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0J
CQkJQ0U1MEQ4Q0YxQzg5MzJGQjAwNzJFQTVBIC8qIGNvbW1vbmNyeXB0byAqLywKLQkJCQlFMUZF
MTM2NjE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0LmggKi8sCi0JCQkpOwotCQkJcGF0
aCA9IGNyeXB0bzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCUNFNTBEOENG
MUM4OTMyRkIwMDcyRUE1QSAvKiBjb21tb25jcnlwdG8gKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91
cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUUxRkUxMzYyMTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovLAotCQkJKTsKLQkJCXBhdGggPSBjb21tb25jcnlw
dG87Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQlERjlBRkQ2RjEzRkMzMUIw
MDAxNUZFQjcgLyogb2JqYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0yNTIyNSw3ICsyNTI1OCw2IEBACiAJCQkJRTE5QUMzRjExODI0REM3OTAwMzQ5NDI2
IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1Ni5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5QUMzRjMx
ODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4NC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTE5QUMzRjUxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMi5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJRTFGRTEzNjcxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0Rp
Z2VzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE1N0E4RTUxODE3M0EzQTAwOUY4MjFEIC8qIENy
eXB0b0tleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNUY4NEUxODI0Mjg5RDAwRDg0Q0Q5IC8q
IENyeXB0b0tleUFFUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNUY4NUUxODJDMkRGNjAwRDg0
Q0Q5IC8qIENyeXB0b0tleURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjg0MjMsNiArMjg0NTUs
MTUgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKKwkJQzI5RTdDNTgxRTI0QkMxQzAwRkZFQzNEIC8qIEhlYWRlcnMgKi8gPSB7CisJCQlp
c2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlDMjlFN0M2QTFFMjRDMzkwMDBGRkVDM0QgLyogY29uZmln
LmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjlFN0M2MjFFMjRCRUM0MDBGRkVDM0QgLyogQ3J5cHRv
RGlnZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJRTFCQTY2RjYxNzQyQkRFMDAwQzIwMjUxIC8qIEhl
YWRlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0yODQ3Miw2ICsyODUxMyw3IEBACiAJCQlidWlsZFJ1
bGVzID0gKAogCQkJKTsKIAkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQlDMjlFN0M2NzFFMjRCRjI3
MDBGRkVDM0QgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQlERDA0MUZGMTA5RDlFMzI1
MDAxMEFGMkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCSk7CiAJCQluYW1lID0gV2Vi
Q29yZTsKQEAgLTI4NDgwLDYgKzI4NTIyLDI0IEBACiAJCQlwcm9kdWN0UmVmZXJlbmNlID0gOTNG
MTlCMUEwODI0NUU1QTAwMUU5QUJDIC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOwogCQkJcHJvZHVj
dFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5mcmFtZXdvcmsiOwogCQl9OworCQlDMjlF
N0M1OTFFMjRCQzFDMDBGRkVDM0QgLyogUEFMICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFy
Z2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEMyOUU3QzVFMUUyNEJDMUQwMEZGRUMz
RCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUEFMIiAq
LzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCUMyOUU3QzU2MUUyNEJDMUMwMEZGRUMzRCAvKiBT
b3VyY2VzICovLAorCQkJCUMyOUU3QzU3MUUyNEJDMUMwMEZGRUMzRCAvKiBGcmFtZXdvcmtzICov
LAorCQkJCUMyOUU3QzU4MUUyNEJDMUMwMEZGRUMzRCAvKiBIZWFkZXJzICovLAorCQkJCUMyOUU3
QzZFMUUyNTZDRkIwMEZGRUMzRCAvKiBFbmZvcmNlIFBBTCBMYXllcmluZyAqLywKKwkJCSk7CisJ
CQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQlu
YW1lID0gUEFMOworCQkJcHJvZHVjdE5hbWUgPSBQQUw7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0g
QzI5RTdDNUExRTI0QkMxRDAwRkZFQzNEIC8qIGxpYlBBTC5hICovOworCQkJcHJvZHVjdFR5cGUg
PSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyI7CisJCX07CiAJCUUxQkE2
NkYzMTc0MkJERTAwMEMyMDI1MSAvKiBXZWJDb3JlVGVzdFNoaW0gKi8gPSB7CiAJCQlpc2EgPSBQ
QlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gRTFCQTY3MTIxNzQy
QkRFMDAwQzIwMjUxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJXZWJDb3JlVGVzdFNoaW0iICovOwpAQCAtMjg1MDcsNiArMjg1NjcsMTIgQEAKIAkJCQlC
dWlsZEluZGVwZW5kZW50VGFyZ2V0c0luUGFyYWxsZWwgPSBZRVM7CiAJCQkJTGFzdFN3aWZ0VXBk
YXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAwNzAwOworCQkJCVRhcmdl
dEF0dHJpYnV0ZXMgPSB7CisJCQkJCUMyOUU3QzU5MUUyNEJDMUMwMEZGRUMzRCA9IHsKKwkJCQkJ
CUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDguMi4xOworCQkJCQkJUHJvdmlzaW9uaW5nU3R5bGUg
PSBBdXRvbWF0aWM7CisJCQkJCX07CisJCQkJfTsKIAkJCX07CiAJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQljb21wYXRpYmlsaXR5VmVyc2lv
biA9ICJYY29kZSAzLjIiOwpAQCAtMjg1MzEsNiArMjg1OTcsNyBAQAogCQkJCUREMDQxRkJFMDlE
OUREQkUwMDEwQUYyQSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJNDE3REE2Q0YxMzczNEUw
MjAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydCAqLywKIAkJCQlFMUJBNjZGMzE3NDJCREUw
MDBDMjAyNTEgLyogV2ViQ29yZVRlc3RTaGltICovLAorCQkJCUMyOUU3QzU5MUUyNEJDMUMwMEZG
RUMzRCAvKiBQQUwgKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAq
LwpAQCAtMjg2ODAsNiArMjg3NDcsMjAgQEAKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CiAJCQlz
aGVsbFNjcmlwdCA9ICJTUkNfRElSPVwiJFNSQ1JPT1QvTW9kdWxlcy9tb2Rlcm4tbWVkaWEtY29u
dHJvbHNcIlxuRFNUX0RJUj1cIiRCVUlMVF9QUk9EVUNUU19ESVIvJFVOTE9DQUxJWkVEX1JFU09V
UkNFU19GT0xERVJfUEFUSC9tb2Rlcm4tbWVkaWEtY29udHJvbHNcIlxuXG5ta2RpciAtcCBcIiRE
U1RfRElSXCJcblxuaWYgWyBcIiR7UExBVEZPUk1fTkFNRX1cIiA9PSBcIm1hY29zeFwiIF07IHRo
ZW5cbiAgICBJTUdfT1NfUFJFRklYPVwibWFjT1NcIlxuZmlcblxuaWYgWyBcIiR7UExBVEZPUk1f
TkFNRX1cIiA9PSBcImlwaG9uZW9zXCIgXSB8fCBbIFwiJHtQTEFURk9STV9OQU1FfVwiID09IFwi
aXBob25lc2ltdWxhdG9yXCIgXTsgdGhlblxuICAgIElNR19PU19QUkVGSVg9XCJpT1NcIlxuZmlc
blxuaWYgWyAtbiBcIiRJTUdfT1NfUFJFRklYXCIgXTsgdGhlblxuICAgIG1rZGlyIC1wIFwiJERT
VF9ESVIvaW1hZ2VzXCJcbiAgICByc3luYyAtYXEgLS1leGNsdWRlIFwiLnN2blwiIC0tZXhjbHVk
ZSBcIi5EU19TdG9yZVwiIFwiJFNSQ19ESVIvaW1hZ2VzLyRJTUdfT1NfUFJFRklYXCIgXCIkRFNU
X0RJUi9pbWFnZXNcIlxuZmlcblxuY2QgXCIkU1JDX0RJUlwiXG5jYXQgY29udHJvbHMvKi5jc3Mg
PiBcIiREU1RfRElSL21vZGVybi1tZWRpYS1jb250cm9scy5jc3NcIlxuY2F0IGBjYXQganMtZmls
ZXNgID4gXCIkRFNUX0RJUi9tb2Rlcm4tbWVkaWEtY29udHJvbHMuanNcIiI7CiAJCX07CisJCUMy
OUU3QzZFMUUyNTZDRkIwMEZGRUMzRCAvKiBFbmZvcmNlIFBBTCBMYXllcmluZyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsK
KwkJCW5hbWUgPSAiRW5mb3JjZSBQQUwgTGF5ZXJpbmciOworCQkJb3V0cHV0UGF0aHMgPSAoCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVs
bFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAicHl0aG9uICR7U1JDUk9PVH0vU2Ny
aXB0cy9FbmZvcmNlUEFMTGF5ZXJpbmcucHkgJHtCVUlMVF9QUk9EVUNUU19ESVJ9LyR7RlVMTF9Q
Uk9EVUNUX05BTUV9ICR7U1JDUk9PVH0vUEFMIjsKKwkJfTsKIAkJREQwNDFGQkQwOUQ5RERCRTAw
MTBBRjJBIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBA
IC0yOTA2MCw3ICsyOTE0MSw2IEBACiAJCQkJRTE5QUMzRjAxODI0REM3OTAwMzQ5NDI2IC8qIENy
eXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTlBQzNGMjE4MjRE
Qzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUxOUFDM0Y0MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJRTFGRTEzNjQxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0Rp
Z2VzdENvbW1vbkNyeXB0by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTU3QThFNDE4MTczQTNB
MDA5RjgyMUQgLyogQ3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjVGODREMTgy
NDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9LZXlBRVMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEy
NUY4NjMxODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzE4ODQsNiArMzE5NjQsMTQgQEAKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJQzI5RTdDNTYxRTI0QkMx
QzAwRkZFQzNEIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlD
MjlFN0M2NTFFMjRCRUU2MDBGRkVDM0QgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBp
biBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQl9OwogCQlFMUJBNjcwMjE3NDJCREUwMDBDMjAyNTEgLyogU291cmNlcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKQEAgLTMxOTEwLDYgKzMxOTk4LDExIEBACiAJCQl0YXJnZXQgPSA0MTdEQTZD
RjEzNzM0RTAyMDA3QzU3RkIgLyogV2ViQ29yZVRlc3RTdXBwb3J0ICovOwogCQkJdGFyZ2V0UHJv
eHkgPSA0MTgxNkY4NDEzODU5QzdEMDA1N0FBQTQgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICov
OwogCQl9OworCQlDMjlFN0M2NzFFMjRCRjI3MDBGRkVDM0QgLyogUEJYVGFyZ2V0RGVwZW5kZW5j
eSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSBDMjlF
N0M1OTFFMjRCQzFDMDBGRkVDM0QgLyogUEFMICovOworCQkJdGFyZ2V0UHJveHkgPSBDMjlFN0M2
NjFFMjRCRjI3MDBGRkVDM0QgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQlE
RDA0MUZGMTA5RDlFMzI1MDAxMEFGMkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSBERDA0MUZCRTA5RDlEREJF
MDAxMEFGMkEgLyogRGVyaXZlZCBTb3VyY2VzICovOwpAQCAtMzIwNTMsNiArMzIxNDYsMjcgQEAK
IAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJQzI5RTdDNUIxRTI0QkMxRDAw
RkZFQzNEIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEMyOUU3QzZCMUUyNEM3RDEwMEZGRUMzRCAv
KiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUg
PSBEZWJ1ZzsKKwkJfTsKKwkJQzI5RTdDNUMxRTI0QkMxRDAwRkZFQzNEIC8qIFJlbGVhc2UgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gQzI5RTdDNkIxRTI0QzdEMTAwRkZFQzNEIC8qIFBBTC54Y2NvbmZpZyAqLzsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJ
CUMyOUU3QzVEMUUyNEJDMUQwMEZGRUMzRCAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEMy
OUU3QzZCMUUyNEM3RDEwMEZGRUMzRCAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQlERDA0MUZDMjA5
RDlERERDMDAxMEFGMkEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUNERDQ1RTUwQkE5Qzg0NjAw
RjkwMTQ3IC8qIFdlYkNvcmUueGNjb25maWcgKi87CkBAIC0zMjE0MSw2ICszMjI1NSwxNiBAQAog
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwogCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25OYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJQzI5RTdDNUUxRTI0QkMxRDAwRkZFQzNE
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJQQUwiICov
ID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlv
bnMgPSAoCisJCQkJQzI5RTdDNUIxRTI0QkMxRDAwRkZFQzNEIC8qIERlYnVnICovLAorCQkJCUMy
OUU3QzVDMUUyNEJDMUQwMEZGRUMzRCAvKiBSZWxlYXNlICovLAorCQkJCUMyOUU3QzVEMUUyNEJD
MUQwMEZGRUMzRCAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0
aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rp
b247CisJCX07CiAJCUREMDQxRkMxMDlEOUREREMwMDEwQUYyQSAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2VzIiAqLyA9IHsK
IAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0g
KApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEExLmNwcAppbmRleCAwYzhkZmRkZDFlMGE3YWRiYWExOGVmOWM1MTJhNzI4Yzk0
MmFkZTI5Li4yMTBkOThmM2Q2MGY3YWZiM2VjOTdmMDJlMmIzNDhlN2M5MjJhZDMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEx
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1TSEExLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8p
CiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlw
dG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYs
NyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTE6OmlkZW50
aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChWZWN0b3I8
dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25D
YWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgYXV0byBk
aWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2Fn
ZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWwKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3Jp
dGhtU0hBMTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0
ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsK
KyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZh
aWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAK
aW5kZXggNmNhMWFlZTVhNmJiN2Q4M2NhMDU2NDE5ZGNiZWJkNTE3YjlkNjE4NS4uYmU0NDE5NTc0
MjI4Y2I1MTA5MWZlNjViNDhjYmYzMWMyMGZiZjg3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCkBA
IC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1ZGUg
IkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9EaWdl
c3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjppZGVudGlmaWVyKCkgY29u
c3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4m
JiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYm
IGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3Jr
UXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRvIGRpZ2VzdCA9
IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzIyNCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2so
T3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwg
VmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNI
QTIyNDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwg
Y29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFj
aywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0ID0g
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwor
ICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBm
YWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3Bw
CmluZGV4IDczNjYwZjU5OWFmMzdjYTlkZTlhMjE5ZTNmNGYyMzQ4ZjQ2YWMyYjMuLjZmODE2Yzg5
NGE3OWVlN2E2ZDNiZTdiZjY5NGQ0MTg5MDYwYjg2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcApA
QCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRl
ICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGln
ZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6aWRlbnRpZmllcigpIGNv
bnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+
JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2sm
JiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29y
a1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdlc3Qg
PSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yNTYpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lk
IENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2Us
IFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1T
SEEyNTY6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9
IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsK
KyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAg
ZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNw
cAppbmRleCBjOTc3NTJkODFjMDA1NDIzOWIwYjg4YzYwYWEzNDNlZmE2NWUxNDc3Li5kZTExNTg3
NzAzOGI1MjExYjA3MDUxYzI2NGIzMGVhMDUwZDQ1OWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAK
QEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVk
ZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0b0Rp
Z2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmlkZW50aWZpZXIoKSBj
b25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90
PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdv
cmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0Ojpj
cmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOworICAgIGF1dG8gZGlnZXN0
ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMzg0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9p
ZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdl
LCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGht
U0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3Qg
PSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7
CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAg
IGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5j
cHAKaW5kZXggMzNlNDgzZGExNWQxMGNjZGI3M2VlMzhmOTNhMTNkNmQ3MTg3MDJlZi4uMzY1ODkz
MDI4NmI4ZjBkZDNmYzYyMjdiOGVjYjNlMTA0NjBiYzNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3Bw
CkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1
ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9E
aWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjppZGVudGlmaWVyKCkg
Y29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0b3I8dWludDhf
dD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFj
ayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
b3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICBhdXRvIGRpZ2Vz
dCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzUxMik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2Fn
ZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRo
bVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0
ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIp
OworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAg
ICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVN
YWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNU1hYy5jcHAKaW5kZXggZjZhYjdhMjE1NTUzYjZjYmZiNDczMDM1NWNmZTUzNTJh
OWQwMjM1NS4uN2ZjZjVlMjE2ODY1OGY5YTc0MTE5NjYxZmQwMDRjOGQ3MGFmYjg5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtD
UzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKQEAgLTMwLDI2ICszMCwyNiBAQAogCiAjaW5j
bHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGht
UnNhU3NhUGFyYW1zRGVwcmVjYXRlZC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2lu
Y2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9Dcnlw
dG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RkOjpvcHRpb25h
bDxDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8UEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQogewogICAgIHN3aXRjaCAoaGFzaEZ1bmN0
aW9uKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKLSAgICAg
ICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsKKyAgICAgICAgcmV0dXJu
IFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOwogICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjI0OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzIyNDsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNI
QV8yNTY6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsK
KyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CiAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgotICAgICAgICByZXR1
cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVybiBQQUw6
OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfNTEyOworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzUxMjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50
OF90Pj4gc2lnblJTQVNTQV9QS0NTMV92MV81KENyeXB0b0FsZ29yaXRobUlkZW50aWYKICAgICBh
dXRvIGNyeXB0b0RpZ2VzdEFsZ29yaXRobSA9IFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRo
bShoYXNoKTsKICAgICBpZiAoIWNyeXB0b0RpZ2VzdEFsZ29yaXRobSkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9E
aWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKKyAgICBhdXRvIGRpZ2VzdCA9
IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CiAgICAg
aWYgKCFkaWdlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9
OwogICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YSwgZGF0YUxlbmd0aCk7CkBAIC05Myw3ICs5Myw3
IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiB2ZXJpZnlSU0FTU0FfUEtDUzFfdjFfNShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsCiAgICAgYXV0byBjcnlwdG9EaWdlc3RBbGdvcml0
aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaCk7CiAgICAgaWYgKCFjcnlw
dG9EaWdlc3RBbGdvcml0aG0pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OwotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0Rp
Z2VzdEFsZ29yaXRobSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOwogICAgIGlmICghZGlnZXN0KQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICBkaWdlc3QtPmFkZEJ5dGVz
KGRhdGEsIGRhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAKaW5kZXggZGY5NjFlMDE4YWI3ZmEwM2NkYTU5NGI5MjQxOGY1OTRlZjk0
OGI4Yi4uMjIyNjIyMjg5OTRiNWE4N2Q4OThjZjE4YjRhZmI3NDdiMjU4ZDQ1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00NSw3ICs0
NSw2IEBACiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkNvb2tpZS5oIgog
I2luY2x1ZGUgIkNvb2tpZUphci5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1
ZGUgIkRPTUVkaXRvci5oIgogI2luY2x1ZGUgIkRPTVBhdGNoU3VwcG9ydC5oIgogI2luY2x1ZGUg
IkRPTVdpbmRvdy5oIgpAQCAtNzksNiArNzgsNyBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNs
dWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRv
L0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJQc2V1
ZG9FbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKQEAgLTEzMTcsNyArMTMxNyw3
IEBAIHN0YXRpYyBTdHJpbmcgY29tcHV0ZUNvbnRlbnRTZWN1cml0eVBvbGljeVNIQTI1Nkhhc2go
Y29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICBUZXh0RW5jb2RpbmcgZG9jdW1lbnRFbmNvZGlu
ZyA9IGVsZW1lbnQuZG9jdW1lbnQoKS50ZXh0RW5jb2RpbmcoKTsKICAgICBjb25zdCBUZXh0RW5j
b2RpbmcmIGVuY29kaW5nVG9Vc2UgPSBkb2N1bWVudEVuY29kaW5nLmlzVmFsaWQoKSA/IGRvY3Vt
ZW50RW5jb2RpbmcgOiBVVEY4RW5jb2RpbmcoKTsKICAgICBDU3RyaW5nIGNvbnRlbnQgPSBlbmNv
ZGluZ1RvVXNlLmVuY29kZShUZXh0Tm9kZVRyYXZlcnNhbDo6Y29udGVudHNBc1N0cmluZyhlbGVt
ZW50KSwgRW50aXRpZXNGb3JVbmVuY29kYWJsZXMpOwotICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0g
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwor
ICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICBjcnlwdG9EaWdlc3QtPmFkZEJ5
dGVzKGNvbnRlbnQuZGF0YSgpLCBjb250ZW50Lmxlbmd0aCgpKTsKICAgICBWZWN0b3I8dWludDhf
dD4gZGlnZXN0ID0gY3J5cHRvRGlnZXN0LT5jb21wdXRlSGFzaCgpOwogICAgIHJldHVybiBtYWtl
U3RyaW5nKCJzaGEyNTYtIiwgYmFzZTY0RW5jb2RlKGRpZ2VzdC5kYXRhKCksIGRpZ2VzdC5zaXpl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwCmluZGV4IGYwNTliNjAxNGM4NGI3ZmE0YTczNmY5NTRhODkxMzE0YWI3M2E1ZWQuLjkz
ZWVkMTNkOGVkNDQ0MTM4ODdkNDE1ODRiOTY1ZWIwMWNlNTMwOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMzMsNyArMzMs
NiBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaCIKICNpbmNsdWRlICJD
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2VMaXN0LmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAi
RE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKQEAgLTQ1LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiSlNN
YWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9EaWdlc3Qu
aD4KICNpbmNsdWRlICJQYXJzaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRlci5o
IgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpAQCAtMzAxLDE4ICszMDEsMTggQEAgYm9v
bCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbFBvbGljaWVzQWxsb3coVmlvbGF0ZWREaXJlY3Rp
dmVDYWxsYmFjayYmIGNhbGxiYWMKICAgICByZXR1cm4gaXNBbGxvd2VkOwogfQogCi1zdGF0aWMg
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oQ29udGVudFNl
Y3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0aG0pCitzdGF0aWMgUEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobSB0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShDb250ZW50U2VjdXJpdHlQ
b2xpY3lIYXNoQWxnb3JpdGhtIGFsZ29yaXRobSkKIHsKICAgICBzd2l0Y2ggKGFsZ29yaXRobSkg
ewogICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6U0hBXzI1NjoK
LSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OworICAgICAg
ICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKICAgICBjYXNl
IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIHJl
dHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKKyAgICAgICAgcmV0dXJuIFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CiAgICAgY2FzZSBDb250ZW50U2Vj
dXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICByZXR1cm4gQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgcmV0
dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFByZWRpY2F0ZT4KQEAgLTMzMyw3ICszMzMsNyBAQCBDb250ZW50U2VjdXJpdHlQ
b2xpY3k6Okhhc2hJbkVuZm9yY2VkQW5kUmVwb3J0T25seVBvbGljaWVzUGFpciBDb250ZW50U2Vj
dXJpdHlQbwogICAgIGJvb2wgZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzID0gZmFsc2U7CiAg
ICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9ubHlQb2xpY2llcyA9IGZhbHNlOwogICAgIGZvciAo
YXV0byBhbGdvcml0aG0gOiBhbGdvcml0aG1zKSB7Ci0gICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0
ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGht
KSk7CisgICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0
ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAgICAgICAgY3J5cHRvRGln
ZXN0LT5hZGRCeXRlcyhjb250ZW50Q1N0cmluZy5kYXRhKCksIGNvbnRlbnRDU3RyaW5nLmxlbmd0
aCgpKTsKICAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCBoYXNoID0geyBhbGdvcml0
aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogICAgICAgICBpZiAoIWZvdW5kSGFz
aEluRW5mb3JjZWRQb2xpY2llcyAmJiBhbGxQb2xpY2llc1dpdGhEaXNwb3NpdGlvbkFsbG93KENv
bnRlbnRTZWN1cml0eVBvbGljeTo6RGlzcG9zaXRpb246OkVuZm9yY2UsIHN0ZDo6Zm9yd2FyZDxQ
cmVkaWNhdGU+KHByZWRpY2F0ZSksIGhhc2gpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y3J5cHRvL0NyeXB0b0RpZ2VzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWYw
NzVhYTM3Y2IzNDYyMDk4NDdhNTk5ZTFmNTQyODRmOWYzODE5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0
by9DcnlwdG9EaWdlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIENyeXB0b0RpZ2VzdF9oCi0jZGVmaW5lIENyeXB0b0RpZ2VzdF9o
Ci0KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQ7Ci0K
LWNsYXNzIENyeXB0b0RpZ2VzdCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvRGln
ZXN0KTsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7Ci0gICAgICAgIFNIQV8x
LAotICAgICAgICBTSEFfMjI0LAotICAgICAgICBTSEFfMjU2LAotICAgICAgICBTSEFfMzg0LAot
ICAgICAgICBTSEFfNTEyLAotICAgIH07Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9EaWdlc3Q+IGNyZWF0ZShBbGdvcml0aG0pOwotICAgIH5DcnlwdG9EaWdlc3QoKTsKLQotICAg
IHZvaWQgYWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOwotICAgIFZl
Y3Rvcjx1aW50OF90PiBjb21wdXRlSGFzaCgpOwotCi1wcml2YXRlOgotICAgIENyeXB0b0RpZ2Vz
dCgpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+IG1fY29udGV4
dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENyeXB0b0RpZ2Vz
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5
cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzZmZjNTYwNTIyNmI2NGI0OTM3M2JlYTY4NWU5MjNm
MDE5OWJiNGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RD
b21tb25DcnlwdG8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc5ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNp
bmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtIGFsZ29yaXRobTsKLSAgICB2b2lkKiBjY0NvbnRleHQ7Ci19OwotCi1pbmxpbmUgQ0Nf
U0hBMV9DVFgqIHRvU0hBMUNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsK
LSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTFfQ1RYKj4oY29udGV4dC0+
Y2NDb250ZXh0KTsKLX0KLWlubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTIyNENvbnRleHQoQ3J5
cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3Jp
dGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUg
Q0NfU0hBMjU2X0NUWCogdG9TSEEyNTZDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRl
eHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzI1Nik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgq
Pihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTUxMl9DVFgqIHRvU0hBMzg0
Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250
ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsK
LX0KLWlubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTUxMkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29u
dGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0Nf
U0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5
cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKLXsK
LX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLSAgICBzd2l0Y2ggKG1fY29u
dGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzE6Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0Ogot
ICAgICAgICBkZWxldGUgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAg
ICAgICBkZWxldGUgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAg
ICBkZWxldGUgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICBk
ZWxldGUgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci19Ci0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQotewotICAgIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBk
aWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3JpdGhtOwotCi0gICAgc3dpdGNoIChh
bGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewot
ICAgICAgICBDQ19TSEExX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEExX0NUWDsKLSAgICAgICAg
ZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTFf
SW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDogewotICAgICAgICBDQ19TSEEyNTZfQ1RY
KiBjb250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0
LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEEyMjRfSW5pdChjb250ZXh0KTsK
LSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzI1NjogewotICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3
IENDX1NIQTI1Nl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBj
b250ZXh0OwotICAgICAgICBDQ19TSEEyNTZfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJu
IGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4
NDogewotICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7
Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAg
ICBDQ19TSEEzODRfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogewotICAgICAgICBD
Q19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7Ci0gICAgICAgIGRpZ2Vz
dC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEE1MTJfSW5p
dChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgfQotfQotCi12
b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5n
dGgpCi17Ci0gICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICBDQ19TSEExX1VwZGF0ZSh0b1NI
QTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1
cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAg
Q0NfU0hBMjI0X1VwZGF0ZSh0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQs
IGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMjU2OgotICAgICAgICBDQ19TSEEyNTZfVXBkYXRlKHRvU0hBMjU2Q29udGV4dCht
X2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIENDX1NIQTM4NF9V
cGRhdGUodG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
MjoKLSAgICAgICAgQ0NfU0hBNTEyX1VwZGF0ZSh0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0Lmdl
dCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLVZlY3Rv
cjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzdWx0OwotICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKLSAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKLSAgICAgICAgcmVzdWx0LnJlc2l6
ZShDQ19TSEExX0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEExX0ZpbmFsKHJlc3VsdC5k
YXRhKCksIHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIHJlc3Vs
dC5yZXNpemUoQ0NfU0hBMjI0X0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEEyMjRfRmlu
YWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2Ogot
ICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAg
Q0NfU0hBMjU2X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQu
Z2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NDoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEzODRfRElHRVNUX0xFTkdU
SCk7Ci0gICAgICAgIENDX1NIQTM4NF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTM4NENvbnRl
eHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBNTEy
X0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEE1MTJfRmluYWwocmVzdWx0LmRhdGEoKSwg
dG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RH
Q3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9E
aWdlc3RHQ3J5cHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTNjOGJmMjQz
ZGMwNzJhYmJhODQ2MTg5NzMzYTBmNTNmZDZjMDRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5
cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykg
MjAxNiBTb2Z0QXRIb21lCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPGdjcnlwdC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKLSAgICBpbnQgYWxnb3JpdGht
OwotICAgIGdjcnlfbWRfaGRfdCBtZDsKLX07Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0
KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKLXsKLX0KLQotQ3J5
cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxn
b3JpdGhtKQotewotICAgIGludCBnY3J5cHRBbGdvcml0aG07Ci0KLSAgICBzd2l0Y2ggKGFsZ29y
aXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAg
ICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTE7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIGdjcnlwdEFsZ29y
aXRobSA9IEdDUllfTURfU0hBMjI0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZ
X01EX1NIQTI1NjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzM4NDoKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEzODQ7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81
MTI6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBNTEyOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3Qo
bmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdj
cnlwdEFsZ29yaXRobTsKLQotICAgIGdjcnlfbWRfb3BlbigmZGlnZXN0LT5tX2NvbnRleHQtPm1k
LCBnY3J5cHRBbGdvcml0aG0sIDApOwotICAgIGlmICghZGlnZXN0LT5tX2NvbnRleHQtPm1kKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBkaWdlc3Q7Ci19Ci0KLXZvaWQg
Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkK
LXsKLSAgICBnY3J5X21kX3dyaXRlKG1fY29udGV4dC0+bWQsIGlucHV0LCBsZW5ndGgpOwotfQot
Ci1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgaW50
IGRpZ2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW4pOwotCi0gICAgZ2NyeV9tZF9m
aW5hbChtX2NvbnRleHQtPm1kKTsKLSAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSwgZ2NyeV9tZF9y
ZWFkKG1fY29udGV4dC0+bWQsIDApLCBkaWdlc3RMZW4pOwotICAgIGdjcnlfbWRfY2xvc2UobV9j
b250ZXh0LT5tZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ251dGxz
L0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8v
Z251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDg5YTVkODFmMmI0YmUyNzMyY2VlM2U1MjYzMzg2ZWQ1OWNiMjE0ZGUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTAyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8Z251dGxzL2dudXRscy5oPgotI2luY2x1
ZGUgPGdudXRscy9jcnlwdG8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5
cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBhbGdvcml0
aG07Ci0gICAgZ251dGxzX2hhc2hfaGRfdCBoYXNoOwotfTsKLQotQ3J5cHRvRGlnZXN0OjpDcnlw
dG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQotewot
fQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotICAgIGdudXRsc19oYXNoX2Rl
aW5pdChtX2NvbnRleHQtPmhhc2gsIDApOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGln
ZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0
aG0pCi17Ci0gICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBnbnV0bHNBbGdvcml0aG07Ci0K
LSAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8xOiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yMjQ6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEyMjQ7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjU2OiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjU2
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NDogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTM4
NDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV81MTI6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEE1
MTI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2Nv
bnRleHQtPmFsZ29yaXRobSA9IGdudXRsc0FsZ29yaXRobTsKLQotICAgIGludCByZXQgPSBnbnV0
bHNfaGFzaF9pbml0KCZkaWdlc3QtPm1fY29udGV4dC0+aGFzaCwgZ251dGxzQWxnb3JpdGhtKTsK
LSAgICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIGRpZ2VzdDsKLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVz
KGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGdudXRsc19oYXNoKG1f
Y29udGV4dC0+aGFzaCwgaW5wdXQsIGxlbmd0aCk7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlw
dG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0Owot
ICAgIGludCBkaWdlc3RMZW4gPSBnbnV0bHNfaGFzaF9nZXRfbGVuKG1fY29udGV4dC0+YWxnb3Jp
dGhtKTsKLSAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbik7Ci0KLSAgICBnbnV0bHNfaGFzaF9v
dXRwdXQobV9jb250ZXh0LT5oYXNoLCByZXN1bHQuZGF0YSgpKTsKLQotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzZjYzE5MmMyYjMwMzk1OTQzMGYyNDljNzM2MzRiMTM5YzdhOGE0
NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPHdpbmNyeXB0Lmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKLSAgICBIQ1JZUFRQUk9WIGhDb250ZXh0
IHsgMCB9OwotICAgIEhDUllQVEhBU0ggaEhhc2ggeyAwIH07Ci19OwotCi1DcnlwdG9EaWdlc3Q6
OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQp
Ci17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci0gICAgaWYgKEhDUllQ
VEhBU0ggaEhhc2ggPSBtX2NvbnRleHQtPmhIYXNoKQotICAgICAgICBDcnlwdERlc3Ryb3lIYXNo
KGhIYXNoKTsKLSAgICBpZiAoSENSWVBUUFJPViBoQ29udGV4dCA9IG1fY29udGV4dC0+aENvbnRl
eHQpCi0gICAgICAgIENyeXB0UmVsZWFzZUNvbnRleHQoaENvbnRleHQsIDApOwotfQotCi1zdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShBbGdvcml0aG0g
YWxnb3JpdGhtKQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChu
ZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxn
b3JpdGhtOwotICAgIGlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmZGlnZXN0LT5tX2NvbnRleHQt
PmhDb250ZXh0LCBudWxscHRyLCBudWxscHRyIC8qIHVzZSBkZWZhdWx0IHByb3ZpZGVyICovLCBQ
Uk9WX1JTQV9BRVMsIENSWVBUX1ZFUklGWUNPTlRFWFQpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBib29sIHN1Y2NlZWRlZCA9IGZhbHNlOwotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKLSAgICAgICAgc3Vj
Y2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FM
R19TSEExLCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKLSAg
ICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29u
dGV4dCwgQ0FMR19TSEFfMjU2LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8zODQ6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9j
b250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMzg0LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQt
PmhIYXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV81MTI6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNo
KGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfNTEyLCAwLCAwLCAmZGlnZXN0
LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSAgICBp
ZiAoc3VjY2VlZGVkKQotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIHJldHVybiBudWxscHRy
OwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNp
emVfdCBsZW5ndGgpCi17Ci0gICAgaWYgKCFpbnB1dCB8fCAhbGVuZ3RoKQotICAgICAgICByZXR1
cm47Ci0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRIYXNoRGF0YShtX2NvbnRleHQtPmhIYXNoLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEJZVEUqPihpbnB1dCksIGxlbmd0aCwgMCkpOwotfQotCi1W
ZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgVmVjdG9y
PHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXI7Ci0gICAgRFdP
UkQgZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSA9IHNpemVvZihkaWdlc3RMZW5ndGhCdWZmZXIpOwot
Ci0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5oSGFzaCwg
SFBfSEFTSFNJWkUsIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+KCZkaWdlc3RMZW5ndGhCdWZmZXIp
LCAmZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSwgMCkpOwotICAgIHJlc3VsdC5yZXNpemUoZGlnZXN0
TGVuZ3RoQnVmZmVyKTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFzaFBhcmFtKG1f
Y29udGV4dC0+aEhhc2gsIEhQX0hBU0hWQUwsIHJlc3VsdC5kYXRhKCksICZkaWdlc3RMZW5ndGhC
dWZmZXIsIDApKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuc2l6ZSgpID09IGRpZ2VzdExl
bmd0aEJ1ZmZlcik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCBjMzQ1NTdkOTdjY2U3MGExMjcwNjhmYmI0
MGY4NjRhNDQ4NjU0YTNhLi5kNGJkOGFlMDNlZTRkYWNjY2E2ZWJiZTE3YWI3NzdlNmVkY2JiNmM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5l
dHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtMzEsMTAgKzMxLDEwIEBACiAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkNvb2tpZUphclNvdXAuaCIK
LSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSA8
UEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgog
I2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CkBAIC03
Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghY2VydGlmaWNhdGVEYXRhKQogICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRv
RGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgICAg
ICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoY2VydGlm
aWNhdGVEYXRhLT5kYXRhLCBjZXJ0aWZpY2F0ZURhdGEtPmxlbik7CiAKICAgICAgICAgYXV0byBo
YXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dl
YktpdEZTLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlCmluZGV4IDI5YTA5Njkw
MzhmYWE3NDRlMWE4YzU4ZjM1NmFkMDczZjAwNTI1YmQuLjUxMzBmZmNiY2M3YzljZTc1MTRhZjRk
NTUzYmQ4YTRmMDUwMTQ1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFr
ZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UKQEAgLTEwLDYgKzEwLDkgQEAgZW5k
aWYgKCkKIGlmIChOT1QgV0VCQ09SRV9ESVIpCiAgICAgc2V0KFdFQkNPUkVfRElSICIke0NNQUtF
X1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJDb3JlIikKIGVuZGlmICgpCitpZiAoTk9UIFBBTF9ESVIp
CisgICAgc2V0KFBBTF9ESVIgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlL1dlYkNvcmUvUEFM
IikKK2VuZGlmICgpCiBpZiAoTk9UIFdFQktJVF9ESVIpCiAgICAgc2V0KFdFQktJVF9ESVIgIiR7
Q01BS0VfU09VUkNFX0RJUn0vU291cmNlL1dlYktpdCIpCiBlbmRpZiAoKQpkaWZmIC0tZ2l0IGEv
Q01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAppbmRleCA3OWExN2JhY2EwZGY1MzI4ZTdi
M2QxMTk3MmJiNmI3YjQ3ZTJlNmZhLi43YWM5ZDhjMGYxYmQ4YzIyMzI5ZDAwMGY5YzgwNTk1NTU2
M2U1NmVlIDEwMDY0NAotLS0gYS9DTWFrZUxpc3RzLnR4dAorKysgYi9DTWFrZUxpc3RzLnR4dApA
QCAtMTE1LDYgKzExNSw3IEBAIGVsc2UgKCkKICAgICBzZXQoV2ViQ29yZV9MSUJSQVJZX1RZUEUg
U1RBVElDKQogZW5kaWYgKCkKIAorc2V0KFBBTF9MSUJSQVJZX1RZUEUgU1RBVElDKQogc2V0KFdl
YktpdF9MSUJSQVJZX1RZUEUgU0hBUkVEKQogc2V0KFdlYktpdDJfTElCUkFSWV9UWVBFIFNIQVJF
RCkKIHNldChXZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFSWV9UWVBFIFNUQVRJQykKZGlmZiAtLWdp
dCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxNGY2NDcxNjA4ZTk0ZWE5NGU3ZDJkYmZm
YWJkNmY0YjhlNWNkNzNlLi5mMmJmNzVkNWE5YTY0NTU0YWQ1OTU5MWJiYjNmYmM5MDIzZmNiM2Jm
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTctMDEtMTAgIERvbiBPbG1zdGVhZCA8ZG9uLm9sbXN0ZWFkQGFtLnNvbnkuY29tPiBhbmQg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIEludHJv
ZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0cmFjdGlvbiBMYXllciAoUEFMKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2UvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU291cmNlL2NtYWtlL1dl
YktpdEZTLmNtYWtlOgorCiAyMDE2LTEyLTIxICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVu
QHlhbmRleC5ydT4KIAogICAgICAgICBzZXQgUFlUSE9OUEFUSCBpbiBzZXBhcmF0ZSBDT01NQU5E
IGRvZXNuJ3Qgd29yayB3aXRoIGFsbCBDTWFrZSBnZW5lcmF0b3JzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298503</attachid>
            <date>2017-01-10 12:46:00 -0800</date>
            <delta_ts>2017-01-10 15:41:45 -0800</delta_ts>
            <desc>Needs cmake invariant enforcement</desc>
            <filename>bug-143358-20170110124422.patch</filename>
            <type>text/plain</type>
            <size>95408</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjFjODIyYjU5MzM1YjVi
M2MyYjgxYjM4MjE3NjEwOGI2YTU2NDk3Ni4uNTljOTQ0YTA3MjEyNzFlNDAzOGYwZjc3OWQwZWE3
MTEwODU0ODE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE3LTAxLTEwICBEb24g
T2xtc3RlYWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4gYW5kIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZv
cm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGVuZm9yY2UgbGF5ZXJpbmcgYW5kIHByb21v
dGUgdGVzdGFiaWxpdHksIFdlYkNvcmUvcGxhdGZvcm0gZmlsZXMKKyAgICAgICAgc2hvdWxkIGJl
IGNvbXBpbGVkIGluIHRoZWlyIG93biB0YXJnZXQuIFRoaXMgbmV3IHRhcmdldCBjYW4gZW5mb3Jj
ZSBsYXllcmluZworICAgICAgICBhbmQgY2FuIGJlIHRlc3RlZCB3aXRoIHVuaXQgdGVzdHMgaW4g
YWRkaXRpb24gdG8gbGF5b3V0IHRlc3RzLgorCisgICAgICAgIFRoZSBuYW1lIG9mIHRoaXMgbmV3
IHRhcmdldCBpcyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIsIG9yICJQQUwuIgorICAg
ICAgICBUaGlzIGNvbXByaXNlcyBvZiBhIG5ldyBkaXJlY3RvcnkgaW4gV2ViQ29yZSB3aGljaCB3
aWxsIGJlIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBmb3IgZmlsZXMgbWlncmF0ZWQgZnJvbSBX
ZWJDb3JlL3BsYXRmb3JtLiBUaGlzIG5ldyBmb2xkZXIsIGFuZCBpdHMgYXNzb2NpYXRlZAorICAg
ICAgICB0YXJnZXQsIHdpbGwgbWFpbnRhaW4gbGF5ZXJpbmcgaW52YXJpYW50cy4gVGhlc2UgaW52
YXJpYW50cyBhcmUgZW5mb3JjZWQgYXQKKyAgICAgICAgYnVpbGQtdGltZSB3aXRoIGEgYnVpbGQg
c3RlcCB3aGljaCBwcm9jZXNzZXMgdGhlIHN5bWJvbHMgd2l0aGluIHRoZSBjb21waWxlZAorICAg
ICAgICBhcmNoaXZlIGZpbGUgYXMgd2VsbCBhcyB0aGUgI2luY2x1ZGUgZGlyZWN0aXZlcyBpbnNp
ZGUgdGhlIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgRmlsZXMgd2lsbCBiZSBtaWdyYXRlZCBpbnRv
IHRoaXMgbmV3IHRhcmdldC9kaXJlY3RvcnkgcGllY2UtYnktcGllY2UsIGFuZCB0aGUKKyAgICAg
ICAgbWlncmF0aW9uIG9mIGEgZmlsZSB3aWxsIGJlIHBlcmZvcm1lZCBhcyBzb29uIGFzIGl0IGNh
biBiZSBtaWdyYXRlZCB3aXRob3V0CisgICAgICAgIHZpb2xhdGluZyBsYXllcmluZy4KKworICAg
ICAgICBXaXRoaW4gV2ViQ29yZSwgZmlsZXMgc2hvdWxkIGluY2x1ZGUgZmlsZXMgaW4gUEFMIHVz
aW5nIHRoZSBjb252ZW50aW9uCisgICAgICAgICNpbmNsdWRlIDxQQUwvZm9vLmg+LiBTeW1ib2xz
IHdpdGhpbiBQQUwgYXJlIHBsYWNlZCB3aXRoaW4gYSBuZXcgbmFtZXNwYWNlLAorICAgICAgICBX
ZWJDb3JlOjpQQUwsIGFuZCB0aGVyZWZvcmUgd2hlbiB1c2VkIGluc2lkZSBXZWJDb3JlIHNob3Vs
ZCBiZSByZWZlcnJlZCB0bworICAgICAgICBhcyBQQUw6OkZvby4KKworICAgICAgICBUaGUgZmly
c3Qgc2V0IG9mIGZpbGVzIHRvIG1vdmUgaW50byB0aGUgbmV3IHBsYXRmb3JtIGlzIHRoZSBjcnlw
dG8vIHN1YmRpcmVjdG9yeQorICAgICAgICBiZWNhdXNlIGl0IGlzIGJvdGggc2ltcGxlIGJ1dCBh
bHNvIGluY2x1ZGVzIHBsYXRmb3JtLWRlcGVuZGVudCBmaWxlcy4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9QQUwueGNjb25maWc6IEFk
ZGVkLiBQQUwtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLgorICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6IE5lZWQgdG8gdXBkYXRlIHRoZSBzZWFyY2ggcGF0
aHMgc28gZmlsZXMgY2FuCisgICAgICAgIGluY2x1ZGUgUEFMIGZpbGVzLgorICAgICAgICAqIFBB
TC9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3JtRWZsLmNtYWtl
OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvUGxhdGZvcm1HVEsuY21ha2U6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9QbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3Jt
V2luLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvY29uZmlnLmg6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmguCisgICAgICAgICogUEFML2NyeXB0by9j
b21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcC4KKyAgICAgICAgKiBQQUwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RH
Q3J5cHQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dj
cnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwLgorICAgICAgICAqIFBBTC9jcnlwdG8vZ251dGxz
L0NyeXB0b0RpZ2VzdEdudVRMUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAuCisgICAgICAgICogUEFM
L2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcC4KKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAg
ICAgKiBTY3JpcHRzL0VuZm9yY2VQQUxMYXllcmluZy5weTogQWRkZWQuIFRoaXMgaXMgdGhlIGxh
eWVyaW5nIGVuZm9yY2VtZW50IG1lY2hhbmlzbS4KKyAgICAgICAgSXQgY2hlY2tzIGJvdGggc3lt
Ym9sIG5hbWVzIGluIHRoZSBjb21waWxlZCAuYSBmaWxlIGFzIHdlbGwgYXMgaW5jbHVkZSBkaXJl
Y3RpdmVzIGluCisgICAgICAgIHRoZSBzb3VyY2UgY29kZS4KKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCB0aGUgbmV3IFBBTCB0YXJnZXQuCisgICAgICAg
ICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6IFVwZGF0ZSB0byB1
c2UgdGhlIFBBTCBzeW1ib2wgbmFtaW5nCisgICAgICAgIGNvbnZlbnRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjpz
aWduUlNBU1NBX1BLQ1MxX3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UlNBU1NBX1BL
Q1MxX3YxXzUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6IERp
dHR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEy
NTZIYXNoKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJblBv
bGljaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNz
aW9uLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIb3N0VExTQ2VydGlmaWNhdGVTZXQ6
OmNvbXB1dGVDZXJ0aWZpY2F0ZUhhc2gpOgorCiAyMDE3LTAxLTA5ICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBKU1NvdXJjZUNvZGUg
dG8gcHJvcGFnYXRlIFNvdXJjZUNvZGUgaW4gbW9kdWxlIHBpcGVsaW5lCmRpZmYgLS1naXQgYS9T
b3VyY2UvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvQ01ha2VMaXN0cy50eHQKaW5kZXggMWI4YTJk
Y2I1MDRmYjU1NmFiYzVmNTgzYjc2YmUzOGQ5MmYwZmRmMS4uMTVmZGYyMjRhODk2NmJlMTFkY2Y2
M2UyZmE4ZjU4N2EwM2U3MjY0NCAxMDA2NDQKLS0tIGEvU291cmNlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9DTWFrZUxpc3RzLnR4dApAQCAtNDYsNiArNDYsNyBAQCBXRUJLSVRfU0VUX0VY
VFJBX0NPTVBJTEVSX0ZMQUdTKFdURiAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogV0VC
S0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhKYXZhU2NyaXB0Q29yZSAke0FERElUSU9OQUxf
Q09NUElMRVJfRkxBR1N9KQogCiBpZiAoRU5BQkxFX1dFQkNPUkUpCisgICAgV0VCS0lUX1NFVF9F
WFRSQV9DT01QSUxFUl9GTEFHUyhQQUwgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKICAg
ICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmVUZXN0U3VwcG9ydCAke0FE
RElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJf
RkxBR1MoV2ViQ29yZSAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9T
RVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29yZURlcml2ZWRTb3VyY2VzICR7QURESVRJT05B
TF9DT01QSUxFUl9GTEFHU30pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDZlYjMxNDY5OWFiZDUx
NDlhOWQ0YjVmZjllOTE2ODU4NjU0OTgxM2QuLmE5Zjg3YmI3YjBiOWI5ZDRlYTdjNzFmYWY2OTky
ZTdiMDc4ZjA4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xLDYgKzEsNyBAQAogY21ha2Vf
bWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuOC4xMikKIGluY2x1ZGUoV2ViS2l0Q29tbW9uKQog
c2V0X3Byb3BlcnR5KERJUkVDVE9SWSAuIFBST1BFUlRZIEZPTERFUiAiV2ViQ29yZSIpCithZGRf
c3ViZGlyZWN0b3J5KFBBTCkKIAogc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpAQCAtMjk1Miw2ICsyOTUzLDcgQEAgc2V0KFdlYkNvcmVf
UExVR19JTlNfUkVTT1VSQ0VTCiBzZXQoV2ViQ29yZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJS
QVJJRVN9CiAgICAgSmF2YVNjcmlwdENvcmUke0RFQlVHX1NVRkZJWH0KKyAgICBQQUwKICkKIAog
aWYgKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmln
dXJhdGlvbnMvUEFMLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5YmEyZWQwNjJkZTk0MWI5NjkwMmNh
NDRjZWFhMWMwZTQ3MTc5NzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9QQUwueGNjb25maWcKQEAgLTAsMCArMSwzNiBAQAorLy8gQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
Ky8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVkZSAiV2ViQ29yZS54Y2NvbmZpZyIKKworSU5T
VEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfJChDT05GSUdVUkFUSU9OKSk7CitJTlNUQUxMX1BB
VEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwvbGliOworCitTS0lQX0lOU1RBTEwgPSAkKFNLSVBf
SU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFMTCkpOworU0tJUF9JTlNUQUxMXyA9IFlFUzsKK1NL
SVBfSU5TVEFMTF9OTyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9ZRVMgPSBOTzsKKworUFJPRFVDVF9O
QU1FID0gUEFMOworRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CitFWFBPUlRFRF9TWU1CT0xTX0ZJ
TEUgPSA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3Jl
LnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZp
ZwppbmRleCBjNDg4ZjgwNGZmYjAwNjc0YmJlOThhMWQyODU2YjM2MGRhYzBjOGEzLi41OWYzOGU1
MGNiODNlZjRjODk1ZDA1MTA0ODM4YmQ5NTQ3NmNjMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKQEAgLTQ2LDcgKzQ2LDcgQEAgT1RIRVJf
Q1BMVVNQTFVTRkxBR1MgPSAkKE9USEVSX0NGTEFHUyk7CiAKIFdFQktJVEFERElUSU9OU19IRUFE
RVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRl
L1dlYktpdEFkZGl0aW9ucyAkKFNES1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0
aW9uczsKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9IEZvcndhcmRpbmdIZWFkZXJzIGljdSAvdXNy
L2luY2x1ZGUvbGlieHNsdCAvdXNyL2luY2x1ZGUvbGlieG1sMiAiJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUiICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xv
Y2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoSEVB
REVSX1NFQVJDSF9QQVRIUyk7CitIRUFERVJfU0VBUkNIX1BBVEhTID0gRm9yd2FyZGluZ0hlYWRl
cnMgaWN1ICQoU1JDUk9PVCkgL3Vzci9pbmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnht
bDIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlM
VF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFE
RVJfU0VBUkNIX1BBVEhTKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUg
PSBJbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRIID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZh
dGVGcmFtZXdvcmtzOwogSU5TVEFMTF9QQVRIW3Nkaz1tYWNvc3gqXSA9ICQoV0VCQ09SRV9GUkFN
RVdPUktTX0RJUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODA4YTQ1
M2E3MDViNmU2MjAxYmQ5OTY2ODQ2NTg1MDY2MDY1NzE4OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDMwIEBACitzZXQoUEFM
X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAiJHtQQUxfRElSfSIKKyAgICAiJHtQQUxfRElSfS9j
cnlwdG8iCispCisKK3NldChQQUxfU09VUkNFUworKQorCitzZXQoUEFMX0xJQlJBUklFUworICAg
IFdURgorKQorCitXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKworV0VC
S0lUX1dSQVBfU09VUkNFTElTVCgke1BBTF9TT1VSQ0VTfSkKK1dFQktJVF9GUkFNRVdPUksoUEFM
KQorCitpZiAoTVNWQykKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAgIFRBUkdFVCBQ
QUwKKyAgICAgICAgUFJFX0JVSUxECisgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9
ICR7V0VCS0lUX0xJQlJBUklFU19ESVJ9L3Rvb2xzL3NjcmlwdHMvYXV0by12ZXJzaW9uLnBsICR7
REVSSVZFRF9TT1VSQ0VTX0RJUn0KKyAgICAgICAgVkVSQkFUSU0pCisKKyAgICBhZGRfY3VzdG9t
X2NvbW1hbmQoCisgICAgICAgIFRBUkdFVCBQQUwKKyAgICAgICAgUE9TVF9CVUlMRAorICAgICAg
ICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVF9MSUJSQVJJRVNfRElSfS90b29s
cy9zY3JpcHRzL3ZlcnNpb24tc3RhbXAucGwgJHtERVJJVkVEX1NPVVJDRVNfRElSfSAkPFRBUkdF
VF9GSUxFOlBBTD4KKyAgICAgICAgVkVSQkFUSU0pCitlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML1Bs
YXRmb3JtRWZsLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NWMxODk4NGFlODliOWNlYWFiMjViNTdmZGEw
NmExYTE1ZmM2M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZv
cm1FZmwuY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQQUxfU09VUkNFUworICAg
IGNyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML1Bs
YXRmb3JtR1RLLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NWMxODk4NGFlODliOWNlYWFiMjViNTdmZGEw
NmExYTE1ZmM2M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZv
cm1HVEsuY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQQUxfU09VUkNFUworICAg
IGNyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML1Bs
YXRmb3JtTWFjLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmOTY4ZWM0ZDk4ZTQxZjczNzI5MGY4ZjRmMjhm
NzRmNmEyZTYxZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZv
cm1NYWMuY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQQUxfU09VUkNFUworICAg
IGNyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAorKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUEFML1BsYXRmb3JtV2luLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNjkxOWY3NmYxMDhmNzJl
Yzg4N2ExYjczNTA3ODE3MjJhMjU4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQQUxf
U09VUkNFUworICAgIGNyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAorKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oIGIvU291cmNlL1dlYkNvcmUvUEFML2NvbmZp
Zy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU0ODhjODBhZGY2YzExZjZjMzA4MjAzYThlNzJlYTQ4MzY4NmYzZjQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmgKQEAgLTAsMCAr
MSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ09O
RklHX0gpICYmIEhBVkVfQ09ORklHX0ggJiYgZGVmaW5lZChCVUlMRElOR19XSVRIX0NNQUtFKQor
I2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jvcy5oPgorCisjaWZkZWYgX19BUFBMRV9f
CisjZGVmaW5lIEhBVkVfRlVOQ19VU0xFRVAgMQorI2VuZGlmIC8qIF9fQVBQTEVfXyAqLworCisj
aWYgT1MoV0lORE9XUykKKworI2lmbmRlZiBfV0lOMzJfV0lOTlQKKyNkZWZpbmUgX1dJTjMyX1dJ
Tk5UIDB4NjAxCisjZW5kaWYKKworI2lmbmRlZiBXSU5WRVIKKyNkZWZpbmUgV0lOVkVSIDB4MDYw
MQorI2VuZGlmCisKKyNlbmRpZiAvKiBPUyhXSU5ET1dTKSAqLworCisjaWZkZWYgX19jcGx1c3Bs
dXMKKworLy8gVGhlc2UgdW5kZWZzIG1hdGNoIHVwIHdpdGggZGVmaW5lcyBpbiBXZWJDb3JlUHJl
Zml4LmggZm9yIE1hYyBPUyBYLgorLy8gSGVscHMgdXMgY2F0Y2ggaWYgYW55b25lIHVzZXMgbmV3
IG9yIGRlbGV0ZSBieSBhY2NpZGVudCBpbiBjb2RlIGFuZCBkb2Vzbid0IGluY2x1ZGUgImNvbmZp
Zy5oIi4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUKKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgorCisjaW5jbHVkZSA8Y2lzbzY0Nj4KKworI2VuZGlmCisKKyNpbmNsdWRlIDx3dGYvRGlz
YWxsb3dDVHlwZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9Dcnlw
dG9EaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWIyMDg2YTVlZWVmYjExM2Q1YWQyMTljZWY4YjQxOTc3ZDc0YmZhYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4
dDsKKworY2xhc3MgQ3J5cHRvRGlnZXN0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcnlw
dG9EaWdlc3QpOworcHVibGljOgorICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKKyAgICAgICAg
U0hBXzEsCisgICAgICAgIFNIQV8yMjQsCisgICAgICAgIFNIQV8yNTYsCisgICAgICAgIFNIQV8z
ODQsCisgICAgICAgIFNIQV81MTIsCisgICAgfTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0RpZ2VzdD4gY3JlYXRlKEFsZ29yaXRobSk7CisgICAgfkNyeXB0b0RpZ2VzdCgpOwor
CisgICAgdm9pZCBhZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVIYXNoKCk7CisKK3ByaXZhdGU6CisgICAgQ3J5cHRv
RGlnZXN0KCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gbV9j
b250ZXh0OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpQQUwKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vY29tbW9uY3J5cHRvL0Ny
eXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdlNzY2YWE4YTU2MWI5OWU0
ZTU3ZGE5ZTI2OTEyYzNiZTg1YmVkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKQEAg
LTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRv
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlw
dG9EaWdlc3RDb250ZXh0IHsKKyAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07
CisgICAgdm9pZCogY2NDb250ZXh0OworfTsKKworaW5saW5lIENDX1NIQTFfQ1RYKiB0b1NIQTFD
b250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRl
eHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDQ19TSEExX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9Citp
bmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyMjRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQq
IGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1
Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTI1Nl9DVFgqIHRv
U0hBMjU2Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VS
VChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250
ZXh0KTsKK30KK2lubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTM4NENvbnRleHQoQ3J5cHRvRGln
ZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hB
NTEyX0NUWCogdG9TSEE1MTJDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7
CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzUxMik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250
ZXh0LT5jY0NvbnRleHQpOworfQorCitDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCisgICAg
OiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCit7Cit9CisKK0NyeXB0b0RpZ2Vz
dDo6fkNyeXB0b0RpZ2VzdCgpCit7CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkg
eworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBkZWxl
dGUgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAgZGVsZXRlIHRv
U0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgZGVsZXRlIHRvU0hB
MjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgZGVsZXRlIHRvU0hBMzg0
Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAgICAgICAgZGVsZXRlIHRvU0hBNTEyQ29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCisKK3N0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
RGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQt
PmFsZ29yaXRobSA9IGFsZ29yaXRobTsKKworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKKyAgICAgICAgQ0NfU0hBMV9D
VFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMV9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0
LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEExX0luaXQoY29udGV4dCk7Cisg
ICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQ6IHsKKyAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBD
Q19TSEEyNTZfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29u
dGV4dDsKKyAgICAgICAgQ0NfU0hBMjI0X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBk
aWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6
IHsKKyAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOwor
ICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAg
Q0NfU0hBMjU2X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQor
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAgICAgICAgQ0Nf
U0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOworICAgICAgICBkaWdlc3Qt
Pm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMzg0X0luaXQo
Y29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKKyAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29u
dGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2ND
b250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBNTEyX0luaXQoY29udGV4dCk7CisgICAg
ICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIH0KK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6
OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIHN3aXRj
aCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMToKKyAgICAgICAgQ0NfU0hBMV9VcGRhdGUodG9TSEExQ29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIENDX1NIQTIyNF9VcGRhdGUo
dG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAg
ICAgICAgQ0NfU0hBMjU2X1VwZGF0ZSh0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwg
aW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0OgorICAgICAgICBDQ19TSEEzODRfVXBkYXRlKHRvU0hBMzg0Q29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIENDX1NI
QTUxMl9VcGRhdGUodG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5n
dGgpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRv
RGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAg
ICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzE6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMV9ESUdFU1Rf
TEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMV9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250
ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTIy
NF9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCks
IHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgcmVzdWx0LnJl
c2l6ZShDQ19TSEEyNTZfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NIQTI1Nl9GaW5hbChy
ZXN1bHQuZGF0YSgpLCB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAg
ICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMzg0X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19T
SEEzODRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQo
KSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfNTEyOgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTUxMl9ESUdFU1RfTEVOR1RIKTsK
KyAgICAgICAgQ0NfU0hBNTEyX0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBNTEyQ29udGV4dCht
X2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6UEFMCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMzdmZWY0ZmY4MmM3ZGRkYWM1OTAzOGI2NGY1ZWI0ZTYzYzlkYWRiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0
R0NyeXB0LmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEln
YWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0SG9tZQorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRl
IDxnY3J5cHQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsKKworc3Ry
dWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIGludCBhbGdvcml0aG07CisgICAgZ2NyeV9t
ZF9oZF90IG1kOworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9j
b250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5D
cnlwdG9EaWdlc3QoKQoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7Cisg
ICAgaW50IGdjcnlwdEFsZ29yaXRobTsKKworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6CisgICAgICAgIGdjcnlwdEFsZ29y
aXRobSA9IEdDUllfTURfU0hBMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9N
RF9TSEEyMjQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yNTY6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjU2Owor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTM4NDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAgICAgICAg
Z2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEE1MTI7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGln
ZXN0KTsKKyAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gZ2NyeXB0QWxnb3JpdGht
OworCisgICAgZ2NyeV9tZF9vcGVuKCZkaWdlc3QtPm1fY29udGV4dC0+bWQsIGdjcnlwdEFsZ29y
aXRobSwgMCk7CisgICAgaWYgKCFkaWdlc3QtPm1fY29udGV4dC0+bWQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIGRpZ2VzdDsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6
OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGdjcnlf
bWRfd3JpdGUobV9jb250ZXh0LT5tZCwgaW5wdXQsIGxlbmd0aCk7Cit9CisKK1ZlY3Rvcjx1aW50
OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBpbnQgZGlnZXN0TGVuID0g
Z2NyeV9tZF9nZXRfYWxnb19kbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKKyAgICBWZWN0b3I8
dWludDhfdD4gcmVzdWx0KGRpZ2VzdExlbik7CisKKyAgICBnY3J5X21kX2ZpbmFsKG1fY29udGV4
dC0+bWQpOworICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBnY3J5X21kX3JlYWQobV9jb250ZXh0
LT5tZCwgMCksIGRpZ2VzdExlbik7CisgICAgZ2NyeV9tZF9jbG9zZShtX2NvbnRleHQtPm1kKTsK
KworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6UEFM
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdl
c3RHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nbnV0bHMvQ3J5cHRvRGln
ZXN0R251VExTLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWE3YmExOTAxNDRlZjU5MWU1YTgwM2IzY2FlMjMx
YmM3NjBhYWIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9n
bnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNp
bmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+CisjaW5jbHVkZSA8Z251dGxzL2dudXRscy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0
Q29udGV4dCB7CisgICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBhbGdvcml0aG07CisgICAg
Z251dGxzX2hhc2hfaGRfdCBoYXNoOworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3Qo
KQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlw
dG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQoreworICAgIGdudXRsc19oYXNoX2RlaW5pdChtX2Nv
bnRleHQtPmhhc2gsIDApOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7Cisg
ICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBnbnV0bHNBbGdvcml0aG07CisKKyAgICBzd2l0
Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
OiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6
IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEyMjQ7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
OiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjU2OworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4
NDogeworICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTM4NDsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81
MTI6IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEE1MTI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGln
ZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFs
Z29yaXRobSA9IGdudXRsc0FsZ29yaXRobTsKKworICAgIGludCByZXQgPSBnbnV0bHNfaGFzaF9p
bml0KCZkaWdlc3QtPm1fY29udGV4dC0+aGFzaCwgZ251dGxzQWxnb3JpdGhtKTsKKyAgICBpZiAo
cmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIGRpZ2VzdDsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZv
aWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGdudXRsc19oYXNoKG1fY29udGV4dC0+
aGFzaCwgaW5wdXQsIGxlbmd0aCk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6
OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAgIGludCBk
aWdlc3RMZW4gPSBnbnV0bHNfaGFzaF9nZXRfbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKKyAg
ICByZXN1bHQucmVzaXplKGRpZ2VzdExlbik7CisKKyAgICBnbnV0bHNfaGFzaF9vdXRwdXQobV9j
b250ZXh0LT5oYXNoLCByZXN1bHQuZGF0YSgpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K30gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6UEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjVlMzJjMzQzMGQ5
YWQ3NDljYjliOWU3OGY4MTM1NWIzM2M5ZmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcApAQCAtMCwwICsxLDEwNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9EaWdl
c3QuaCIKKworI2luY2x1ZGUgPHdpbmNyeXB0Lmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0
Q29udGV4dCB7CisgICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOworICAgIEhD
UllQVFBST1YgaENvbnRleHQgeyAwIH07CisgICAgSENSWVBUSEFTSCBoSGFzaCB7IDAgfTsKK307
CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5
cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkK
K3sKKyAgICBpZiAoSENSWVBUSEFTSCBoSGFzaCA9IG1fY29udGV4dC0+aEhhc2gpCisgICAgICAg
IENyeXB0RGVzdHJveUhhc2goaEhhc2gpOworICAgIGlmIChIQ1JZUFRQUk9WIGhDb250ZXh0ID0g
bV9jb250ZXh0LT5oQ29udGV4dCkKKyAgICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ29udGV4
dCwgMCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKEFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0
LT5hbGdvcml0aG0gPSBhbGdvcml0aG07CisgICAgaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZk
aWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIG51bGxwdHIsIG51bGxwdHIgLyogdXNlIGRlZmF1
bHQgcHJvdmlkZXIgKi8sIFBST1ZfUlNBX0FFUywgQ1JZUFRfVkVSSUZZQ09OVEVYVCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7CisgICAgc3dp
dGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MTogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRl
eHQtPmhDb250ZXh0LCBDQUxHX1NIQTEsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1NjogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0
LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8yNTYsIDAsIDAsICZkaWdlc3QtPm1fY29u
dGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0
ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8zODQsIDAsIDAsICZk
aWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogeworICAgICAgICBzdWNjZWVkZWQg
PSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV81
MTIsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgfQorICAgIGlmIChzdWNjZWVkZWQpCisgICAgICAgIHJldHVybiBkaWdlc3Q7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25z
dCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoIWlucHV0IHx8ICFsZW5n
dGgpCisgICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEhhc2hEYXRhKG1f
Y29udGV4dC0+aEhhc2gsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQllURSo+KGlucHV0KSwgbGVu
Z3RoLCAwKSk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNo
KCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAgIERXT1JEIGRpZ2VzdExlbmd0
aEJ1ZmZlcjsKKyAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXJTaXplID0gc2l6ZW9mKGRpZ2Vz
dExlbmd0aEJ1ZmZlcik7CisKKyAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbSht
X2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIU0laRSwgcmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oJmRp
Z2VzdExlbmd0aEJ1ZmZlciksICZkaWdlc3RMZW5ndGhCdWZmZXJTaXplLCAwKSk7CisgICAgcmVz
dWx0LnJlc2l6ZShkaWdlc3RMZW5ndGhCdWZmZXIpOworCisgICAgUkVMRUFTRV9BU1NFUlQoQ3J5
cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5oSGFzaCwgSFBfSEFTSFZBTCwgcmVzdWx0LmRhdGEo
KSwgJmRpZ2VzdExlbmd0aEJ1ZmZlciwgMCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5z
aXplKCkgPT0gZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCBmM2FlODliMDBlM2QzNGJkOTQ1OGM1OGZmYjQ0YThlYTI3OTZiM2RkLi4xZjBlMTAzNWFkNGFk
MmUxZTNmMGIxNzI1YTJhY2VjZWUzYzgwYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtNjksOCArNjksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRm
b3JtL2F1ZGlvL2VmbC9BdWRpb0J1c0VmbC5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5
cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZWZsL0N1cnNvckVmbC5j
cHAKICAgICBwbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL0Ry
YWdJbWFnZUVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjI0MjE2MjljNWVk
NTA3YTc3MzRhM2U2ZGZjZDM0YTcyODgxZWJkZi4uYjFjNmU2YjhjZTEzMzdlMzhjMjg0NjMxNTRi
NWZhZTE3MGNkMDRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTY4LDggKzY4LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9nbGli
L0F1ZGlvQnVzR0xpYi5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGln
ZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9nbGliL0dhbWVwYWRzR2xpYi5j
cHAKIAogICAgIHBsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUxLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBiODEyYjljMWFlN2ZkODMxMWEwZDBlNjNl
ZDgzM2U5MDE3YWRkZmEyLi5jOTQzN2U3M2Q3MGIyZWU4ZmNhZDIzNDBkYjcyY2IzNGRmNTRhOWNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzMyLDggKzMzMiw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KICAg
ICBwbGF0Zm9ybS9jb2NvYS9XZWJDb3JlTlNFcnJvckV4dHJhcy5tbQogCi0gICAgcGxhdGZvcm0v
Y3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCi0KICAgICBw
bGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAogICAgIHBsYXRmb3JtL2dhbWVwYWQv
bWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRl
eCA4ZDdmNTA4YTEyMjk1NzE3OTA3ZGVmNDE0ZjJmMjY0ZGYxMGMxOWFkLi5hNGE5OTA5YjEyMTM0
M2NlZWJjNjliZDAxYTgzNWMxOGYxODkwMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpA
QCAtNzMsOCArNzMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRm
b3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAogCi0gICAgcGxhdGZvcm0vY3J5cHRvL3dp
bi9DcnlwdG9EaWdlc3RXaW4uY3BwCi0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9FbmZvcmNlUEFMTGF5
ZXJpbmcucHkgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRzL0VuZm9yY2VQQUxMYXllcmluZy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNWU2ZjNkNjljMjkwNmEwMDJiOTM2ZDY4ZjY4ZTYyODNjZTNhNWM5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9FbmZvcmNlUEFMTGF5ZXJpbmcu
cHkKQEAgLTAsMCArMSw0OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworaW1wb3J0IHN5cworaW1wb3J0IG9zCisKK2FyY2hpdmVGaWxlID0gc3lzLmFyZ3ZbMV0KK3Nv
dXJjZURpcmVjdG9yeSA9IHN5cy5hcmd2WzJdCisKK3N5bWJvbE5hbWVzcGFjZUNvbW1hbmQgPSAi
bm0gLWdVaiAiICsgYXJjaGl2ZUZpbGUgKyAiIHwgYysrZmlsdCB8IGdyZXAgXCJeV2ViQ29yZTo6
XCIgfCBncmVwIC12IFwiXldlYkNvcmU6OlBBTDo6XCIiCisKK3J2ID0gb3Muc3lzdGVtKHN5bWJv
bE5hbWVzcGFjZUNvbW1hbmQgKyAiID4gL2Rldi9udWxsIikKKworaWYgcnYgPT0gMDoKKyAgICBw
cmludCgiVGhlIGZvbGxvd2luZyBzeW1ib2xzIGFyZSBkZWNsYXJlZCBpbiBQQUwgYnV0IGFyZSBp
biB0aGUgV2ViQ29yZSBuYW1lc3BhY2UgKHdoaWNoIGlzIGZvcmJpZGRlbiB0byBwcmVzZXJ2ZSBs
YXllcmluZyk6IikKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICBvcy5zeXN0ZW0oc3ltYm9s
TmFtZXNwYWNlQ29tbWFuZCkKKyAgICBzeXMuZXhpdCgxKQorCitpbmNsdWRlU2VhcmNoQ29tbWFu
ZCA9ICJmaW5kICIgKyBzb3VyY2VEaXJlY3RvcnkgKyAiIFwoIC1uYW1lIFwiKi5jcHBcIiAtb3Ig
LW5hbWUgXCIqLmhcIiAtb3IgLW5hbWUgXCIqLm1cIiAtb3IgLW5hbWUgXCIqLm1tXCIgXCkgLWV4
ZWMgZ3JlcCAtcUUgXCJeIyhpbmNsdWRlfGltcG9ydCkgLldlYkNvcmUvXCIge30gXDsgLXByaW50
IgorCitydiA9IG9zLnN5c3RlbSgiZXhpdCAkKCIgKyBpbmNsdWRlU2VhcmNoQ29tbWFuZCArICIg
fCB3YyAtbCApIikKKworaWYgcnYgIT0gMDoKKyAgICBwcmludCgiVGhlIGZvbGxvd2luZyBmaWxl
cyBpbiBQQUwgaW5jbHVkZSBoZWFkZXJzIGZyb20gV2ViQ29yZSAod2hpY2ggaXMgZm9yYmlkZGVu
IHRvIHByZXNlcnZlIGxheWVyaW5nKToiKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgIG9z
LnN5c3RlbShpbmNsdWRlU2VhcmNoQ29tbWFuZCkKKyAgICBzeXMuZXhpdCgxKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEzMzZm
Y2UzYThjYzQ1NmM2YTgxNGJmMzMxMGZjYWNjYTMwZjRkMjguLjQ3NGZlODEyNjRmZjcyNDU3OTdi
ZTM4MDYxNTdkYjZmZDdkYTRhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU2MjEsNiArNTYyMSwxMCBAQAogCQlDMjgwODMz
RjFDNkRDMjZGMDAxNDUxQjYgLyogSlNGb250RmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MDgzM0UxQzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9u
dEZhY2UuaCAqLzsgfTsKIAkJQzI4MDgzNDAxQzZEQzI3NTAwMTQ1MUI2IC8qIEpTRm9udEZhY2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MDgz
M0QxQzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuY3BwICovOyB9OwogCQlDMjgwODM0MjFD
NkRDOTZBMDAxNDUxQjYgLyogSlNGb250RmFjZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjgwODM0MTFDNkRDOTZBMDAxNDUxQjYgLyog
SlNGb250RmFjZUN1c3RvbS5jcHAgKi87IH07CisJCUMyOUU3QzYyMUUyNEJFQzQwMEZGRUMzRCAv
KiBDcnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyOUU3QzYxMUUyNEJFQzQwMEZGRUMzRCAvKiBDcnlwdG9EaWdlc3QuaCAqLzsgfTsK
KwkJQzI5RTdDNjUxRTI0QkVFNjAwRkZFQzNEIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjlFN0M2
NDFFMjRCRUU2MDBGRkVDM0QgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLzsgfTsK
KwkJQzI5RTdDNkExRTI0QzM5MDAwRkZFQzNEIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5RTdDNjkxRTI0QzM5MDAwRkZFQzNEIC8q
IGNvbmZpZy5oICovOyB9OworCQlDMjlFN0M2QzFFMjRDQzJCMDBGRkVDM0QgLyogbGliUEFMLmEg
aW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjlFN0M1
QTFFMjRCQzFEMDBGRkVDM0QgLyogbGliUEFMLmEgKi87IH07CiAJCUMyRTFGNDNGMUQ2MjU0RTEw
MDk0NjI1QyAvKiBCcmVha0xpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0VBNDgxNjA5N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMzMzBBMjIz
MTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzMzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xv
ckNob29zZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDMzNFRTVDNDE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1
dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzMzRUU1QzIxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBl
LmNwcCAqLzsgfTsKQEAgLTYyNjAsOCArNjI2NCw2IEBACiAJCUUxRjgwQjg4MTgzMTcyNTIwMDc4
ODVDMyAvKiBDcnlwdG9LZXlQYWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUY4MEI4NjE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxRjgw
QjhEMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGODBCOEIxODMxNzJCNTAwNzg4NUMz
IC8qIEpTQ3J5cHRvS2V5UGFpci5jcHAgKi87IH07CiAJCUUxRjgwQjhFMTgzMTcyQjUwMDc4ODVD
MyAvKiBKU0NyeXB0b0tleVBhaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxRjgwQjhDMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIu
aCAqLzsgfTsKLQkJRTFGRTEzNjQxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1v
bkNyeXB0by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMUZFMTM2MjE4MzQzNTExMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNw
cCAqLzsgfTsKLQkJRTFGRTEzNjcxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjYxODM0
M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oICovOyB9OwogCQlFMUZFMTM2QTE4M0ZFMUFC
MDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjgxODNGRTFBQjAwODkyRjEzIC8q
IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcCAqLzsgfTsKIAkJRTFGRTEzNkIxODNGRTFBQjAw
ODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVAuaCAqLzsgfTsKIAkJRTFGRTEzNzAxODNGRUNGMDAwODkyRjEz
IC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzZFMTgzRkVDRjAwMDg5MkYxMyAvKiBDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgKi87IH07CkBAIC02OTAyLDYgKzY5MDQsMTMgQEAK
IAkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNDE3REE2Q0YxMzczNEUwMjAwN0M1N0ZCOwogCQkJ
cmVtb3RlSW5mbyA9IFdlYkNvcmVUZXN0U3VwcG9ydDsKIAkJfTsKKwkJQzI5RTdDNjYxRTI0QkYy
NzAwRkZFQzNEIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENv
bnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZD
MDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1v
dGVHbG9iYWxJRFN0cmluZyA9IEMyOUU3QzU5MUUyNEJDMUMwMEZGRUMzRDsKKwkJCXJlbW90ZUlu
Zm8gPSBQQUw7CisJCX07CiAJCUREMDQxRkYwMDlEOUUzMjUwMDEwQUYyQSAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CkBAIC0xMzUzOSw2ICsxMzU0OCwxMiBAQAogCQlDMjgwODMzRDFDNkRDMjJDMDAxNDUx
QjYgLyogSlNGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0ZvbnRGYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI4MDgzM0Ux
QzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjgw
ODM0MTFDNkRDOTZBMDAxNDUxQjYgLyogSlNGb250RmFjZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZvbnRGYWNlQ3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5RTdDNUExRTI0QkMxRDAwRkZFQzNEIC8qIGxpYlBBTC5h
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZl
LmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJQQUwuYTsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJQzI5RTdDNjExRTI0QkVDNDAwRkZFQzNEIC8qIENyeXB0
b0RpZ2VzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9EaWdlc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5RTdDNjQxRTI0QkVFNjAwRkZFQzNE
IC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMjlFN0M2OTFFMjRDMzkwMDBGRkVDM0QgLyogY29uZmlnLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjlFN0M2QjFFMjRDN0QxMDBGRkVDM0QgLyogUEFMLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFBBTC54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzI5RTdDNkYxRTI1NkQ4MDAwRkZFQzNEIC8qIEVuZm9yY2VQQUxM
YXllcmluZy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9IEVuZm9yY2VQ
QUxMYXllcmluZy5weTsgcGF0aCA9IFNjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5OyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMzMwQTIyMTEzRUMxOTZCMDAwMEI0NUIgLyogQ29s
b3JDaG9vc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yQ2hvb3Nl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMzNFRTVDMjE0RkI0OTYxMDAwMjA5
NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMzNFRTVDMzE0RkI0OTYxMDAwMjA5NUEgLyog
QmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE0MjYyLDggKzE0Mjc3LDYgQEAKIAkJRTFGODBCODYxODMxNzI1MjAw
Nzg4NUMzIC8qIENyeXB0b0tleVBhaXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3J5cHRvS2V5UGFpci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUY4MEI4
QjE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3J5cHRvS2V5UGFpci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxRjgwQjhDMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBh
aXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDcnlwdG9LZXlQYWlyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxRkUxMzYyMTgzNDM1MTEwMDg5MkYxMyAv
KiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRTFGRTEzNjYxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9EaWdlc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRTEzNjgxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0
b0FsZ29yaXRobVJTQV9PQUVQLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTFGRTEzNjkxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJTQV9P
QUVQLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkUxMzZFMTgzRkVDRjAwMDg5
MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDk3Miw2ICsxNDk4NSw3IEBACiAJCQlpc2EgPSBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CiAJCQlmaWxlcyA9ICgKKwkJCQlDMjlFN0M2QzFFMjRDQzJCMDBGRkVDM0QgLyogbGliUEFMLmEg
aW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxMjEyQjA0OEEzMDBFRDk4QzYgLyogQWNjZWxl
cmF0ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxMzEyQjA0OEEzMDBF
RDk4QzYgLyogQXVkaW9Ub29sYm94LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTFB
QjMzREE1MTI1NTFFMzIwMDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LywKQEAgLTE0OTg1LDYgKzE0OTk5LDEzIEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCUMyOUU3QzU3MUUyNEJDMUMwMEZGRUMzRCAv
KiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCUUxQkE2NzBF
MTc0MkJERTAwMEMyMDI1MSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTUw
MTUsNiArMTUwMzYsNyBAQAogCQkJCUUxQkE2NzE2MTc0MkJERTAwMEMyMDI1MSAvKiBsaWJXZWJD
b3JlVGVzdFNoaW0uZHlsaWIgKi8sCiAJCQkJNDE3REE2RDAxMzczNEUwMjAwN0M1N0ZCIC8qIGxp
YldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQk5M0YxOUIxQTA4MjQ1RTVBMDAxRTlB
QkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi8sCisJCQkJQzI5RTdDNUExRTI0QkMxRDAwRkZFQzNE
IC8qIGxpYlBBTC5hICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsKQEAgLTE1NDE4LDYgKzE1NDQwLDcgQEAKIAkJCQkyRTQzNDYzMTBG
NTQ2QTY4MDBCMEYxQkEgLyogd29ya2VycyAqLywKIAkJCQlFMUYwNDI0MzA5ODM5Mzg5MDA2Njk0
RUEgLyogeG1sICovLAogCQkJCTY1NjU4MEVDMDlEMTJCMjAwMDBFNjFENyAvKiBEZXJpdmVkIFNv
dXJjZXMgKi8sCisJCQkJQzI5RTdDNUYxRTI0QkNBMjAwRkZFQzNEIC8qIFBBTCAqLywKIAkJCQkw
ODlDMTY2NUZFODQxMTU4QzAyQUFDMDcgLyogUmVzb3VyY2VzICovLAogCQkJCTM3MTdEN0U0MTdF
Q0MzNkMwMDNDMjc2RCAvKiBTY3JpcHRzICovLAogCQkJCTA4NjdENjlBRkU4NDAyOEZDMDJBQUMw
NyAvKiBGcmFtZXdvcmtzICovLApAQCAtMTYxOTcsNiArMTYyMjAsNyBAQAogCQkxQ0RENDQ2NjBC
QTlDODAwMDBGOTAxNDcgLyogQ29uZmlndXJhdGlvbnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUMyOUU3QzZCMUUyNEM3RDEwMEZGRUMzRCAvKiBQQUwu
eGNjb25maWcgKi8sCiAJCQkJMUNERDQ1RTYwQkE5Qzg0NjAwRjkwMTQ3IC8qIEJhc2UueGNjb25m
aWcgKi8sCiAJCQkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54Y2Nv
bmZpZyAqLywKIAkJCQk0NDkwOThCMTBGOEY4MjUyMDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMu
eGNjb25maWcgKi8sCkBAIC0xNjUwOSw2ICsxNjUzMyw3IEBACiAJCQkJRjQ4Mzg5NzkxRTFERDIz
QTAwNzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5ICovLAogCQkJCTM3MTdEN0U1MTdFQ0MzQTYwMDND
Mjc2RCAvKiBleHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwgKi8sCiAJCQkJMzdENDU2RkIx
QTlBNTBCNjAwMzMzMEExIC8qIExvY2FsaXphYmxlU3RyaW5ncy5wbSAqLywKKwkJCQlDMjlFN0M2
RjFFMjU2RDgwMDBGRkVDM0QgLyogRW5mb3JjZVBBTExheWVyaW5nLnB5ICovLAogCQkJKTsKIAkJ
CW5hbWUgPSBTY3JpcHRzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIyNDgxLDcg
KzIyNTA2LDYgQEAKIAkJCQlGRDMxNjA0MDEyQjAyNkEzMDBDMUEzNTkgLyogYXVkaW8gKi8sCiAJ
CQkJMUFFNDJGNjcwQUE0QjhDQjAwQzg2MTJEIC8qIGNmICovLAogCQkJCUE1Qzk3NENFMTE0ODVG
REEwMDY2RjJBQiAvKiBjb2NvYSAqLywKLQkJCQlDRTUwRDhDRTFDODkzMkVEMDA3MkVBNUEgLyog
Y3J5cHRvICovLAogCQkJCTUxNUJFMTg3MUQ1NEY1REIwMEREN0M2OCAvKiBnYW1lcGFkICovLAog
CQkJCUIyQTAxNTkxMEFGNkNENTMwMDZCQ0UwRSAvKiBncmFwaGljcyAqLywKIAkJCQlBNTlFM0Mx
QjExNTgwRjM0MDA3MjkyOEUgLyogaW9zICovLApAQCAtMjI2NzUsNiArMjI2OTksMzIgQEAKIAkJ
CXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQzI5RTdDNUYxRTI0QkNB
MjAwRkZFQzNEIC8qIFBBTCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQzI5RTdDNjkxRTI0QzM5MDAwRkZFQzNEIC8qIGNvbmZpZy5oICovLAorCQkJCUMy
OUU3QzYwMUUyNEJDREYwMEZGRUMzRCAvKiBjcnlwdG8gKi8sCisJCQkpOworCQkJcGF0aCA9IFBB
TDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUMyOUU3QzYwMUUyNEJDREYw
MEZGRUMzRCAvKiBjcnlwdG8gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCUMyOUU3QzYzMUUyNEJFRDQwMEZGRUMzRCAvKiBjb21tb25jcnlwdG8gKi8sCisJ
CQkJQzI5RTdDNjExRTI0QkVDNDAwRkZFQzNEIC8qIENyeXB0b0RpZ2VzdC5oICovLAorCQkJKTsK
KwkJCXBhdGggPSBjcnlwdG87CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlD
MjlFN0M2MzFFMjRCRUQ0MDBGRkVDM0QgLyogY29tbW9uY3J5cHRvICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMjlFN0M2NDFFMjRCRUU2MDBGRkVDM0Qg
LyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gY29t
bW9uY3J5cHRvOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQzk2RjVFQkYx
QjU4NzIyNjAwOTFFQTlEIC8qIG1lZGlhc2Vzc2lvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMjkxOSwyMyArMjI5NjksNiBAQAogCQkJcGF0aCA9IGlv
czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCUNFNTBEOENFMUM4OTMyRUQw
MDcyRUE1QSAvKiBjcnlwdG8gKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVu
ID0gKAotCQkJCUNFNTBEOENGMUM4OTMyRkIwMDcyRUE1QSAvKiBjb21tb25jcnlwdG8gKi8sCi0J
CQkJRTFGRTEzNjYxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oICovLAotCQkJKTsK
LQkJCXBhdGggPSBjcnlwdG87Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQlD
RTUwRDhDRjFDODkzMkZCMDA3MkVBNUEgLyogY29tbW9uY3J5cHRvICovID0gewotCQkJaXNhID0g
UEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlFMUZFMTM2MjE4MzQzNTExMDA4OTJGMTMg
LyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gY29t
bW9uY3J5cHRvOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJREY5QUZENkYx
M0ZDMzFCMDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKApAQCAtMjUyMjUsNyArMjUyNTgsNiBAQAogCQkJCUUxOUFDM0YxMTgyNERDNzkw
MDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTYuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
OUFDM0YzMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEzODQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxOUFDM0Y1MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1T
SEE1MTIuaCBpbiBIZWFkZXJzICovLAotCQkJCUUxRkUxMzY3MTgzNDNBMTAwMDg5MkYxMyAvKiBD
cnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNTdBOEU1MTgxNzNBM0EwMDlGODIx
RCAvKiBDcnlwdG9LZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODRFMTgyNDI4OUQwMEQ4
NENEOSAvKiBDcnlwdG9LZXlBRVMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODVFMTgyQzJE
RjYwMEQ4NENEOSAvKiBDcnlwdG9LZXlEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NDIzLDYg
KzI4NDU1LDE1IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CisJCUMyOUU3QzU4MUUyNEJDMUMwMEZGRUMzRCAvKiBIZWFkZXJzICovID0g
eworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQzI5RTdDNkExRTI0QzM5MDAwRkZFQzNEIC8q
IGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzI5RTdDNjIxRTI0QkVDNDAwRkZFQzNEIC8q
IENyeXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCUUxQkE2NkY2MTc0MkJERTAwMEMyMDI1
MSAvKiBIZWFkZXJzICovID0gewogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMjg0NzIsNiArMjg1MTMsNyBAQAogCQkJ
YnVpbGRSdWxlcyA9ICgKIAkJCSk7CiAJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJQzI5RTdDNjcx
RTI0QkYyNzAwRkZFQzNEIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJREQwNDFGRjEw
OUQ5RTMyNTAwMTBBRjJBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwogCQkJbmFt
ZSA9IFdlYkNvcmU7CkBAIC0yODQ4MCw2ICsyODUyMiwyNCBAQAogCQkJcHJvZHVjdFJlZmVyZW5j
ZSA9IDkzRjE5QjFBMDgyNDVFNUEwMDFFOUFCQyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsKIAkJ
CXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuZnJhbWV3b3JrIjsKIAkJfTsK
KwkJQzI5RTdDNTkxRTI0QkMxQzAwRkZFQzNEIC8qIFBBTCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5h
dGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBDMjlFN0M1RTFFMjRCQzFE
MDBGRkVDM0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
IlBBTCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQlDMjlFN0M1NjFFMjRCQzFDMDBGRkVD
M0QgLyogU291cmNlcyAqLywKKwkJCQlDMjlFN0M1NzFFMjRCQzFDMDBGRkVDM0QgLyogRnJhbWV3
b3JrcyAqLywKKwkJCQlDMjlFN0M1ODFFMjRCQzFDMDBGRkVDM0QgLyogSGVhZGVycyAqLywKKwkJ
CQlDMjlFN0M2RTFFMjU2Q0ZCMDBGRkVDM0QgLyogRW5mb3JjZSBQQUwgTGF5ZXJpbmcgKi8sCisJ
CQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkp
OworCQkJbmFtZSA9IFBBTDsKKwkJCXByb2R1Y3ROYW1lID0gUEFMOworCQkJcHJvZHVjdFJlZmVy
ZW5jZSA9IEMyOUU3QzVBMUUyNEJDMUQwMEZGRUMzRCAvKiBsaWJQQUwuYSAqLzsKKwkJCXByb2R1
Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9Owog
CQlFMUJBNjZGMzE3NDJCREUwMDBDMjAyNTEgLyogV2ViQ29yZVRlc3RTaGltICovID0gewogCQkJ
aXNhID0gUEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEUxQkE2
NzEyMTc0MkJERTAwMEMyMDI1MSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5h
dGl2ZVRhcmdldCAiV2ViQ29yZVRlc3RTaGltIiAqLzsKQEAgLTI4NTA3LDYgKzI4NTY3LDEyIEBA
CiAJCQkJQnVpbGRJbmRlcGVuZGVudFRhcmdldHNJblBhcmFsbGVsID0gWUVTOwogCQkJCUxhc3RT
d2lmdFVwZGF0ZUNoZWNrID0gMDcwMDsKIAkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDcwMDsKKwkJ
CQlUYXJnZXRBdHRyaWJ1dGVzID0geworCQkJCQlDMjlFN0M1OTFFMjRCQzFDMDBGRkVDM0QgPSB7
CisJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSA4LjIuMTsKKwkJCQkJCVByb3Zpc2lvbmlu
Z1N0eWxlID0gQXV0b21hdGljOworCQkJCQl9OworCQkJCX07CiAJCQl9OwogCQkJYnVpbGRDb25m
aWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwogCQkJY29tcGF0aWJpbGl0
eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKQEAgLTI4NTMxLDYgKzI4NTk3LDcgQEAKIAkJCQlERDA0
MUZCRTA5RDlEREJFMDAxMEFGMkEgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTQxN0RBNkNG
MTM3MzRFMDIwMDdDNTdGQiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi8sCiAJCQkJRTFCQTY2RjMx
NzQyQkRFMDAwQzIwMjUxIC8qIFdlYkNvcmVUZXN0U2hpbSAqLywKKwkJCQlDMjlFN0M1OTFFMjRC
QzFDMDBGRkVDM0QgLyogUEFMICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KQEAgLTI4NjgwLDYgKzI4NzQ3LDIwIEBACiAJCQlzaGVsbFBhdGggPSAvYmluL3No
OwogCQkJc2hlbGxTY3JpcHQgPSAiU1JDX0RJUj1cIiRTUkNST09UL01vZHVsZXMvbW9kZXJuLW1l
ZGlhLWNvbnRyb2xzXCJcbkRTVF9ESVI9XCIkQlVJTFRfUFJPRFVDVFNfRElSLyRVTkxPQ0FMSVpF
RF9SRVNPVVJDRVNfRk9MREVSX1BBVEgvbW9kZXJuLW1lZGlhLWNvbnRyb2xzXCJcblxubWtkaXIg
LXAgXCIkRFNUX0RJUlwiXG5cbmlmIFsgXCIke1BMQVRGT1JNX05BTUV9XCIgPT0gXCJtYWNvc3hc
IiBdOyB0aGVuXG4gICAgSU1HX09TX1BSRUZJWD1cIm1hY09TXCJcbmZpXG5cbmlmIFsgXCIke1BM
QVRGT1JNX05BTUV9XCIgPT0gXCJpcGhvbmVvc1wiIF0gfHwgWyBcIiR7UExBVEZPUk1fTkFNRX1c
IiA9PSBcImlwaG9uZXNpbXVsYXRvclwiIF07IHRoZW5cbiAgICBJTUdfT1NfUFJFRklYPVwiaU9T
XCJcbmZpXG5cbmlmIFsgLW4gXCIkSU1HX09TX1BSRUZJWFwiIF07IHRoZW5cbiAgICBta2RpciAt
cCBcIiREU1RfRElSL2ltYWdlc1wiXG4gICAgcnN5bmMgLWFxIC0tZXhjbHVkZSBcIi5zdm5cIiAt
LWV4Y2x1ZGUgXCIuRFNfU3RvcmVcIiBcIiRTUkNfRElSL2ltYWdlcy8kSU1HX09TX1BSRUZJWFwi
IFwiJERTVF9ESVIvaW1hZ2VzXCJcbmZpXG5cbmNkIFwiJFNSQ19ESVJcIlxuY2F0IGNvbnRyb2xz
LyouY3NzID4gXCIkRFNUX0RJUi9tb2Rlcm4tbWVkaWEtY29udHJvbHMuY3NzXCJcbmNhdCBgY2F0
IGpzLWZpbGVzYCA+IFwiJERTVF9ESVIvbW9kZXJuLW1lZGlhLWNvbnRyb2xzLmpzXCIiOwogCQl9
OworCQlDMjlFN0M2RTFFMjU2Q0ZCMDBGRkVDM0QgLyogRW5mb3JjZSBQQUwgTGF5ZXJpbmcgKi8g
PSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgK
KwkJCSk7CisJCQluYW1lID0gIkVuZm9yY2UgUEFMIExheWVyaW5nIjsKKwkJCW91dHB1dFBhdGhz
ID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwor
CQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gInB5dGhvbiAke1NSQ1JP
T1R9L1NjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5ICR7QlVJTFRfUFJPRFVDVFNfRElSfS8k
e0ZVTExfUFJPRFVDVF9OQU1FfSAke1NSQ1JPT1R9L1BBTCI7CisJCX07CiAJCUREMDQxRkJEMDlE
OUREQkUwMDEwQUYyQSAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwpAQCAtMjkwNjAsNyArMjkxNDEsNiBAQAogCQkJCUUxOUFDM0YwMTgyNERDNzkwMDM0OTQy
NiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE5QUMz
RjIxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMTlBQzNGNDE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hB
NTEyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxRkUxMzY0MTgzNDM1MTEwMDg5MkYxMyAvKiBD
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1N0E4RTQx
ODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTI1
Rjg0RDE4MjQyODlEMDBEODRDRDkgLyogQ3J5cHRvS2V5QUVTLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUxMjVGODYzMTgyQzMwM0EwMEQ4NENEOSAvKiBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5j
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMxODg0LDYgKzMxOTY0LDE0IEBACiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCUMyOUU3QzU2
MUUyNEJDMUMwMEZGRUMzRCAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkJQzI5RTdDNjUxRTI0QkVFNjAwRkZFQzNEIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0
by5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJRTFCQTY3MDIxNzQyQkRFMDAwQzIwMjUxIC8qIFNvdXJj
ZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zMTkxMCw2ICszMTk5OCwxMSBAQAogCQkJdGFyZ2V0ID0g
NDE3REE2Q0YxMzczNEUwMjAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydCAqLzsKIAkJCXRh
cmdldFByb3h5ID0gNDE4MTZGODQxMzg1OUM3RDAwNTdBQUE0IC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKIAkJfTsKKwkJQzI5RTdDNjcxRTI0QkYyNzAwRkZFQzNEIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0
ID0gQzI5RTdDNTkxRTI0QkMxQzAwRkZFQzNEIC8qIFBBTCAqLzsKKwkJCXRhcmdldFByb3h5ID0g
QzI5RTdDNjYxRTI0QkYyNzAwRkZFQzNEIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJ
fTsKIAkJREQwNDFGRjEwOUQ5RTMyNTAwMTBBRjJBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8g
PSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0gREQwNDFGQkUw
OUQ5RERCRTAwMTBBRjJBIC8qIERlcml2ZWQgU291cmNlcyAqLzsKQEAgLTMyMDUzLDYgKzMyMTQ2
LDI3IEBACiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CisJCUMyOUU3QzVCMUUy
NEJDMUQwMEZGRUMzRCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBDMjlFN0M2QjFFMjRDN0QxMDBG
RkVDM0QgLyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJ
CQluYW1lID0gRGVidWc7CisJCX07CisJCUMyOUU3QzVDMUUyNEJDMUQwMEZGRUMzRCAvKiBSZWxl
YXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IEMyOUU3QzZCMUUyNEM3RDEwMEZGRUMzRCAvKiBQQUwueGNjb25m
aWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOwor
CQl9OworCQlDMjlFN0M1RDFFMjRCQzFEMDBGRkVDM0QgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVu
Y2UgPSBDMjlFN0M2QjFFMjRDN0QxMDBGRkVDM0QgLyogUEFMLnhjY29uZmlnICovOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJREQw
NDFGQzIwOUQ5REREQzAwMTBBRjJBIC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDREQ0NUU1MEJB
OUM4NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29uZmlnICovOwpAQCAtMzIxNDEsNiArMzIyNTUs
MTYgQEAKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKIAkJCWRlZmF1bHRD
b25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CisJCUMyOUU3QzVFMUUyNEJDMUQw
MEZGRUMzRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAi
UEFMIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZp
Z3VyYXRpb25zID0gKAorCQkJCUMyOUU3QzVCMUUyNEJDMUQwMEZGRUMzRCAvKiBEZWJ1ZyAqLywK
KwkJCQlDMjlFN0M1QzFFMjRCQzFEMDBGRkVDM0QgLyogUmVsZWFzZSAqLywKKwkJCQlDMjlFN0M1
RDFFMjRCQzFEMDBGRkVDM0QgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQ
cm9kdWN0aW9uOworCQl9OwogCQlERDA0MUZDMTA5RDlERERDMDAxMEFGMkEgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291cmNlcyIg
Ki8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0
aW9ucyA9ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKaW5kZXggMGM4ZGZkZGQxZTBhN2FkYmFhMThlZjljNTEy
YTcyOGM5NDJhZGUyOS4uMjEwZDk4ZjNkNjBmN2FmYjNlYzk3ZjAyZTJiMzQ4ZTdjOTIyYWQzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMS5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVf
Q1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQ
QUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2
LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEx
OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3Qo
VmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhj
ZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBD
cnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAg
IGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMSk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0
aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2
NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYm
IG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0
b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRv
IGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAg
ICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEy
MjQuY3BwCmluZGV4IDZjYTFhZWU1YTZiYjdkODNjYTA1NjQxOWRjYmViZDUxN2I5ZDYxODUuLmJl
NDQxOTU3NDIyOGNiNTEwOTFmZTY1YjQ4Y2JmMzFjMjBmYmY4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0
LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNp
bmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5
cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6aWRlbnRpZmll
cigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVp
bnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2Fs
bGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdl
c3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7CisgICAgYXV0byBk
aWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNh
bGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1l
c3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdv
cml0aG1TSEEyMjQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRp
Z2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjI0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAg
ICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
MjU2LmNwcAppbmRleCA3MzY2MGY1OTlhZjM3Y2E5ZGU5YTIxOWUzZjRmMjM0OGY0NmFjMmIzLi42
ZjgxNmM4OTRhNzllZTdhNmQzYmU3YmY2OTRkNDE4OTA2MGI4NjAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1
Ni5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0j
aW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0Ny
eXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmlkZW50aWZp
ZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KFZlY3Rvcjx1
aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNh
bGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGln
ZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIGF1dG8g
ZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMjU2KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcg
QEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBt
ZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxn
b3JpdGhtU0hBMjU2OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYm
IGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBk
aWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzI1Nik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgIGlmICghZGlnZXN0KSB7CiAg
ICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTM4NC5jcHAKaW5kZXggYzk3NzUyZDgxYzAwNTQyMzliMGI4OGM2MGFhMzQzZWZhNjVlMTQ3Ny4u
ZGUxMTU4NzcwMzhiNTIxMWIwNzA1MWMyNjRiMzBlYTA1MGQ0NTllMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEz
ODQuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAot
I2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9D
cnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBA
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjppZGVudGlm
aWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChWZWN0b3I8
dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25D
YWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKKyAgICBhdXRv
IGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzM4NCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYg
bWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0Fs
Z29yaXRobVNIQTM4NDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sm
JiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8g
ZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8zODQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6
OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKICAgICBpZiAoIWRpZ2VzdCkgewog
ICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUx
Mi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEE1MTIuY3BwCmluZGV4IDMzZTQ4M2RhMTVkMTBjY2RiNzNlZTM4ZjkzYTEzZDZkNzE4NzAyZWYu
LjM2NTg5MzAyODZiOGYwZGQzZmM2MjI3YjhlY2IzZTEwNDYwYmMzYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
NTEyLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAK
LSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8v
Q3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBA
QCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6aWRlbnRp
ZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVjdG9y
PHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9E
aWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CisgICAgYXV0
byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV81MTIpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlv
bkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUs
NyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYm
IG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9B
bGdvcml0aG1TSEE1MTI6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVw
cmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRv
IGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfNTEyKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CiAgICAgaWYgKCFkaWdlc3QpIHsK
ICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NT
MV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGht
UlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IGY2YWI3YTIxNTU1M2I2Y2JmYjQ3MzAzNTVj
ZmU1MzUyYTlkMDIzNTUuLjdmY2Y1ZTIxNjg2NThmOWE3NDExOTY2MWZkMDA0YzhkNzBhZmI4OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC0zMCwyNiArMzAsMjYgQEAK
IAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0Fs
Z29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3Qu
aCIKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlw
dG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIHN0ZDo6
b3B0aW9uYWw8Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKK2lubGluZSBzdGQ6Om9wdGlv
bmFsPFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKIHsKICAgICBzd2l0Y2ggKGhh
c2hGdW5jdGlvbikgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6
Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7CisgICAgICAg
IHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsKICAgICBjYXNlIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6Ci0gICAgICAgIHJldHVybiBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlm
aWVyOjpTSEFfMjU2OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8yNTY7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjU2OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKLSAgICAg
ICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OworICAgICAgICByZXR1
cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0
b3I8dWludDhfdD4+IHNpZ25SU0FTU0FfUEtDUzFfdjFfNShDcnlwdG9BbGdvcml0aG1JZGVudGlm
CiAgICAgYXV0byBjcnlwdG9EaWdlc3RBbGdvcml0aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RB
bGdvcml0aG0oaGFzaCk7CiAgICAgaWYgKCFjcnlwdG9EaWdlc3RBbGdvcml0aG0pCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotICAgIGF1dG8gZGlnZXN0ID0g
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CisgICAgYXV0byBk
aWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0p
OwogICAgIGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9u
RXJyb3IgfTsKICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGgpOwpAQCAtOTMs
NyArOTMsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gdmVyaWZ5UlNBU1NBX1BLQ1MxX3Yx
XzUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLAogICAgIGF1dG8gY3J5cHRvRGlnZXN0
QWxnb3JpdGhtID0gV2ViQ29yZTo6Y3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2gpOwogICAgIGlm
ICghY3J5cHRvRGlnZXN0QWxnb3JpdGhtKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3Bl
cmF0aW9uRXJyb3IgfTsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpj
cnlwdG9EaWdlc3RBbGdvcml0aG0pOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdl
c3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKICAgICBpZiAoIWRpZ2VzdCkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAgICAgZGlnZXN0LT5h
ZGRCeXRlcyhkYXRhLCBkYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGRmOTYxZTAxOGFiN2ZhMDNjZGE1OTRiOTI0MThm
NTk0ZWY5NDhiOGIuLjIyMjYyMjI4OTk0YjVhODdkODk4Y2YxOGI0YWZiNzQ3YjI1OGQ0NTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAt
NDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJDb29r
aWUuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIK
ICNpbmNsdWRlICJET01FZGl0b3IuaCIKICNpbmNsdWRlICJET01QYXRjaFN1cHBvcnQuaCIKICNp
bmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTc5LDYgKzc4LDcgQEAKICNpbmNsdWRlICJOb2RlLmgi
CiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSA8UEFM
L2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVk
ZSAiUHNldWRvRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCkBAIC0xMzE3LDcg
KzEzMTcsNyBAQCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEy
NTZIYXNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgVGV4dEVuY29kaW5nIGRvY3VtZW50
RW5jb2RpbmcgPSBlbGVtZW50LmRvY3VtZW50KCkudGV4dEVuY29kaW5nKCk7CiAgICAgY29uc3Qg
VGV4dEVuY29kaW5nJiBlbmNvZGluZ1RvVXNlID0gZG9jdW1lbnRFbmNvZGluZy5pc1ZhbGlkKCkg
PyBkb2N1bWVudEVuY29kaW5nIDogVVRGOEVuY29kaW5nKCk7CiAgICAgQ1N0cmluZyBjb250ZW50
ID0gZW5jb2RpbmdUb1VzZS5lbmNvZGUoVGV4dE5vZGVUcmF2ZXJzYWw6OmNvbnRlbnRzQXNTdHJp
bmcoZWxlbWVudCksIEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICBhdXRvIGNyeXB0b0Rp
Z2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjU2KTsKKyAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUo
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgY3J5cHRvRGlnZXN0
LT5hZGRCeXRlcyhjb250ZW50LmRhdGEoKSwgY29udGVudC5sZW5ndGgoKSk7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGRpZ2VzdCA9IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKICAgICByZXR1
cm4gbWFrZVN0cmluZygic2hhMjU2LSIsIGJhc2U2NEVuY29kZShkaWdlc3QuZGF0YSgpLCBkaWdl
c3Quc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50
U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmNwcAppbmRleCBmMDU5YjYwMTRjODRiN2ZhNGE3MzZmOTU0YTg5MTMxNGFiNzNh
NWVkLi45M2VlZDEzZDhlZDQ0NDEzODg3ZDQxNTg0Yjk2NWViMDFjZTUzMDhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTMz
LDcgKzMzLDYgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmgiCiAjaW5j
bHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlTGlzdC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2lu
Y2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkRvY3VtZW50TG9hZGVyLmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5oIgogI2luY2x1
ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRv
RGlnZXN0Lmg+CiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlBpbmdM
b2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTMwMSwxOCArMzAxLDE4
IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxQb2xpY2llc0FsbG93KFZpb2xhdGVk
RGlyZWN0aXZlQ2FsbGJhY2smJiBjYWxsYmFjCiAgICAgcmV0dXJuIGlzQWxsb3dlZDsKIH0KIAot
c3RhdGljIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENv
bnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0gYWxnb3JpdGhtKQorc3RhdGljIFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oQ29udGVudFNl
Y3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0aG0pCiB7CiAgICAgc3dpdGNoIChhbGdv
cml0aG0pIHsKICAgICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNI
QV8yNTY6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsK
KyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CiAg
ICAgY2FzZSBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfMzg0OgotICAg
ICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgICAgIHJl
dHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ29u
dGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJu
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAgICAgICByZXR1cm4gUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwor
ICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+CkBAIC0zMzMsNyArMzMzLDcgQEAgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpIYXNoSW5FbmZvcmNlZEFuZFJlcG9ydE9ubHlQb2xpY2llc1BhaXIgQ29u
dGVudFNlY3VyaXR5UG8KICAgICBib29sIGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyA9IGZh
bHNlOwogICAgIGJvb2wgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMgPSBmYWxzZTsKICAg
ICBmb3IgKGF1dG8gYWxnb3JpdGhtIDogYWxnb3JpdGhtcykgewotICAgICAgICBhdXRvIGNyeXB0
b0RpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFs
Z29yaXRobSkpOworICAgICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0
OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7CiAgICAgICAgIGNy
eXB0b0RpZ2VzdC0+YWRkQnl0ZXMoY29udGVudENTdHJpbmcuZGF0YSgpLCBjb250ZW50Q1N0cmlu
Zy5sZW5ndGgoKSk7CiAgICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2ggaGFzaCA9IHsg
YWxnb3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKICAgICAgICAgaWYgKCFm
b3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgYWxsUG9saWNpZXNXaXRoRGlzcG9zaXRpb25B
bGxvdyhDb250ZW50U2VjdXJpdHlQb2xpY3k6OkRpc3Bvc2l0aW9uOjpFbmZvcmNlLCBzdGQ6OmZv
cndhcmQ8UHJlZGljYXRlPihwcmVkaWNhdGUpLCBoYXNoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzFmMDc1YWEzN2NiMzQ2MjA5ODQ3YTU5OWUxZjU0Mjg0ZjlmMzgxOS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDcnlwdG9EaWdlc3RfaAotI2RlZmluZSBDcnlwdG9E
aWdlc3RfaAotCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250
ZXh0OwotCi1jbGFzcyBDcnlwdG9EaWdlc3QgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENy
eXB0b0RpZ2VzdCk7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBBbGdvcml0aG0gewotICAgICAg
ICBTSEFfMSwKLSAgICAgICAgU0hBXzIyNCwKLSAgICAgICAgU0hBXzI1NiwKLSAgICAgICAgU0hB
XzM4NCwKLSAgICAgICAgU0hBXzUxMiwKLSAgICB9OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvRGlnZXN0PiBjcmVhdGUoQWxnb3JpdGhtKTsKLSAgICB+Q3J5cHRvRGlnZXN0KCk7
Ci0KLSAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsK
LSAgICBWZWN0b3I8dWludDhfdD4gY29tcHV0ZUhhc2goKTsKLQotcHJpdmF0ZToKLSAgICBDcnlw
dG9EaWdlc3QoKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBt
X2NvbnRleHQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDcnlw
dG9EaWdlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2Nv
bW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2ZmYzU2MDUyMjZiNjRiNDkzNzNiZWE2
ODVlOTIzZjAxOTliYjRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRv
RGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5o
IgotCi0jaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKLSAgICBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobSBhbGdvcml0aG07Ci0gICAgdm9pZCogY2NDb250ZXh0OwotfTsKLQotaW5s
aW5lIENDX1NIQTFfQ1RYKiB0b1NIQTFDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRl
eHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEExX0NUWCo+KGNv
bnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyMjRDb250
ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQt
PmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwotfQot
aW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjU2Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0
KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEy
NTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlubGluZSBDQ19TSEE1MTJfQ1RYKiB0
b1NIQTM4NENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NF
UlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29u
dGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEE1MTJDb250ZXh0KENyeXB0b0Rp
Z2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9
PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotCi1DcnlwdG9EaWdl
c3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRl
eHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci0gICAgc3dpdGNo
IChtX2NvbnRleHQtPmFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8xOgotICAgICAgICBkZWxldGUgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzIyNDoKLSAgICAgICAgZGVsZXRlIHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
NjoKLSAgICAgICAgZGVsZXRlIHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoK
LSAgICAgICAgZGVsZXRlIHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKLSAg
ICAgICAgZGVsZXRlIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotfQotCi0KLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0
b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7
Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRobTsKLQotICAgIHN3
aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzE6IHsKLSAgICAgICAgQ0NfU0hBMV9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMV9DVFg7Ci0g
ICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBD
Q19TSEExX0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6IHsKLSAgICAgICAgQ0NfU0hB
MjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOwotICAgICAgICBkaWdlc3QtPm1f
Y29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBMjI0X0luaXQoY29u
dGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKLSAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4
dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250
ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBMjU2X0luaXQoY29udGV4dCk7Ci0gICAgICAg
IHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8zODQ6IHsKLSAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1
MTJfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsK
LSAgICAgICAgQ0NfU0hBMzg0X0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7
Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKLSAg
ICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOwotICAgICAg
ICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hB
NTEyX0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIH0K
LX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXpl
X3QgbGVuZ3RoKQotewotICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKLSAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKLSAgICAgICAgQ0NfU0hBMV9VcGRh
dGUodG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0g
ICAgICAgIENDX1NIQTIyNF9VcGRhdGUodG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSks
IGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgQ0NfU0hBMjU2X1VwZGF0ZSh0b1NIQTI1NkNv
bnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICBDQ19T
SEEzODRfVXBkYXRlKHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVu
Z3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV81MTI6Ci0gICAgICAgIENDX1NIQTUxMl9VcGRhdGUodG9TSEE1MTJDb250ZXh0KG1fY29u
dGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQot
Ci1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Ci0gICAgICAgIHJlc3Vs
dC5yZXNpemUoQ0NfU0hBMV9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBMV9GaW5hbChy
ZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAg
ICByZXN1bHQucmVzaXplKENDX1NIQTIyNF9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hB
MjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzI1NjoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEyNTZfRElHRVNUX0xFTkdUSCk7Ci0g
ICAgICAgIENDX1NIQTI1Nl9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTI1NkNvbnRleHQobV9j
b250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMzg0X0RJR0VT
VF9MRU5HVEgpOwotICAgICAgICBDQ19TSEEzODRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEz
ODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICByZXN1bHQucmVzaXplKEND
X1NIQTUxMl9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBNTEyX0ZpbmFsKHJlc3VsdC5k
YXRhKCksIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRv
RGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQv
Q3J5cHRvRGlnZXN0R0NyeXB0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEz
YzhiZjI0M2RjMDcyYWJiYTg0NjE4OTczM2EwZjUzZmQ2YzA0ZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgU29mdEF0SG9tZQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNsdWRlIDxnY3J5cHQuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAgaW50IGFs
Z29yaXRobTsKLSAgICBnY3J5X21kX2hkX3QgbWQ7Ci19OwotCi1DcnlwdG9EaWdlc3Q6OkNyeXB0
b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCi17Ci19
Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtIGFsZ29yaXRobSkKLXsKLSAgICBpbnQgZ2NyeXB0QWxnb3JpdGhtOwotCi0gICAgc3dpdGNo
IChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToK
LSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEExOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAgICBnY3J5
cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTIyNDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGht
ID0gR0NSWV9NRF9TSEEyNTY7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURf
U0hBMzg0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfNTEyOgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTUxMjsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4g
ZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0
aG0gPSBnY3J5cHRBbGdvcml0aG07Ci0KLSAgICBnY3J5X21kX29wZW4oJmRpZ2VzdC0+bV9jb250
ZXh0LT5tZCwgZ2NyeXB0QWxnb3JpdGhtLCAwKTsKLSAgICBpZiAoIWRpZ2VzdC0+bV9jb250ZXh0
LT5tZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZGlnZXN0OwotfQot
Ci12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBs
ZW5ndGgpCi17Ci0gICAgZ2NyeV9tZF93cml0ZShtX2NvbnRleHQtPm1kLCBpbnB1dCwgbGVuZ3Ro
KTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewot
ICAgIGludCBkaWdlc3RMZW4gPSBnY3J5X21kX2dldF9hbGdvX2RsZW4obV9jb250ZXh0LT5hbGdv
cml0aG0pOwotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoZGlnZXN0TGVuKTsKLQotICAgIGdj
cnlfbWRfZmluYWwobV9jb250ZXh0LT5tZCk7Ci0gICAgbWVtY3B5KHJlc3VsdC5kYXRhKCksIGdj
cnlfbWRfcmVhZChtX2NvbnRleHQtPm1kLCAwKSwgZGlnZXN0TGVuKTsKLSAgICBnY3J5X21kX2Ns
b3NlKG1fY29udGV4dC0+bWQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRv
L2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA4OWE1ZDgxZjJiNGJlMjczMmNlZTNlNTI2MzM4NmVkNTljYjIxNGRlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBT
LkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPGdudXRscy9nbnV0bHMuaD4K
LSNpbmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3Qg
YWxnb3JpdGhtOwotICAgIGdudXRsc19oYXNoX2hkX3QgaGFzaDsKLX07Ci0KLUNyeXB0b0RpZ2Vz
dDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4
dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLSAgICBnbnV0bHNf
aGFzaF9kZWluaXQobV9jb250ZXh0LT5oYXNoLCAwKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0g
YWxnb3JpdGhtKQotewotICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgZ251dGxzQWxnb3Jp
dGhtOwotCi0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMTogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElH
X1NIQTE7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMjI0OiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdf
U0hBMjI0OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzI1NjogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElH
X1NIQTI1NjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJ
R19TSEEzODQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19E
SUdfU0hBNTEyOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQotCi0gICAgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRpZ2Vz
dC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnbnV0bHNBbGdvcml0aG07Ci0KLSAgICBpbnQgcmV0
ID0gZ251dGxzX2hhc2hfaW5pdCgmZGlnZXN0LT5tX2NvbnRleHQtPmhhc2gsIGdudXRsc0FsZ29y
aXRobSk7Ci0gICAgaWYgKHJldCAhPSBHTlVUTFNfRV9TVUNDRVNTKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIHJldHVybiBkaWdlc3Q7Ci19Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0Ojph
ZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBnbnV0bHNf
aGFzaChtX2NvbnRleHQtPmhhc2gsIGlucHV0LCBsZW5ndGgpOwotfQotCi1WZWN0b3I8dWludDhf
dD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJl
c3VsdDsKLSAgICBpbnQgZGlnZXN0TGVuID0gZ251dGxzX2hhc2hfZ2V0X2xlbihtX2NvbnRleHQt
PmFsZ29yaXRobSk7Ci0gICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RMZW4pOwotCi0gICAgZ251dGxz
X2hhc2hfb3V0cHV0KG1fY29udGV4dC0+aGFzaCwgcmVzdWx0LmRhdGEoKSk7Ci0KLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2Y2MxOTJjMmIzMDM5NTk0MzBmMjQ5YzczNjM0YjEz
OWM3YThhNDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNsdWRlIDx3aW5jcnlwdC5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsK
LSAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07Ci0gICAgSENSWVBUUFJPViBo
Q29udGV4dCB7IDAgfTsKLSAgICBIQ1JZUFRIQVNIIGhIYXNoIHsgMCB9OwotfTsKLQotQ3J5cHRv
RGlnZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RD
b250ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotICAgIGlm
IChIQ1JZUFRIQVNIIGhIYXNoID0gbV9jb250ZXh0LT5oSGFzaCkKLSAgICAgICAgQ3J5cHREZXN0
cm95SGFzaChoSGFzaCk7Ci0gICAgaWYgKEhDUllQVFBST1YgaENvbnRleHQgPSBtX2NvbnRleHQt
PmhDb250ZXh0KQotICAgICAgICBDcnlwdFJlbGVhc2VDb250ZXh0KGhDb250ZXh0LCAwKTsKLX0K
LQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQWxn
b3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBk
aWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRo
bSA9IGFsZ29yaXRobTsKLSAgICBpZiAoIUNyeXB0QWNxdWlyZUNvbnRleHQoJmRpZ2VzdC0+bV9j
b250ZXh0LT5oQ29udGV4dCwgbnVsbHB0ciwgbnVsbHB0ciAvKiB1c2UgZGVmYXVsdCBwcm92aWRl
ciAqLywgUFJPVl9SU0FfQUVTLCBDUllQVF9WRVJJRllDT05URVhUKSkKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxzZTsKLSAgICBzd2l0Y2ggKGFsZ29y
aXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7Ci0gICAg
ICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRl
eHQsIENBTEdfU0hBMSwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
OiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4
dC0+aENvbnRleHQsIENBTEdfU0hBXzI1NiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFz
aCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMzg0OiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdl
c3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzM4NCwgMCwgMCwgJmRpZ2VzdC0+bV9j
b250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3Jl
YXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzUxMiwgMCwgMCwg
JmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9
Ci0gICAgaWYgKHN1Y2NlZWRlZCkKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICByZXR1cm4g
bnVsbHB0cjsKLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlu
cHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGlmICghaW5wdXQgfHwgIWxlbmd0aCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0SGFzaERhdGEobV9jb250ZXh0LT5o
SGFzaCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBCWVRFKj4oaW5wdXQpLCBsZW5ndGgsIDApKTsK
LX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAg
IFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyOwot
ICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlclNpemUgPSBzaXplb2YoZGlnZXN0TGVuZ3RoQnVm
ZmVyKTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFzaFBhcmFtKG1fY29udGV4dC0+
aEhhc2gsIEhQX0hBU0hTSVpFLCByZWludGVycHJldF9jYXN0PEJZVEUqPigmZGlnZXN0TGVuZ3Ro
QnVmZmVyKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlclNpemUsIDApKTsKLSAgICByZXN1bHQucmVzaXpl
KGRpZ2VzdExlbmd0aEJ1ZmZlcik7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQ
YXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIVkFMLCByZXN1bHQuZGF0YSgpLCAmZGlnZXN0
TGVuZ3RoQnVmZmVyLCAwKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LnNpemUoKSA9PSBk
aWdlc3RMZW5ndGhCdWZmZXIpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggYzM0NTU3ZDk3Y2NlNzBhMTI3
MDY4ZmJiNDBmODY0YTQ0ODY1NGEzYS4uZDRiZDhhZTAzZWU0ZGFjY2NhNmViYmUxN2FiNzc3ZTZl
ZGNiYjZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogCiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJDb29raWVKYXJT
b3VwLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2lu
Y2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5o
PgpAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWNlcnRpZmljYXRlRGF0
YSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIGRpZ2VzdCA9
IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsK
KyAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVz
KGNlcnRpZmljYXRlRGF0YS0+ZGF0YSwgY2VydGlmaWNhdGVEYXRhLT5sZW4pOwogCiAgICAgICAg
IGF1dG8gaGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9XZWJLaXRGUy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZQppbmRleCAy
OWEwOTY5MDM4ZmFhNzQ0ZTFhOGM1OGYzNTZhZDA3M2YwMDUyNWJkLi41MTMwZmZjYmNjN2M5Y2U3
NTE0YWY0ZDU1M2JkOGE0ZjA1MDE0NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0
RlMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlCkBAIC0xMCw2ICsxMCw5
IEBAIGVuZGlmICgpCiBpZiAoTk9UIFdFQkNPUkVfRElSKQogICAgIHNldChXRUJDT1JFX0RJUiAi
JHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViQ29yZSIpCiBlbmRpZiAoKQoraWYgKE5PVCBQ
QUxfRElSKQorICAgIHNldChQQUxfRElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJD
b3JlL1BBTCIpCitlbmRpZiAoKQogaWYgKE5PVCBXRUJLSVRfRElSKQogICAgIHNldChXRUJLSVRf
RElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJLaXQiKQogZW5kaWYgKCkKZGlmZiAt
LWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggNzlhMTdiYWNhMGRm
NTMyOGU3YjNkMTE5NzJiYjZiN2I0N2UyZTZmYS4uN2FjOWQ4YzBmMWJkOGMyMjMyOWQwMDBmOWM4
MDU5NTU1NjNlNTZlZSAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0
cy50eHQKQEAgLTExNSw2ICsxMTUsNyBAQCBlbHNlICgpCiAgICAgc2V0KFdlYkNvcmVfTElCUkFS
WV9UWVBFIFNUQVRJQykKIGVuZGlmICgpCiAKK3NldChQQUxfTElCUkFSWV9UWVBFIFNUQVRJQykK
IHNldChXZWJLaXRfTElCUkFSWV9UWVBFIFNIQVJFRCkKIHNldChXZWJLaXQyX0xJQlJBUllfVFlQ
RSBTSEFSRUQpCiBzZXQoV2ViQ29yZVRlc3RTdXBwb3J0X0xJQlJBUllfVFlQRSBTVEFUSUMpCmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTRmNjQ3MTYwOGU5NGVhOTRl
N2QyZGJmZmFiZDZmNGI4ZTVjZDczZS4uZjJiZjc1ZDVhOWE2NDU1NGFkNTk1OTFiYmIzZmJjOTAy
M2ZjYjNiZiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE3LTAxLTEwICBEb24gT2xtc3RlYWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNv
bT4gYW5kIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogU291cmNlL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9j
bWFrZS9XZWJLaXRGUy5jbWFrZToKKwogMjAxNi0xMi0yMSAgS29uc3RhbnRpbiBUb2thcmV2ICA8
YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAgICAgc2V0IFBZVEhPTlBBVEggaW4gc2VwYXJhdGUg
Q09NTUFORCBkb2Vzbid0IHdvcmsgd2l0aCBhbGwgQ01ha2UgZ2VuZXJhdG9ycwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298516</attachid>
            <date>2017-01-10 15:41:53 -0800</date>
            <delta_ts>2017-01-10 16:18:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20170110154017.patch</filename>
            <type>text/plain</type>
            <size>95633</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJlNmIxNDdjZTJkOTMx
NjM3YzA1MDdkZWYzMmZiZjBjMjhhM2Y1OC4uNWQxOTFjN2ZiNWE2YmZjYzcwYjVmNDdkODg1OTAy
N2Y5MzA4ZmVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE3LTAxLTEwICBEb24g
T2xtc3RlYWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4gYW5kIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZv
cm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGVuZm9yY2UgbGF5ZXJpbmcgYW5kIHByb21v
dGUgdGVzdGFiaWxpdHksIFdlYkNvcmUvcGxhdGZvcm0gZmlsZXMKKyAgICAgICAgc2hvdWxkIGJl
IGNvbXBpbGVkIGluIHRoZWlyIG93biB0YXJnZXQuIFRoaXMgbmV3IHRhcmdldCBjYW4gZW5mb3Jj
ZSBsYXllcmluZworICAgICAgICBhbmQgY2FuIGJlIHRlc3RlZCB3aXRoIHVuaXQgdGVzdHMgaW4g
YWRkaXRpb24gdG8gbGF5b3V0IHRlc3RzLgorCisgICAgICAgIFRoZSBuYW1lIG9mIHRoaXMgbmV3
IHRhcmdldCBpcyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIsIG9yICJQQUwuIgorICAg
ICAgICBUaGlzIGNvbXByaXNlcyBvZiBhIG5ldyBkaXJlY3RvcnkgaW4gV2ViQ29yZSB3aGljaCB3
aWxsIGJlIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBmb3IgZmlsZXMgbWlncmF0ZWQgZnJvbSBX
ZWJDb3JlL3BsYXRmb3JtLiBUaGlzIG5ldyBmb2xkZXIsIGFuZCBpdHMgYXNzb2NpYXRlZAorICAg
ICAgICB0YXJnZXQsIHdpbGwgbWFpbnRhaW4gbGF5ZXJpbmcgaW52YXJpYW50cy4gVGhlc2UgaW52
YXJpYW50cyBhcmUgZW5mb3JjZWQgYXQKKyAgICAgICAgYnVpbGQtdGltZSB3aXRoIGEgYnVpbGQg
c3RlcCB3aGljaCBwcm9jZXNzZXMgdGhlIHN5bWJvbHMgd2l0aGluIHRoZSBjb21waWxlZAorICAg
ICAgICBhcmNoaXZlIGZpbGUgYXMgd2VsbCBhcyB0aGUgI2luY2x1ZGUgZGlyZWN0aXZlcyBpbnNp
ZGUgdGhlIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgRmlsZXMgd2lsbCBiZSBtaWdyYXRlZCBpbnRv
IHRoaXMgbmV3IHRhcmdldC9kaXJlY3RvcnkgcGllY2UtYnktcGllY2UsIGFuZCB0aGUKKyAgICAg
ICAgbWlncmF0aW9uIG9mIGEgZmlsZSB3aWxsIGJlIHBlcmZvcm1lZCBhcyBzb29uIGFzIGl0IGNh
biBiZSBtaWdyYXRlZCB3aXRob3V0CisgICAgICAgIHZpb2xhdGluZyBsYXllcmluZy4KKworICAg
ICAgICBXaXRoaW4gV2ViQ29yZSwgZmlsZXMgc2hvdWxkIGluY2x1ZGUgZmlsZXMgaW4gUEFMIHVz
aW5nIHRoZSBjb252ZW50aW9uCisgICAgICAgICNpbmNsdWRlIDxQQUwvZm9vLmg+LiBTeW1ib2xz
IHdpdGhpbiBQQUwgYXJlIHBsYWNlZCB3aXRoaW4gYSBuZXcgbmFtZXNwYWNlLAorICAgICAgICBX
ZWJDb3JlOjpQQUwsIGFuZCB0aGVyZWZvcmUgd2hlbiB1c2VkIGluc2lkZSBXZWJDb3JlIHNob3Vs
ZCBiZSByZWZlcnJlZCB0bworICAgICAgICBhcyBQQUw6OkZvby4KKworICAgICAgICBUaGUgZmly
c3Qgc2V0IG9mIGZpbGVzIHRvIG1vdmUgaW50byB0aGUgbmV3IHBsYXRmb3JtIGlzIHRoZSBjcnlw
dG8vIHN1YmRpcmVjdG9yeQorICAgICAgICBiZWNhdXNlIGl0IGlzIGJvdGggc2ltcGxlIGJ1dCBh
bHNvIGluY2x1ZGVzIHBsYXRmb3JtLWRlcGVuZGVudCBmaWxlcy4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9QQUwueGNjb25maWc6IEFk
ZGVkLiBQQUwtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLgorICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6IE5lZWQgdG8gdXBkYXRlIHRoZSBzZWFyY2ggcGF0
aHMgc28gZmlsZXMgY2FuCisgICAgICAgIGluY2x1ZGUgUEFMIGZpbGVzLgorICAgICAgICAqIFBB
TC9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3JtRWZsLmNtYWtl
OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvUGxhdGZvcm1HVEsuY21ha2U6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9QbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3Jt
V2luLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvY29uZmlnLmg6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmguCisgICAgICAgICogUEFML2NyeXB0by9j
b21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcC4KKyAgICAgICAgKiBQQUwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RH
Q3J5cHQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dj
cnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwLgorICAgICAgICAqIFBBTC9jcnlwdG8vZ251dGxz
L0NyeXB0b0RpZ2VzdEdudVRMUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAuCisgICAgICAgICogUEFM
L2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcC4KKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAg
ICAgKiBTY3JpcHRzL0VuZm9yY2VQQUxMYXllcmluZy5weTogQWRkZWQuIFRoaXMgaXMgdGhlIGxh
eWVyaW5nIGVuZm9yY2VtZW50IG1lY2hhbmlzbS4KKyAgICAgICAgSXQgY2hlY2tzIGJvdGggc3lt
Ym9sIG5hbWVzIGluIHRoZSBjb21waWxlZCAuYSBmaWxlIGFzIHdlbGwgYXMgaW5jbHVkZSBkaXJl
Y3RpdmVzIGluCisgICAgICAgIHRoZSBzb3VyY2UgY29kZS4KKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCB0aGUgbmV3IFBBTCB0YXJnZXQuCisgICAgICAg
ICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6IFVwZGF0ZSB0byB1
c2UgdGhlIFBBTCBzeW1ib2wgbmFtaW5nCisgICAgICAgIGNvbnZlbnRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjpz
aWduUlNBU1NBX1BLQ1MxX3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UlNBU1NBX1BL
Q1MxX3YxXzUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6IERp
dHR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEy
NTZIYXNoKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJblBv
bGljaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNz
aW9uLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIb3N0VExTQ2VydGlmaWNhdGVTZXQ6
OmNvbXB1dGVDZXJ0aWZpY2F0ZUhhc2gpOgorCiAyMDE3LTAxLTEwICBLZWl0aCBSb2xsaW4gIDxr
cm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBNaXNzaW5nIGxvZ2dpbmcgaW4gSWNvbkxvYWRl
cjo6c3RhcnRMb2FkaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvQ01ha2VMaXN0cy50eHQKaW5kZXggMWI4YTJkY2I1MDRmYjU1NmFiYzVmNTgzYjc2YmUzOGQ5
MmYwZmRmMS4uMTVmZGYyMjRhODk2NmJlMTFkY2Y2M2UyZmE4ZjU4N2EwM2U3MjY0NCAxMDA2NDQK
LS0tIGEvU291cmNlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9DTWFrZUxpc3RzLnR4dApA
QCAtNDYsNiArNDYsNyBAQCBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdURiAke0FE
RElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFH
UyhKYXZhU2NyaXB0Q29yZSAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogCiBpZiAoRU5B
QkxFX1dFQkNPUkUpCisgICAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhQQUwgJHtB
RERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVS
X0ZMQUdTKFdlYkNvcmVUZXN0U3VwcG9ydCAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQog
ICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29yZSAke0FERElUSU9OQUxf
Q09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2Vi
Q29yZURlcml2ZWRTb3VyY2VzICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDQ4MTk3YjJkYjI5NTNmNjM1ZGRiYzliYjBhMDU1MzM1YWNhOTI1NmYu
LmRkODA2NmZlNWQ1N2I2ZjJjZjk5OTI4ZjgyYzkyYTBmMmY5NTA0MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0xLDYgKzEsNyBAQAogY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIu
OC4xMikKIGluY2x1ZGUoV2ViS2l0Q29tbW9uKQogc2V0X3Byb3BlcnR5KERJUkVDVE9SWSAuIFBS
T1BFUlRZIEZPTERFUiAiV2ViQ29yZSIpCithZGRfc3ViZGlyZWN0b3J5KFBBTCkKIAogc2V0KFdl
YkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpAQCAt
Mjk1Miw2ICsyOTUzLDcgQEAgc2V0KFdlYkNvcmVfUExVR19JTlNfUkVTT1VSQ0VTCiBzZXQoV2Vi
Q29yZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJSQVJJRVN9CiAgICAgSmF2YVNjcmlwdENvcmUk
e0RFQlVHX1NVRkZJWH0KKyAgICBQQUwKICkKIAogaWYgKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVE
X01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhj
Y29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA5YmEyZWQwNjJkZTk0MWI5NjkwMmNhNDRjZWFhMWMwZTQ3MTc5NzIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcKQEAg
LTAsMCArMSwzNiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoK
Ky8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
Ky8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5j
bHVkZSAiV2ViQ29yZS54Y2NvbmZpZyIKKworSU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhf
JChDT05GSUdVUkFUSU9OKSk7CitJTlNUQUxMX1BBVEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwv
bGliOworCitTS0lQX0lOU1RBTEwgPSAkKFNLSVBfSU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFM
TCkpOworU0tJUF9JTlNUQUxMXyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9OTyA9IFlFUzsKK1NLSVBf
SU5TVEFMTF9ZRVMgPSBOTzsKKworUFJPRFVDVF9OQU1FID0gUEFMOworRVhFQ1VUQUJMRV9QUkVG
SVggPSBsaWI7CitFWFBPUlRFRF9TWU1CT0xTX0ZJTEUgPSA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZwppbmRleCBjNDg4ZjgwNGZmYjAwNjc0YmJl
OThhMWQyODU2YjM2MGRhYzBjOGEzLi41OWYzOGU1MGNiODNlZjRjODk1ZDA1MTA0ODM4YmQ5NTQ3
NmNjMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3Jl
LnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNj
b25maWcKQEAgLTQ2LDcgKzQ2LDcgQEAgT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKE9USEVSX0NG
TEFHUyk7CiAKIFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9ucyAkKFNES1JPT1Qp
L3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9uczsKIAotSEVBREVSX1NFQVJDSF9QQVRI
UyA9IEZvcndhcmRpbmdIZWFkZXJzIGljdSAvdXNyL2luY2x1ZGUvbGlieHNsdCAvdXNyL2luY2x1
ZGUvbGlieG1sMiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUi
ICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJ
T05TX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CitIRUFERVJf
U0VBUkNIX1BBVEhTID0gRm9yd2FyZGluZ0hlYWRlcnMgaWN1ICQoU1JDUk9PVCkgL3Vzci9pbmNs
dWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9p
bmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRI
ID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzOwogSU5TVEFMTF9QQVRI
W3Nkaz1tYWNvc3gqXSA9ICQoV0VCQ09SRV9GUkFNRVdPUktTX0RJUik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01h
a2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg2Mjk5MTkyNTg5OTUyMjEzOTFjYTkwYzY3NmE3ZTFi
ZjJjNjcwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DTWFrZUxpc3Rz
LnR4dApAQCAtMCwwICsxLDM4IEBACitzZXQoUEFMX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAi
JHtQQUxfRElSfSIKKyAgICAiJHtQQUxfRElSfS9jcnlwdG8iCispCisKK3NldChQQUxfU09VUkNF
UworKQorCitzZXQoUEFMX0xJQlJBUklFUworICAgIFdURgorKQorCitXRUJLSVRfSU5DTFVERV9D
T05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKworV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke1BBTF9T
T1VSQ0VTfSkKK1dFQktJVF9GUkFNRVdPUksoUEFMKQorCitpZiBPUyhVTklYKQorICAgIGFkZF9j
dXN0b21fY29tbWFuZCgKKyAgICAgICAgVEFSR0VUIFBBTAorICAgICAgICBQT1NUX0JVSUxECisg
ICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtXRUJDT1JFX0RJUn0vc2NyaXB0
cy9FbmZvcmNlUEFMTGF5ZXJpbmcucHkgJDxUQVJHRVRfRklMRTpQQUw+ICR7UEFMX0RJUn0KKyAg
ICAgICAgVkVSQkFUSU0pCitlbmRpZiAoKQorCitpZiAoTVNWQykKKyAgICBhZGRfY3VzdG9tX2Nv
bW1hbmQoCisgICAgICAgIFRBUkdFVCBQQUwKKyAgICAgICAgUFJFX0JVSUxECisgICAgICAgIENP
TU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V0VCS0lUX0xJQlJBUklFU19ESVJ9L3Rvb2xzL3Nj
cmlwdHMvYXV0by12ZXJzaW9uLnBsICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0KKyAgICAgICAgVkVS
QkFUSU0pCisKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAgIFRBUkdFVCBQQUwKKyAg
ICAgICAgUE9TVF9CVUlMRAorICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dF
QktJVF9MSUJSQVJJRVNfRElSfS90b29scy9zY3JpcHRzL3ZlcnNpb24tc3RhbXAucGwgJHtERVJJ
VkVEX1NPVVJDRVNfRElSfSAkPFRBUkdFVF9GSUxFOlBBTD4KKyAgICAgICAgVkVSQkFUSU0pCitl
bmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtRWZsLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtRWZsLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NWMx
ODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmExYTE1ZmM2M2IKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0
KEFQUEVORCBQQUxfU09VUkNFUworICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0
LmNwcAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtR1RLLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtR1RLLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NWMx
ODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmExYTE1ZmM2M2IKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0
KEFQUEVORCBQQUxfU09VUkNFUworICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0
LmNwcAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtTWFjLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtTWFjLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmOTY4
ZWM0ZDk4ZTQxZjczNzI5MGY4ZjRmMjhmNzRmNmEyZTYxZjgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0
KEFQUEVORCBQQUxfU09VUkNFUworICAgIGNyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0
Q29tbW9uQ3J5cHRvLmNwcAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BsYXRm
b3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtV2luLmNtYWtlCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZmNjkxOWY3NmYxMDhmNzJlYzg4N2ExYjczNTA3ODE3MjJhMjU4YTgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTAsMCAr
MSwzIEBACitsaXN0KEFQUEVORCBQQUxfU09VUkNFUworICAgIGNyeXB0by93aW4vQ3J5cHRvRGln
ZXN0V2luLmNwcAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oIGIv
U291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0ODhjODBhZGY2YzExZjZj
MzA4MjAzYThlNzJlYTQ4MzY4NmYzZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvY29uZmlnLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpZiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICYmIEhBVkVfQ09ORklHX0ggJiYgZGVmaW5l
ZChCVUlMRElOR19XSVRIX0NNQUtFKQorI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCisjZW5kaWYK
KworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jv
cy5oPgorCisjaWZkZWYgX19BUFBMRV9fCisjZGVmaW5lIEhBVkVfRlVOQ19VU0xFRVAgMQorI2Vu
ZGlmIC8qIF9fQVBQTEVfXyAqLworCisjaWYgT1MoV0lORE9XUykKKworI2lmbmRlZiBfV0lOMzJf
V0lOTlQKKyNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4NjAxCisjZW5kaWYKKworI2lmbmRlZiBXSU5W
RVIKKyNkZWZpbmUgV0lOVkVSIDB4MDYwMQorI2VuZGlmCisKKyNlbmRpZiAvKiBPUyhXSU5ET1dT
KSAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKKworLy8gVGhlc2UgdW5kZWZzIG1hdGNoIHVwIHdp
dGggZGVmaW5lcyBpbiBXZWJDb3JlUHJlZml4LmggZm9yIE1hYyBPUyBYLgorLy8gSGVscHMgdXMg
Y2F0Y2ggaWYgYW55b25lIHVzZXMgbmV3IG9yIGRlbGV0ZSBieSBhY2NpZGVudCBpbiBjb2RlIGFu
ZCBkb2Vzbid0IGluY2x1ZGUgImNvbmZpZy5oIi4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUK
KyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCisjaW5jbHVkZSA8Y2lzbzY0Nj4KKworI2Vu
ZGlmCisKKyNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9j
cnlwdG8vQ3J5cHRvRGlnZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWIyMDg2YTVlZWVmYjExM2Q1YWQyMTlj
ZWY4YjQxOTc3ZDc0YmZhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9j
cnlwdG8vQ3J5cHRvRGlnZXN0LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwgeworCitz
dHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dDsKKworY2xhc3MgQ3J5cHRvRGlnZXN0IHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShDcnlwdG9EaWdlc3QpOworcHVibGljOgorICAgIGVudW0gY2xh
c3MgQWxnb3JpdGhtIHsKKyAgICAgICAgU0hBXzEsCisgICAgICAgIFNIQV8yMjQsCisgICAgICAg
IFNIQV8yNTYsCisgICAgICAgIFNIQV8zODQsCisgICAgICAgIFNIQV81MTIsCisgICAgfTsKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gY3JlYXRlKEFsZ29yaXRobSk7
CisgICAgfkNyeXB0b0RpZ2VzdCgpOworCisgICAgdm9pZCBhZGRCeXRlcyhjb25zdCB2b2lkKiBp
bnB1dCwgc2l6ZV90IGxlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVIYXNoKCk7
CisKK3ByaXZhdGU6CisgICAgQ3J5cHRvRGlnZXN0KCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvRGlnZXN0Q29udGV4dD4gbV9jb250ZXh0OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlOjpQQUwKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9jb21t
b25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzdlNzY2YWE4YTU2MWI5OWU0ZTU3ZGE5ZTI2OTEyYzNiZTg1YmVkYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0Rp
Z2VzdENvbW1vbkNyeXB0by5jcHAKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDxD
b21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNw
YWNlIFBBTCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKKyAgICBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobSBhbGdvcml0aG07CisgICAgdm9pZCogY2NDb250ZXh0OworfTsKKworaW5s
aW5lIENDX1NIQTFfQ1RYKiB0b1NIQTFDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzEpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEExX0NUWCo+KGNv
bnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyMjRDb250
ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQt
PmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQor
aW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjU2Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0
KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEy
NTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lubGluZSBDQ19TSEE1MTJfQ1RYKiB0
b1NIQTM4NENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NF
UlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29u
dGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEE1MTJDb250ZXh0KENyeXB0b0Rp
Z2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9
PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQorCitDcnlwdG9EaWdl
c3Q6OkNyeXB0b0RpZ2VzdCgpCisgICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRl
eHQpCit7Cit9CisKK0NyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7CisgICAgc3dpdGNo
IChtX2NvbnRleHQtPmFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8xOgorICAgICAgICBkZWxldGUgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzIyNDoKKyAgICAgICAgZGVsZXRlIHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
NjoKKyAgICAgICAgZGVsZXRlIHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoK
KyAgICAgICAgZGVsZXRlIHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAg
ICAgICAgZGVsZXRlIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorfQorCisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0
b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKK3sKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7
CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRobTsKKworICAgIHN3
aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzE6IHsKKyAgICAgICAgQ0NfU0hBMV9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMV9DVFg7Cisg
ICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBD
Q19TSEExX0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6IHsKKyAgICAgICAgQ0NfU0hB
MjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOworICAgICAgICBkaWdlc3QtPm1f
Y29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMjI0X0luaXQoY29u
dGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKKyAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4
dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250
ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMjU2X0luaXQoY29udGV4dCk7CisgICAgICAg
IHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8zODQ6IHsKKyAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1
MTJfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsK
KyAgICAgICAgQ0NfU0hBMzg0X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7
CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKKyAg
ICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOworICAgICAg
ICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hB
NTEyX0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIH0K
K30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXpl
X3QgbGVuZ3RoKQoreworICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAgICAgICAgQ0NfU0hBMV9VcGRh
dGUodG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Cisg
ICAgICAgIENDX1NIQTIyNF9VcGRhdGUodG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSks
IGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgQ0NfU0hBMjU2X1VwZGF0ZSh0b1NIQTI1NkNv
bnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgorICAgICAgICBDQ19T
SEEzODRfVXBkYXRlKHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVu
Z3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV81MTI6CisgICAgICAgIENDX1NIQTUxMl9VcGRhdGUodG9TSEE1MTJDb250ZXh0KG1fY29u
dGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgfQorfQor
CitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7
CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6CisgICAgICAgIHJlc3Vs
dC5yZXNpemUoQ0NfU0hBMV9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMV9GaW5hbChy
ZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAg
ICByZXN1bHQucmVzaXplKENDX1NIQTIyNF9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hB
MjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzI1NjoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEyNTZfRElHRVNUX0xFTkdUSCk7Cisg
ICAgICAgIENDX1NIQTI1Nl9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTI1NkNvbnRleHQobV9j
b250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMzg0X0RJR0VT
VF9MRU5HVEgpOworICAgICAgICBDQ19TSEEzODRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEz
ODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgorICAgICAgICByZXN1bHQucmVzaXplKEND
X1NIQTUxMl9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBNTEyX0ZpbmFsKHJlc3VsdC5k
YXRhKCksIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZTo6UEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL2djcnlwdC9Dcnlw
dG9EaWdlc3RHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nY3J5cHQvQ3J5
cHRvRGlnZXN0R0NyeXB0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMzdmZWY0ZmY4MmM3ZGRkYWM1OTAzOGI2
NGY1ZWI0ZTYzYzlkYWRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML2Ny
eXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApAQCAtMCwwICsxLDk3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
U29mdEF0SG9tZQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5
cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDxnY3J5cHQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eyBuYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIGlu
dCBhbGdvcml0aG07CisgICAgZ2NyeV9tZF9oZF90IG1kOworfTsKKworQ3J5cHRvRGlnZXN0OjpD
cnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQor
eworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQoreworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobSBhbGdvcml0aG0pCit7CisgICAgaW50IGdjcnlwdEFsZ29yaXRobTsKKworICAgIHN3
aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzE6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAg
Z2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEyMjQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIGdjcnlwdEFsZ29y
aXRobSA9IEdDUllfTURfU0hBMjU2OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZ
X01EX1NIQTM4NDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzUxMjoKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEE1MTI7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdl
c3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxn
b3JpdGhtID0gZ2NyeXB0QWxnb3JpdGhtOworCisgICAgZ2NyeV9tZF9vcGVuKCZkaWdlc3QtPm1f
Y29udGV4dC0+bWQsIGdjcnlwdEFsZ29yaXRobSwgMCk7CisgICAgaWYgKCFkaWdlc3QtPm1fY29u
dGV4dC0+bWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRpZ2VzdDsK
K30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXpl
X3QgbGVuZ3RoKQoreworICAgIGdjcnlfbWRfd3JpdGUobV9jb250ZXh0LT5tZCwgaW5wdXQsIGxl
bmd0aCk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkK
K3sKKyAgICBpbnQgZGlnZXN0TGVuID0gZ2NyeV9tZF9nZXRfYWxnb19kbGVuKG1fY29udGV4dC0+
YWxnb3JpdGhtKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGRpZ2VzdExlbik7CisKKyAg
ICBnY3J5X21kX2ZpbmFsKG1fY29udGV4dC0+bWQpOworICAgIG1lbWNweShyZXN1bHQuZGF0YSgp
LCBnY3J5X21kX3JlYWQobV9jb250ZXh0LT5tZCwgMCksIGRpZ2VzdExlbik7CisgICAgZ2NyeV9t
ZF9jbG9zZShtX2NvbnRleHQtPm1kKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZTo6UEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
Y3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWE3YmEx
OTAxNDRlZjU5MWU1YTgwM2IzY2FlMjMxYmM3NjBhYWIxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcApAQCAt
MCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+CisjaW5jbHVk
ZSA8Z251dGxzL2dudXRscy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwg
eworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgZ251dGxzX2RpZ2VzdF9hbGdv
cml0aG1fdCBhbGdvcml0aG07CisgICAgZ251dGxzX2hhc2hfaGRfdCBoYXNoOworfTsKKworQ3J5
cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdl
c3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQoreworICAg
IGdudXRsc19oYXNoX2RlaW5pdChtX2NvbnRleHQtPmhhc2gsIDApOworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobSBhbGdvcml0aG0pCit7CisgICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBnbnV0
bHNBbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdO
VVRMU19ESUdfU0hBMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05V
VExTX0RJR19TSEEyMjQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdO
VVRMU19ESUdfU0hBMjU2OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBH
TlVUTFNfRElHX1NIQTM4NDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0g
R05VVExTX0RJR19TSEE1MTI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Cisg
ICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdudXRsc0FsZ29yaXRobTsKKworICAg
IGludCByZXQgPSBnbnV0bHNfaGFzaF9pbml0KCZkaWdlc3QtPm1fY29udGV4dC0+aGFzaCwgZ251
dGxzQWxnb3JpdGhtKTsKKyAgICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRpZ2VzdDsKK30KKwordm9pZCBDcnlwdG9E
aWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAg
IGdudXRsc19oYXNoKG1fY29udGV4dC0+aGFzaCwgaW5wdXQsIGxlbmd0aCk7Cit9CisKK1ZlY3Rv
cjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzdWx0OworICAgIGludCBkaWdlc3RMZW4gPSBnbnV0bHNfaGFzaF9nZXRfbGVuKG1f
Y29udGV4dC0+YWxnb3JpdGhtKTsKKyAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbik7CisKKyAg
ICBnbnV0bHNfaGFzaF9vdXRwdXQobV9jb250ZXh0LT5oYXNoLCByZXN1bHQuZGF0YSgpKTsKKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6UEFMCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jZTcxMzQ5MzBhZjlhMGUzN2U5MWNmZjZhNDBmNDIyYTUzMjgxYWExCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0
V2luLmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNp
bmNsdWRlIDx3aW5jcnlwdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwg
eworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG0gYWxnb3JpdGhtOworICAgIEhDUllQVFBST1YgaENvbnRleHQgeyAwIH07CisgICAgSENS
WVBUSEFTSCBoSGFzaCB7IDAgfTsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkK
KyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRv
RGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBpZiAoSENSWVBUSEFTSCBoSGFzaCA9IG1f
Y29udGV4dC0+aEhhc2gpCisgICAgICAgIENyeXB0RGVzdHJveUhhc2goaEhhc2gpOworICAgIGlm
IChIQ1JZUFRQUk9WIGhDb250ZXh0ID0gbV9jb250ZXh0LT5oQ29udGV4dCkKKyAgICAgICAgQ3J5
cHRSZWxlYXNlQ29udGV4dChoQ29udGV4dCwgMCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKEFsZ29yaXRobSBhbGdvcml0aG0pCit7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3Qp
OworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBhbGdvcml0aG07CisgICAgaWYg
KCFDcnlwdEFjcXVpcmVDb250ZXh0KCZkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIG51bGxw
dHIsIG51bGxwdHIgLyogdXNlIGRlZmF1bHQgcHJvdmlkZXIgKi8sIFBST1ZfUlNBX0FFUywgQ1JZ
UFRfVkVSSUZZQ09OVEVYVCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJvb2wgc3Vj
Y2VlZGVkID0gZmFsc2U7CisgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENy
ZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQTEsIDAsIDAsICZk
aWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogeworICAgICAgICBzdWNjZWVkZWQg
PSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8y
NTYsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAg
ICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0
LCBDQUxHX1NIQV8zODQsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
MjogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRl
eHQtPmhDb250ZXh0LCBDQUxHX1NIQV81MTIsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhh
c2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorICAgIGlmIChzdWNjZWVkZWQpCisg
ICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgQ3J5
cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sK
KyAgICBpZiAoIWlucHV0IHx8ICFsZW5ndGgpCisgICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNF
X0FTU0VSVChDcnlwdEhhc2hEYXRhKG1fY29udGV4dC0+aEhhc2gsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgQllURSo+KGlucHV0KSwgbGVuZ3RoLCAwKSk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBD
cnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0
OworICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlcjsKKyAgICBEV09SRCBkaWdlc3RMZW5ndGhC
dWZmZXJTaXplID0gc2l6ZW9mKGRpZ2VzdExlbmd0aEJ1ZmZlcik7CisKKyAgICBSRUxFQVNFX0FT
U0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIU0laRSwgcmVp
bnRlcnByZXRfY2FzdDxCWVRFKj4oJmRpZ2VzdExlbmd0aEJ1ZmZlciksICZkaWdlc3RMZW5ndGhC
dWZmZXJTaXplLCAwKSk7CisgICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RMZW5ndGhCdWZmZXIpOwor
CisgICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5oSGFzaCwg
SFBfSEFTSFZBTCwgcmVzdWx0LmRhdGEoKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlciwgMCkpOworICAg
IFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5zaXplKCkgPT0gZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBmM2FlODliMDBlM2QzNGJkOTQ1OGM1OGZmYjQ0YThl
YTI3OTZiM2RkLi4xZjBlMTAzNWFkNGFkMmUxZTNmMGIxNzI1YTJhY2VjZWUzYzgwYzk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNjksOCArNjksNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2F1ZGlvL2VmbC9BdWRpb0J1c0VmbC5jcHAKIAot
ICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAotCiAgICAg
cGxhdGZvcm0vZWZsL0N1cnNvckVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwu
Y3BwCiAgICAgcGxhdGZvcm0vZWZsL0RyYWdJbWFnZUVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsu
Y21ha2UKaW5kZXggNjI0MjE2MjljNWVkNTA3YTc3MzRhM2U2ZGZjZDM0YTcyODgxZWJkZi4uYjFj
NmU2YjhjZTEzMzdlMzhjMjg0NjMxNTRiNWZhZTE3MGNkMDRmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1H
VEsuY21ha2UKQEAgLTY4LDggKzY4LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAK
ICAgICBwbGF0Zm9ybS9hdWRpby9nbGliL0F1ZGlvQnVzR0xpYi5jcHAKIAotICAgIHBsYXRmb3Jt
L2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZ2Ft
ZXBhZC9nbGliL0dhbWVwYWRzR2xpYi5jcHAKIAogICAgIHBsYXRmb3JtL2dlb2NsdWUvR2VvbG9j
YXRpb25Qcm92aWRlckdlb2NsdWUxLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCBi
ODEyYjljMWFlN2ZkODMxMWEwZDBlNjNlZDgzM2U5MDE3YWRkZmEyLi5jOTQzN2U3M2Q3MGIyZWU4
ZmNhZDIzNDBkYjcyY2IzNGRmNTRhOWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAt
MzMyLDggKzMzMiw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3Jt
L2NvY29hL1RoZW1lQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9XZWJDb3JlTlNFcnJvckV4
dHJhcy5tbQogCi0gICAgcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RD
b21tb25DcnlwdG8uY3BwCi0KICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNw
cAogICAgIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA4ZDdmNTA4YTEyMjk1NzE3OTA3ZGVmNDE0ZjJmMjY0
ZGYxMGMxOWFkLi5hNGE5OTA5YjEyMTM0M2NlZWJjNjliZDAxYTgzNWMxOGYxODkwMWY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtNzMsOCArNzMsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAog
Ci0gICAgcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCi0KICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCiAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU2NyaXB0cy9FbmZvcmNlUEFMTGF5ZXJpbmcucHkgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRz
L0VuZm9yY2VQQUxMYXllcmluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODk2ZmZmNDUyMDM4Yjc1MzU0ZTgw
OGNiZGVlZWNmZWRiYTZjYTVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvU2Ny
aXB0cy9FbmZvcmNlUEFMTGF5ZXJpbmcucHkKQEAgLTAsMCArMSw0OSBAQAorIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQg
c3lzCitpbXBvcnQgb3MKKworYXJjaGl2ZUZpbGUgPSBzeXMuYXJndlsxXQorc291cmNlRGlyZWN0
b3J5ID0gc3lzLmFyZ3ZbMl0KKworc3ltYm9sTmFtZXNwYWNlQ29tbWFuZCA9ICJubSAtZ2ogIiAr
IGFyY2hpdmVGaWxlICsgIiB8IGMrK2ZpbHQgfCBncmVwIFwiXldlYkNvcmU6OlwiIHwgZ3JlcCAt
diBcIl5XZWJDb3JlOjpQQUw6OlwiIgorCitydiA9IG9zLnN5c3RlbShzeW1ib2xOYW1lc3BhY2VD
b21tYW5kICsgIiA+IC9kZXYvbnVsbCIpCisKK2lmIHJ2ID09IDA6CisgICAgcHJpbnQoIlRoZSBm
b2xsb3dpbmcgc3ltYm9scyBhcmUgdXNlZCBvciBkZWNsYXJlZCBpbiBQQUwgYnV0IGFyZSBpbiB0
aGUgV2ViQ29yZSBuYW1lc3BhY2UgKHdoaWNoIGlzIGZvcmJpZGRlbiB0byBwcmVzZXJ2ZSBsYXll
cmluZyk6IikKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICBvcy5zeXN0ZW0oc3ltYm9sTmFt
ZXNwYWNlQ29tbWFuZCkKKyAgICBzeXMuZXhpdCgxKQorCitpbmNsdWRlU2VhcmNoQ29tbWFuZCA9
ICJmaW5kICIgKyBzb3VyY2VEaXJlY3RvcnkgKyAiIFwoIC1uYW1lIFwiKi5jcHBcIiAtb3IgLW5h
bWUgXCIqLmhcIiAtb3IgLW5hbWUgXCIqLm1cIiAtb3IgLW5hbWUgXCIqLm1tXCIgXCkgLWV4ZWMg
Z3JlcCAtcUUgXCJeIyhpbmNsdWRlfGltcG9ydCkgLldlYkNvcmUvXCIge30gXDsgLXByaW50Igor
CitydiA9IG9zLnN5c3RlbSgiZXhpdCAkKCIgKyBpbmNsdWRlU2VhcmNoQ29tbWFuZCArICIgfCB3
YyAtbCApIikKKworaWYgcnYgIT0gMDoKKyAgICBwcmludCgiVGhlIGZvbGxvd2luZyBmaWxlcyBp
biBQQUwgaW5jbHVkZSBoZWFkZXJzIGZyb20gV2ViQ29yZSAod2hpY2ggaXMgZm9yYmlkZGVuIHRv
IHByZXNlcnZlIGxheWVyaW5nKToiKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgIG9zLnN5
c3RlbShpbmNsdWRlU2VhcmNoQ29tbWFuZCkKKyAgICBzeXMuZXhpdCgxKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJiOTNhYjNk
YTM4NjM1ZWY5Y2VhMjI2NWFmZDQ1OGMwMjE3NTA5MTcuLmVlNzcxM2UzNWJjNzg2OTg4OTkxMjAy
YzhjNmU4ODFlMjdhOGM3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU2MjEsNiArNTYyMSwxMCBAQAogCQlDMjgwODMzRjFD
NkRDMjZGMDAxNDUxQjYgLyogSlNGb250RmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MDgzM0UxQzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZh
Y2UuaCAqLzsgfTsKIAkJQzI4MDgzNDAxQzZEQzI3NTAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MDgzM0Qx
QzZEQzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuY3BwICovOyB9OwogCQlDMjgwODM0MjFDNkRD
OTZBMDAxNDUxQjYgLyogSlNGb250RmFjZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjgwODM0MTFDNkRDOTZBMDAxNDUxQjYgLyogSlNG
b250RmFjZUN1c3RvbS5jcHAgKi87IH07CisJCUMyOUU3QzYyMUUyNEJFQzQwMEZGRUMzRCAvKiBD
cnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyOUU3QzYxMUUyNEJFQzQwMEZGRUMzRCAvKiBDcnlwdG9EaWdlc3QuaCAqLzsgfTsKKwkJ
QzI5RTdDNjUxRTI0QkVFNjAwRkZFQzNEIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjlFN0M2NDFF
MjRCRUU2MDBGRkVDM0QgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLzsgfTsKKwkJ
QzI5RTdDNkExRTI0QzM5MDAwRkZFQzNEIC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5RTdDNjkxRTI0QzM5MDAwRkZFQzNEIC8qIGNv
bmZpZy5oICovOyB9OworCQlDMjlFN0M2QzFFMjRDQzJCMDBGRkVDM0QgLyogbGliUEFMLmEgaW4g
RnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjlFN0M1QTFF
MjRCQzFEMDBGRkVDM0QgLyogbGliUEFMLmEgKi87IH07CiAJCUMyRTFGNDNGMUQ2MjU0RTEwMDk0
NjI1QyAvKiBCcmVha0xpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0VBNDgxNjA5N0Q5MzAyMDA5NEM5RTQgLyogQnJlYWtMaW5lcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMzMzBBMjIzMTNF
QzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNob29zZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzMzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xvckNo
b29zZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDMzNFRTVDNDE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMz
RUU1QzIxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNw
cCAqLzsgfTsKQEAgLTYyNjIsOCArNjI2Niw2IEBACiAJCUUxRjgwQjg4MTgzMTcyNTIwMDc4ODVD
MyAvKiBDcnlwdG9LZXlQYWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUY4MEI4NjE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxRjgwQjhE
MTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGODBCOEIxODMxNzJCNTAwNzg4NUMzIC8q
IEpTQ3J5cHRvS2V5UGFpci5jcHAgKi87IH07CiAJCUUxRjgwQjhFMTgzMTcyQjUwMDc4ODVDMyAv
KiBKU0NyeXB0b0tleVBhaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxRjgwQjhDMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuaCAq
LzsgfTsKLQkJRTFGRTEzNjQxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNy
eXB0by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MUZFMTM2MjE4MzQzNTExMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAq
LzsgfTsKLQkJRTFGRTEzNjcxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjYxODM0M0Ex
MDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oICovOyB9OwogCQlFMUZFMTM2QTE4M0ZFMUFCMDA4
OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjgxODNGRTFBQjAwODkyRjEzIC8qIENy
eXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcCAqLzsgfTsKIAkJRTFGRTEzNkIxODNGRTFBQjAwODky
RjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVAuaCAqLzsgfTsKIAkJRTFGRTEzNzAxODNGRUNGMDAwODkyRjEzIC8q
IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzZFMTgzRkVDRjAwMDg5MkYxMyAvKiBDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgKi87IH07CkBAIC02OTA1LDYgKzY5MDcsMTMgQEAKIAkJ
CXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNDE3REE2Q0YxMzczNEUwMjAwN0M1N0ZCOwogCQkJcmVt
b3RlSW5mbyA9IFdlYkNvcmVUZXN0U3VwcG9ydDsKIAkJfTsKKwkJQzI5RTdDNjYxRTI0QkYyNzAw
RkZFQzNEIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IEMyOUU3QzU5MUUyNEJDMUMwMEZGRUMzRDsKKwkJCXJlbW90ZUluZm8g
PSBQQUw7CisJCX07CiAJCUREMDQxRkYwMDlEOUUzMjUwMDEwQUYyQSAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250
YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki87CkBAIC0xMzU0Miw2ICsxMzU1MSwxMiBAQAogCQlDMjgwODMzRDFDNkRDMjJDMDAxNDUxQjYg
LyogSlNGb250RmFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U0ZvbnRGYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI4MDgzM0UxQzZE
QzIyQzAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNGb250RmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjgwODM0
MTFDNkRDOTZBMDAxNDUxQjYgLyogSlNGb250RmFjZUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZvbnRGYWNlQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzI5RTdDNUExRTI0QkMxRDAwRkZFQzNEIC8qIGxpYlBBTC5hICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFy
OyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJQQUwuYTsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJQzI5RTdDNjExRTI0QkVDNDAwRkZFQzNEIC8qIENyeXB0b0Rp
Z2VzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9EaWdlc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5RTdDNjQxRTI0QkVFNjAwRkZFQzNEIC8q
IENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjlFN0M2OTFFMjRDMzkwMDBGRkVDM0QgLyogY29uZmlnLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMjlFN0M2QjFFMjRDN0QxMDBGRkVDM0QgLyogUEFMLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFBBTC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzI5RTdDNkYxRTI1NkQ4MDAwRkZFQzNEIC8qIEVuZm9yY2VQQUxMYXll
cmluZy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9IEVuZm9yY2VQQUxM
YXllcmluZy5weTsgcGF0aCA9IFNjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5OyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMzMwQTIyMTEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JD
aG9vc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbG9yQ2hvb3Nlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMzNFRTVDMjE0RkI0OTYxMDAwMjA5NUEg
LyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMzNFRTVDMzE0RkI0OTYxMDAwMjA5NUEgLyogQmFz
ZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0MjY3LDggKzE0MjgyLDYgQEAKIAkJRTFGODBCODYxODMxNzI1MjAwNzg4
NUMzIC8qIENyeXB0b0tleVBhaXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q3J5cHRvS2V5UGFpci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUY4MEI4QjE4
MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3J5cHRvS2V5UGFpci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxRjgwQjhDMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDcnlwdG9LZXlQYWlyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxRkUxMzYyMTgzNDM1MTEwMDg5MkYxMyAvKiBD
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRTFGRTEzNjYxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9EaWdlc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRTEzNjgxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTFGRTEzNjkxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkUxMzZFMTgzRkVDRjAwMDg5MkYx
MyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDk3OCw2ICsxNDk5MSw3IEBACiAJCQlpc2EgPSBQQlhG
cmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJ
CQlmaWxlcyA9ICgKKwkJCQlDMjlFN0M2QzFFMjRDQzJCMDBGRkVDM0QgLyogbGliUEFMLmEgaW4g
RnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxMjEyQjA0OEEzMDBFRDk4QzYgLyogQWNjZWxlcmF0
ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxMzEyQjA0OEEzMDBFRDk4
QzYgLyogQXVkaW9Ub29sYm94LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTFBQjMz
REE1MTI1NTFFMzIwMDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywK
QEAgLTE0OTkxLDYgKzE1MDA1LDEzIEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCUMyOUU3QzU3MUUyNEJDMUMwMEZGRUMzRCAvKiBG
cmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCUUxQkE2NzBFMTc0
MkJERTAwMEMyMDI1MSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTUwMjEs
NiArMTUwNDIsNyBAQAogCQkJCUUxQkE2NzE2MTc0MkJERTAwMEMyMDI1MSAvKiBsaWJXZWJDb3Jl
VGVzdFNoaW0uZHlsaWIgKi8sCiAJCQkJNDE3REE2RDAxMzczNEUwMjAwN0M1N0ZCIC8qIGxpYldl
YkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLywKIAkJCQk5M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMg
LyogV2ViQ29yZS5mcmFtZXdvcmsgKi8sCisJCQkJQzI5RTdDNUExRTI0QkMxRDAwRkZFQzNEIC8q
IGxpYlBBTC5hICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsKQEAgLTE1NDI0LDYgKzE1NDQ2LDcgQEAKIAkJCQkyRTQzNDYzMTBGNTQ2
QTY4MDBCMEYxQkEgLyogd29ya2VycyAqLywKIAkJCQlFMUYwNDI0MzA5ODM5Mzg5MDA2Njk0RUEg
LyogeG1sICovLAogCQkJCTY1NjU4MEVDMDlEMTJCMjAwMDBFNjFENyAvKiBEZXJpdmVkIFNvdXJj
ZXMgKi8sCisJCQkJQzI5RTdDNUYxRTI0QkNBMjAwRkZFQzNEIC8qIFBBTCAqLywKIAkJCQkwODlD
MTY2NUZFODQxMTU4QzAyQUFDMDcgLyogUmVzb3VyY2VzICovLAogCQkJCTM3MTdEN0U0MTdFQ0Mz
NkMwMDNDMjc2RCAvKiBTY3JpcHRzICovLAogCQkJCTA4NjdENjlBRkU4NDAyOEZDMDJBQUMwNyAv
KiBGcmFtZXdvcmtzICovLApAQCAtMTYyMDQsNiArMTYyMjcsNyBAQAogCQkxQ0RENDQ2NjBCQTlD
ODAwMDBGOTAxNDcgLyogQ29uZmlndXJhdGlvbnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCUMyOUU3QzZCMUUyNEM3RDEwMEZGRUMzRCAvKiBQQUwueGNj
b25maWcgKi8sCiAJCQkJMUNERDQ1RTYwQkE5Qzg0NjAwRjkwMTQ3IC8qIEJhc2UueGNjb25maWcg
Ki8sCiAJCQkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZp
ZyAqLywKIAkJCQk0NDkwOThCMTBGOEY4MjUyMDA3NkEzMjcgLyogRmVhdHVyZURlZmluZXMueGNj
b25maWcgKi8sCkBAIC0xNjUxNiw2ICsxNjU0MCw3IEBACiAJCQkJRjQ4Mzg5NzkxRTFERDIzQTAw
NzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5ICovLAogCQkJCTM3MTdEN0U1MTdFQ0MzQTYwMDNDMjc2
RCAvKiBleHRyYWN0LWxvY2FsaXphYmxlLXN0cmluZ3MucGwgKi8sCiAJCQkJMzdENDU2RkIxQTlB
NTBCNjAwMzMzMEExIC8qIExvY2FsaXphYmxlU3RyaW5ncy5wbSAqLywKKwkJCQlDMjlFN0M2RjFF
MjU2RDgwMDBGRkVDM0QgLyogRW5mb3JjZVBBTExheWVyaW5nLnB5ICovLAogCQkJKTsKIAkJCW5h
bWUgPSBTY3JpcHRzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIyNDg4LDcgKzIy
NTEzLDYgQEAKIAkJCQlGRDMxNjA0MDEyQjAyNkEzMDBDMUEzNTkgLyogYXVkaW8gKi8sCiAJCQkJ
MUFFNDJGNjcwQUE0QjhDQjAwQzg2MTJEIC8qIGNmICovLAogCQkJCUE1Qzk3NENFMTE0ODVGREEw
MDY2RjJBQiAvKiBjb2NvYSAqLywKLQkJCQlDRTUwRDhDRTFDODkzMkVEMDA3MkVBNUEgLyogY3J5
cHRvICovLAogCQkJCTUxNUJFMTg3MUQ1NEY1REIwMEREN0M2OCAvKiBnYW1lcGFkICovLAogCQkJ
CUIyQTAxNTkxMEFGNkNENTMwMDZCQ0UwRSAvKiBncmFwaGljcyAqLywKIAkJCQlBNTlFM0MxQjEx
NTgwRjM0MDA3MjkyOEUgLyogaW9zICovLApAQCAtMjI2ODIsNiArMjI3MDYsMzIgQEAKIAkJCXRh
YldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJQzI5RTdDNUYxRTI0QkNBMjAw
RkZFQzNEIC8qIFBBTCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJQzI5RTdDNjkxRTI0QzM5MDAwRkZFQzNEIC8qIGNvbmZpZy5oICovLAorCQkJCUMyOUU3
QzYwMUUyNEJDREYwMEZGRUMzRCAvKiBjcnlwdG8gKi8sCisJCQkpOworCQkJcGF0aCA9IFBBTDsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUMyOUU3QzYwMUUyNEJDREYwMEZG
RUMzRCAvKiBjcnlwdG8gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCUMyOUU3QzYzMUUyNEJFRDQwMEZGRUMzRCAvKiBjb21tb25jcnlwdG8gKi8sCisJCQkJ
QzI5RTdDNjExRTI0QkVDNDAwRkZFQzNEIC8qIENyeXB0b0RpZ2VzdC5oICovLAorCQkJKTsKKwkJ
CXBhdGggPSBjcnlwdG87CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDMjlF
N0M2MzFFMjRCRUQ0MDBGRkVDM0QgLyogY29tbW9uY3J5cHRvICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMjlFN0M2NDFFMjRCRUU2MDBGRkVDM0QgLyog
Q3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLywKKwkJCSk7CisJCQlwYXRoID0gY29tbW9u
Y3J5cHRvOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQzk2RjVFQkYxQjU4
NzIyNjAwOTFFQTlEIC8qIG1lZGlhc2Vzc2lvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCkBAIC0yMjkyOCwyMyArMjI5NzgsNiBAQAogCQkJcGF0aCA9IGlvczsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCUNFNTBEOENFMUM4OTMyRUQwMDcy
RUE1QSAvKiBjcnlwdG8gKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0g
KAotCQkJCUNFNTBEOENGMUM4OTMyRkIwMDcyRUE1QSAvKiBjb21tb25jcnlwdG8gKi8sCi0JCQkJ
RTFGRTEzNjYxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oICovLAotCQkJKTsKLQkJ
CXBhdGggPSBjcnlwdG87Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQlDRTUw
RDhDRjFDODkzMkZCMDA3MkVBNUEgLyogY29tbW9uY3J5cHRvICovID0gewotCQkJaXNhID0gUEJY
R3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlFMUZFMTM2MjE4MzQzNTExMDA4OTJGMTMgLyog
Q3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gY29tbW9u
Y3J5cHRvOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJREY5QUZENkYxM0ZD
MzFCMDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMjUyMzQsNyArMjUyNjcsNiBAQAogCQkJCUUxOUFDM0YxMTgyNERDNzkwMDM0
OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTYuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOUFD
M0YzMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEzODQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxOUFDM0Y1MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1
MTIuaCBpbiBIZWFkZXJzICovLAotCQkJCUUxRkUxMzY3MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlw
dG9EaWdlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNTdBOEU1MTgxNzNBM0EwMDlGODIxRCAv
KiBDcnlwdG9LZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODRFMTgyNDI4OUQwMEQ4NENE
OSAvKiBDcnlwdG9LZXlBRVMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODVFMTgyQzJERjYw
MEQ4NENEOSAvKiBDcnlwdG9LZXlEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NDM0LDYgKzI4
NDY2LDE1IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CisJCUMyOUU3QzU4MUUyNEJDMUMwMEZGRUMzRCAvKiBIZWFkZXJzICovID0gewor
CQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQzI5RTdDNkExRTI0QzM5MDAwRkZFQzNEIC8qIGNv
bmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzI5RTdDNjIxRTI0QkVDNDAwRkZFQzNEIC8qIENy
eXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCUUxQkE2NkY2MTc0MkJERTAwMEMyMDI1MSAv
KiBIZWFkZXJzICovID0gewogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMjg0ODMsNiArMjg1MjQsNyBAQAogCQkJYnVp
bGRSdWxlcyA9ICgKIAkJCSk7CiAJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJQzI5RTdDNjcxRTI0
QkYyNzAwRkZFQzNEIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJREQwNDFGRjEwOUQ5
RTMyNTAwMTBBRjJBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwogCQkJbmFtZSA9
IFdlYkNvcmU7CkBAIC0yODQ5MSw2ICsyODUzMywyNCBAQAogCQkJcHJvZHVjdFJlZmVyZW5jZSA9
IDkzRjE5QjFBMDgyNDVFNUEwMDFFOUFCQyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsKIAkJCXBy
b2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuZnJhbWV3b3JrIjsKIAkJfTsKKwkJ
QzI5RTdDNTkxRTI0QkMxQzAwRkZFQzNEIC8qIFBBTCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2
ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBDMjlFN0M1RTFFMjRCQzFEMDBG
RkVDM0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBB
TCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQlDMjlFN0M1NjFFMjRCQzFDMDBGRkVDM0Qg
LyogU291cmNlcyAqLywKKwkJCQlDMjlFN0M1NzFFMjRCQzFDMDBGRkVDM0QgLyogRnJhbWV3b3Jr
cyAqLywKKwkJCQlDMjlFN0M1ODFFMjRCQzFDMDBGRkVDM0QgLyogSGVhZGVycyAqLywKKwkJCQlD
MjlFN0M2RTFFMjU2Q0ZCMDBGRkVDM0QgLyogRW5mb3JjZSBQQUwgTGF5ZXJpbmcgKi8sCisJCQkp
OworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOwor
CQkJbmFtZSA9IFBBTDsKKwkJCXByb2R1Y3ROYW1lID0gUEFMOworCQkJcHJvZHVjdFJlZmVyZW5j
ZSA9IEMyOUU3QzVBMUUyNEJDMUQwMEZGRUMzRCAvKiBsaWJQQUwuYSAqLzsKKwkJCXByb2R1Y3RU
eXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9OwogCQlF
MUJBNjZGMzE3NDJCREUwMDBDMjAyNTEgLyogV2ViQ29yZVRlc3RTaGltICovID0gewogCQkJaXNh
ID0gUEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEUxQkE2NzEy
MTc0MkJERTAwMEMyMDI1MSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAiV2ViQ29yZVRlc3RTaGltIiAqLzsKQEAgLTI4NTE4LDYgKzI4NTc4LDEyIEBACiAJ
CQkJQnVpbGRJbmRlcGVuZGVudFRhcmdldHNJblBhcmFsbGVsID0gWUVTOwogCQkJCUxhc3RTd2lm
dFVwZGF0ZUNoZWNrID0gMDcwMDsKIAkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDcwMDsKKwkJCQlU
YXJnZXRBdHRyaWJ1dGVzID0geworCQkJCQlDMjlFN0M1OTFFMjRCQzFDMDBGRkVDM0QgPSB7CisJ
CQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSA4LjIuMTsKKwkJCQkJCVByb3Zpc2lvbmluZ1N0
eWxlID0gQXV0b21hdGljOworCQkJCQl9OworCQkJCX07CiAJCQl9OwogCQkJYnVpbGRDb25maWd1
cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUiICovOwogCQkJY29tcGF0aWJpbGl0eVZl
cnNpb24gPSAiWGNvZGUgMy4yIjsKQEAgLTI4NTQyLDYgKzI4NjA4LDcgQEAKIAkJCQlERDA0MUZC
RTA5RDlEREJFMDAxMEFGMkEgLyogRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTQxN0RBNkNGMTM3
MzRFMDIwMDdDNTdGQiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi8sCiAJCQkJRTFCQTY2RjMxNzQy
QkRFMDAwQzIwMjUxIC8qIFdlYkNvcmVUZXN0U2hpbSAqLywKKwkJCQlDMjlFN0M1OTFFMjRCQzFD
MDBGRkVDM0QgLyogUEFMICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rp
b24gKi8KQEAgLTI4NjkxLDYgKzI4NzU4LDIwIEBACiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwog
CQkJc2hlbGxTY3JpcHQgPSAiU1JDX0RJUj1cIiRTUkNST09UL01vZHVsZXMvbW9kZXJuLW1lZGlh
LWNvbnRyb2xzXCJcbkRTVF9ESVI9XCIkQlVJTFRfUFJPRFVDVFNfRElSLyRVTkxPQ0FMSVpFRF9S
RVNPVVJDRVNfRk9MREVSX1BBVEgvbW9kZXJuLW1lZGlhLWNvbnRyb2xzXCJcblxubWtkaXIgLXAg
XCIkRFNUX0RJUlwiXG5cbmlmIFsgXCIke1BMQVRGT1JNX05BTUV9XCIgPT0gXCJtYWNvc3hcIiBd
OyB0aGVuXG4gICAgSU1HX09TX1BSRUZJWD1cIm1hY09TXCJcbmZpXG5cbmlmIFsgXCIke1BMQVRG
T1JNX05BTUV9XCIgPT0gXCJpcGhvbmVvc1wiIF0gfHwgWyBcIiR7UExBVEZPUk1fTkFNRX1cIiA9
PSBcImlwaG9uZXNpbXVsYXRvclwiIF07IHRoZW5cbiAgICBJTUdfT1NfUFJFRklYPVwiaU9TXCJc
bmZpXG5cbmlmIFsgLW4gXCIkSU1HX09TX1BSRUZJWFwiIF07IHRoZW5cbiAgICBta2RpciAtcCBc
IiREU1RfRElSL2ltYWdlc1wiXG4gICAgcnN5bmMgLWFxIC0tZXhjbHVkZSBcIi5zdm5cIiAtLWV4
Y2x1ZGUgXCIuRFNfU3RvcmVcIiBcIiRTUkNfRElSL2ltYWdlcy8kSU1HX09TX1BSRUZJWFwiIFwi
JERTVF9ESVIvaW1hZ2VzXCJcbmZpXG5cbmNkIFwiJFNSQ19ESVJcIlxuY2F0IGNvbnRyb2xzLyou
Y3NzID4gXCIkRFNUX0RJUi9tb2Rlcm4tbWVkaWEtY29udHJvbHMuY3NzXCJcbmNhdCBgY2F0IGpz
LWZpbGVzYCA+IFwiJERTVF9ESVIvbW9kZXJuLW1lZGlhLWNvbnRyb2xzLmpzXCIiOwogCQl9Owor
CQlDMjlFN0M2RTFFMjU2Q0ZCMDBGRkVDM0QgLyogRW5mb3JjZSBQQUwgTGF5ZXJpbmcgKi8gPSB7
CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJ
CSk7CisJCQluYW1lID0gIkVuZm9yY2UgUEFMIExheWVyaW5nIjsKKwkJCW91dHB1dFBhdGhzID0g
KAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJ
c2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gInB5dGhvbiAke1NSQ1JPT1R9
L1NjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5ICR7QlVJTFRfUFJPRFVDVFNfRElSfS8ke0ZV
TExfUFJPRFVDVF9OQU1FfSAke1NSQ1JPT1R9L1BBTCI7CisJCX07CiAJCUREMDQxRkJEMDlEOURE
QkUwMDEwQUYyQSAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OwpAQCAtMjkwNzEsNyArMjkxNTIsNiBAQAogCQkJCUUxOUFDM0YwMTgyNERDNzkwMDM0OTQyNiAv
KiBDcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE5QUMzRjIx
ODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMTlBQzNGNDE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxRkUxMzY0MTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1N0E4RTQxODE3
M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTI1Rjg0
RDE4MjQyODlEMDBEODRDRDkgLyogQ3J5cHRvS2V5QUVTLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUxMjVGODYzMTgyQzMwM0EwMEQ4NENEOSAvKiBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTMxODk2LDYgKzMxOTc2LDE0IEBACiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCUMyOUU3QzU2MUUy
NEJDMUMwMEZGRUMzRCAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkJQzI5RTdDNjUxRTI0QkVFNjAwRkZFQzNEIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5j
cHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJfTsKIAkJRTFCQTY3MDIxNzQyQkRFMDAwQzIwMjUxIC8qIFNvdXJjZXMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CkBAIC0zMTkyMiw2ICszMjAxMCwxMSBAQAogCQkJdGFyZ2V0ID0gNDE3
REE2Q0YxMzczNEUwMjAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydCAqLzsKIAkJCXRhcmdl
dFByb3h5ID0gNDE4MTZGODQxMzg1OUM3RDAwNTdBQUE0IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLzsKIAkJfTsKKwkJQzI5RTdDNjcxRTI0QkYyNzAwRkZFQzNEIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0g
QzI5RTdDNTkxRTI0QkMxQzAwRkZFQzNEIC8qIFBBTCAqLzsKKwkJCXRhcmdldFByb3h5ID0gQzI5
RTdDNjYxRTI0QkYyNzAwRkZFQzNEIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsK
IAkJREQwNDFGRjEwOUQ5RTMyNTAwMTBBRjJBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7
CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0gREQwNDFGQkUwOUQ5
RERCRTAwMTBBRjJBIC8qIERlcml2ZWQgU291cmNlcyAqLzsKQEAgLTMyMDY1LDYgKzMyMTU4LDI3
IEBACiAJCQl9OwogCQkJbmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CisJCUMyOUU3QzVCMUUyNEJD
MUQwMEZGRUMzRCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSBDMjlFN0M2QjFFMjRDN0QxMDBGRkVD
M0QgLyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQlu
YW1lID0gRGVidWc7CisJCX07CisJCUMyOUU3QzVDMUUyNEJDMUQwMEZGRUMzRCAvKiBSZWxlYXNl
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IEMyOUU3QzZCMUUyNEM3RDEwMEZGRUMzRCAvKiBQQUwueGNjb25maWcg
Ki87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9
OworCQlDMjlFN0M1RDFFMjRCQzFEMDBGRkVDM0QgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSBDMjlFN0M2QjFFMjRDN0QxMDBGRkVDM0QgLyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJREQwNDFG
QzIwOUQ5REREQzAwMTBBRjJBIC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDREQ0NUU1MEJBOUM4
NDYwMEY5MDE0NyAvKiBXZWJDb3JlLnhjY29uZmlnICovOwpAQCAtMzIxNTMsNiArMzIyNjcsMTYg
QEAKIAkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKIAkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CiAJCX07CisJCUMyOUU3QzVFMUUyNEJDMUQwMEZG
RUMzRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUEFM
IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25zID0gKAorCQkJCUMyOUU3QzVCMUUyNEJDMUQwMEZGRUMzRCAvKiBEZWJ1ZyAqLywKKwkJ
CQlDMjlFN0M1QzFFMjRCQzFEMDBGRkVDM0QgLyogUmVsZWFzZSAqLywKKwkJCQlDMjlFN0M1RDFF
MjRCQzFEMDBGRkVDM0QgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9k
dWN0aW9uOworCQl9OwogCQlERDA0MUZDMTA5RDlERERDMDAxMEFGMkEgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291cmNlcyIgKi8g
PSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9u
cyA9ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMS5jcHAKaW5kZXggMGM4ZGZkZGQxZTBhN2FkYmFhMThlZjljNTEyYTcy
OGM5NDJhZGUyOS4uMjEwZDk4ZjNkNjBmN2FmYjNlYzk3ZjAyZTJiMzQ4ZTdjOTIyYWQzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMS5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZ
UFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwv
Y3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcg
KzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEExOjpp
ZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVj
dG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0
aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIGF1
dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMSk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1l
c3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0Fs
Z29yaXRobVNIQTE6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRp
Z2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAg
ICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQu
Y3BwCmluZGV4IDZjYTFhZWU1YTZiYjdkODNjYTA1NjQxOWRjYmViZDUxN2I5ZDYxODUuLmJlNDQx
OTU3NDIyOGNiNTEwOTFmZTY1YjQ4Y2JmMzFjMjBmYmY4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNw
cApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNs
dWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRv
RGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6aWRlbnRpZmllcigp
IGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4
X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7CisgICAgYXV0byBkaWdl
c3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yMjQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3Nh
Z2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0
aG1TSEEyMjQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAg
ICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2
LmNwcAppbmRleCA3MzY2MGY1OTlhZjM3Y2E5ZGU5YTIxOWUzZjRmMjM0OGY0NmFjMmIzLi42Zjgx
NmM4OTRhNzllZTdhNmQzYmU3YmY2OTRkNDE4OTA2MGI4NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5j
cHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5j
bHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0
b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmlkZW50aWZpZXIo
KSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KFZlY3Rvcjx1aW50
OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxi
YWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIGF1dG8gZGln
ZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMjU2KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNz
YWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3Jp
dGhtU0hBMjU2OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
Nik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAg
ICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4
NC5jcHAKaW5kZXggYzk3NzUyZDgxYzAwNTQyMzliMGI4OGM2MGFhMzQzZWZhNjVlMTQ3Ny4uZGUx
MTU4NzcwMzhiNTIxMWIwNzA1MWMyNjRiMzBlYTA1MGQ0NTllMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQu
Y3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2lu
Y2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9Dcnlw
dG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjppZGVudGlmaWVy
KCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChWZWN0b3I8dWlu
dDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxs
YmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKKyAgICBhdXRvIGRp
Z2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzM4NCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2Fs
bGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBA
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVz
c2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29y
aXRobVNIQTM4NDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8z
ODQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAg
ICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1
MTIuY3BwCmluZGV4IDMzZTQ4M2RhMTVkMTBjY2RiNzNlZTM4ZjkzYTEzZDZkNzE4NzAyZWYuLjM2
NTg5MzAyODZiOGYwZGQzZmM2MjI3YjhlY2IzZTEwNDYwYmMzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNp
bmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5
cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6aWRlbnRpZmll
cigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVjdG9yPHVp
bnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2Fs
bGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdl
c3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CisgICAgYXV0byBk
aWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV81MTIpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNh
bGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1l
c3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdv
cml0aG1TSEE1MTI6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRp
Z2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
NTEyKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAg
ICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IGY2YWI3YTIxNTU1M2I2Y2JmYjQ3MzAzNTVjZmU1
MzUyYTlkMDIzNTUuLjdmY2Y1ZTIxNjg2NThmOWE3NDExOTY2MWZkMDA0YzhkNzBhZmI4OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NB
X1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC0zMCwyNiArMzAsMjYgQEAKIAog
I2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29y
aXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIK
ICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8v
Q3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIHN0ZDo6b3B0
aW9uYWw8Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKK2lubGluZSBzdGQ6Om9wdGlvbmFs
PFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKIHsKICAgICBzd2l0Y2ggKGhhc2hG
dW5jdGlvbikgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6Ci0g
ICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7CisgICAgICAgIHJl
dHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsKICAgICBjYXNlIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yMjQ7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVy
OjpTSEFfMjU2OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTY7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKLSAgICAgICAg
cmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OworICAgICAgICByZXR1cm4g
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV81MTI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8
dWludDhfdD4+IHNpZ25SU0FTU0FfUEtDUzFfdjFfNShDcnlwdG9BbGdvcml0aG1JZGVudGlmCiAg
ICAgYXV0byBjcnlwdG9EaWdlc3RBbGdvcml0aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdv
cml0aG0oaGFzaCk7CiAgICAgaWYgKCFjcnlwdG9EaWdlc3RBbGdvcml0aG0pCiAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotICAgIGF1dG8gZGlnZXN0ID0gQ3J5
cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CisgICAgYXV0byBkaWdl
c3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOwog
ICAgIGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJy
b3IgfTsKICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGgpOwpAQCAtOTMsNyAr
OTMsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gdmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUo
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLAogICAgIGF1dG8gY3J5cHRvRGlnZXN0QWxn
b3JpdGhtID0gV2ViQ29yZTo6Y3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2gpOwogICAgIGlmICgh
Y3J5cHRvRGlnZXN0QWxnb3JpdGhtKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IgfTsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlw
dG9EaWdlc3RBbGdvcml0aG0pOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6
OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKICAgICBpZiAoIWRpZ2VzdCkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAgICAgZGlnZXN0LT5hZGRC
eXRlcyhkYXRhLCBkYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGRmOTYxZTAxOGFiN2ZhMDNjZGE1OTRiOTI0MThmNTk0
ZWY5NDhiOGIuLjIyMjYyMjI4OTk0YjVhODdkODk4Y2YxOGI0YWZiNzQ3YjI1OGQ0NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNDUs
NyArNDUsNiBAQAogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJDb29raWUu
aCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNp
bmNsdWRlICJET01FZGl0b3IuaCIKICNpbmNsdWRlICJET01QYXRjaFN1cHBvcnQuaCIKICNpbmNs
dWRlICJET01XaW5kb3cuaCIKQEAgLTc5LDYgKzc4LDcgQEAKICNpbmNsdWRlICJOb2RlLmgiCiAj
aW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSA8UEFML2Ny
eXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlICJQYXN0ZWJvYXJkLmgiCiAjaW5jbHVkZSAi
UHNldWRvRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCkBAIC0xMzE3LDcgKzEz
MTcsNyBAQCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZI
YXNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgVGV4dEVuY29kaW5nIGRvY3VtZW50RW5j
b2RpbmcgPSBlbGVtZW50LmRvY3VtZW50KCkudGV4dEVuY29kaW5nKCk7CiAgICAgY29uc3QgVGV4
dEVuY29kaW5nJiBlbmNvZGluZ1RvVXNlID0gZG9jdW1lbnRFbmNvZGluZy5pc1ZhbGlkKCkgPyBk
b2N1bWVudEVuY29kaW5nIDogVVRGOEVuY29kaW5nKCk7CiAgICAgQ1N0cmluZyBjb250ZW50ID0g
ZW5jb2RpbmdUb1VzZS5lbmNvZGUoVGV4dE5vZGVUcmF2ZXJzYWw6OmNvbnRlbnRzQXNTdHJpbmco
ZWxlbWVudCksIEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICBhdXRvIGNyeXB0b0RpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
KTsKKyAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgY3J5cHRvRGlnZXN0LT5h
ZGRCeXRlcyhjb250ZW50LmRhdGEoKSwgY29udGVudC5sZW5ndGgoKSk7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRpZ2VzdCA9IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKICAgICByZXR1cm4g
bWFrZVN0cmluZygic2hhMjU2LSIsIGJhc2U2NEVuY29kZShkaWdlc3QuZGF0YSgpLCBkaWdlc3Qu
c2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5
UG9saWN5LmNwcAppbmRleCBmMDU5YjYwMTRjODRiN2ZhNGE3MzZmOTU0YTg5MTMxNGFiNzNhNWVk
Li45M2VlZDEzZDhlZDQ0NDEzODg3ZDQxNTg0Yjk2NWViMDFjZTUzMDhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTMzLDcg
KzMzLDYgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmgiCiAjaW5jbHVk
ZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlTGlzdC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1
ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50TG9hZGVyLmgiCkBAIC00NSw2ICs0NCw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUg
IkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGln
ZXN0Lmg+CiAjaW5jbHVkZSAiUGFyc2luZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIlBpbmdMb2Fk
ZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKQEAgLTMwMSwxOCArMzAxLDE4IEBA
IGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxQb2xpY2llc0FsbG93KFZpb2xhdGVkRGly
ZWN0aXZlQ2FsbGJhY2smJiBjYWxsYmFjCiAgICAgcmV0dXJuIGlzQWxsb3dlZDsKIH0KIAotc3Rh
dGljIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRl
bnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0gYWxnb3JpdGhtKQorc3RhdGljIFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oQ29udGVudFNlY3Vy
aXR5UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0aG0pCiB7CiAgICAgc3dpdGNoIChhbGdvcml0
aG0pIHsKICAgICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8y
NTY6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKKyAg
ICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CiAgICAg
Y2FzZSBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAg
ICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVy
biBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ29udGVu
dFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAgICAgICByZXR1cm4gUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAg
IHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+CkBAIC0zMzMsNyArMzMzLDcgQEAgQ29udGVudFNlY3Vy
aXR5UG9saWN5OjpIYXNoSW5FbmZvcmNlZEFuZFJlcG9ydE9ubHlQb2xpY2llc1BhaXIgQ29udGVu
dFNlY3VyaXR5UG8KICAgICBib29sIGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyA9IGZhbHNl
OwogICAgIGJvb2wgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMgPSBmYWxzZTsKICAgICBm
b3IgKGF1dG8gYWxnb3JpdGhtIDogYWxnb3JpdGhtcykgewotICAgICAgICBhdXRvIGNyeXB0b0Rp
Z2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29y
aXRobSkpOworICAgICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0Ojpj
cmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7CiAgICAgICAgIGNyeXB0
b0RpZ2VzdC0+YWRkQnl0ZXMoY29udGVudENTdHJpbmcuZGF0YSgpLCBjb250ZW50Q1N0cmluZy5s
ZW5ndGgoKSk7CiAgICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2ggaGFzaCA9IHsgYWxn
b3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKICAgICAgICAgaWYgKCFmb3Vu
ZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgYWxsUG9saWNpZXNXaXRoRGlzcG9zaXRpb25BbGxv
dyhDb250ZW50U2VjdXJpdHlQb2xpY3k6OkRpc3Bvc2l0aW9uOjpFbmZvcmNlLCBzdGQ6OmZvcndh
cmQ8UHJlZGljYXRlPihwcmVkaWNhdGUpLCBoYXNoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzFmMDc1YWEzN2NiMzQ2MjA5ODQ3YTU5OWUxZjU0Mjg0ZjlmMzgxOS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
cnlwdG8vQ3J5cHRvRGlnZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDcnlwdG9EaWdlc3RfaAotI2RlZmluZSBDcnlwdG9EaWdl
c3RfaAotCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0
OwotCi1jbGFzcyBDcnlwdG9EaWdlc3QgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0
b0RpZ2VzdCk7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBBbGdvcml0aG0gewotICAgICAgICBT
SEFfMSwKLSAgICAgICAgU0hBXzIyNCwKLSAgICAgICAgU0hBXzI1NiwKLSAgICAgICAgU0hBXzM4
NCwKLSAgICAgICAgU0hBXzUxMiwKLSAgICB9OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvRGlnZXN0PiBjcmVhdGUoQWxnb3JpdGhtKTsKLSAgICB+Q3J5cHRvRGlnZXN0KCk7Ci0K
LSAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKLSAg
ICBWZWN0b3I8dWludDhfdD4gY29tcHV0ZUhhc2goKTsKLQotcHJpdmF0ZToKLSAgICBDcnlwdG9E
aWdlc3QoKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBtX2Nv
bnRleHQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDcnlwdG9E
aWdlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1v
bmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2ZmYzU2MDUyMjZiNjRiNDkzNzNiZWE2ODVl
OTIzZjAxOTliYjRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGln
ZXN0Q29tbW9uQ3J5cHRvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgot
Ci0jaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKLSAgICBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobSBhbGdvcml0aG07Ci0gICAgdm9pZCogY2NDb250ZXh0OwotfTsKLQotaW5saW5l
IENDX1NIQTFfQ1RYKiB0b1NIQTFDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQp
Ci17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzEpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEExX0NUWCo+KGNvbnRl
eHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyMjRDb250ZXh0
KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFs
Z29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5s
aW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjU2Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBj
b250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yNTYpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEyNTZf
Q1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NI
QTM4NENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQo
Y29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4
dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEE1MTJDb250ZXh0KENyeXB0b0RpZ2Vz
dENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotCi1DcnlwdG9EaWdlc3Q6
OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQp
Ci17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci0gICAgc3dpdGNoICht
X2NvbnRleHQtPmFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8xOgotICAgICAgICBkZWxldGUgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIy
NDoKLSAgICAgICAgZGVsZXRlIHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoK
LSAgICAgICAgZGVsZXRlIHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAg
ICAgICAgZGVsZXRlIHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAg
ICAgZGVsZXRlIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotfQotCi0KLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0g
ICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRobTsKLQotICAgIHN3aXRj
aCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6
IHsKLSAgICAgICAgQ0NfU0hBMV9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMV9DVFg7Ci0gICAg
ICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19T
SEExX0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6IHsKLSAgICAgICAgQ0NfU0hBMjU2
X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29u
dGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBMjI0X0luaXQoY29udGV4
dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKLSAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9
IG5ldyBDQ19TSEEyNTZfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0
ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBMjU2X0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJl
dHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8zODQ6IHsKLSAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1MTJf
Q1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAg
ICAgICAgQ0NfU0hBMzg0X0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0g
ICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKLSAgICAg
ICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOwotICAgICAgICBk
aWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBNTEy
X0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIH0KLX0K
LQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3Qg
bGVuZ3RoKQotewotICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKLSAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKLSAgICAgICAgQ0NfU0hBMV9VcGRhdGUo
dG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAg
ICAgIENDX1NIQTIyNF9VcGRhdGUodG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlu
cHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgQ0NfU0hBMjU2X1VwZGF0ZSh0b1NIQTI1NkNvbnRl
eHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICBDQ19TSEEz
ODRfVXBkYXRlKHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3Ro
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV81MTI6Ci0gICAgICAgIENDX1NIQTUxMl9VcGRhdGUodG9TSEE1MTJDb250ZXh0KG1fY29udGV4
dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1W
ZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgVmVjdG9y
PHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7Ci0g
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Ci0gICAgICAgIHJlc3VsdC5y
ZXNpemUoQ0NfU0hBMV9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBMV9GaW5hbChyZXN1
bHQuZGF0YSgpLCB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAgICBy
ZXN1bHQucmVzaXplKENDX1NIQTIyNF9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBMjI0
X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
NjoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEyNTZfRElHRVNUX0xFTkdUSCk7Ci0gICAg
ICAgIENDX1NIQTI1Nl9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTI1NkNvbnRleHQobV9jb250
ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8zODQ6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMzg0X0RJR0VTVF9M
RU5HVEgpOwotICAgICAgICBDQ19TSEEzODRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEzODRD
b250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NI
QTUxMl9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBNTEyX0ZpbmFsKHJlc3VsdC5kYXRh
KCksIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGln
ZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5
cHRvRGlnZXN0R0NyeXB0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEzYzhi
ZjI0M2RjMDcyYWJiYTg0NjE4OTczM2EwZjUzZmQ2YzA0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgU29mdEF0SG9tZQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNsdWRlIDxnY3J5cHQuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAgaW50IGFsZ29y
aXRobTsKLSAgICBnY3J5X21kX2hkX3QgbWQ7Ci19OwotCi1DcnlwdG9EaWdlc3Q6OkNyeXB0b0Rp
Z2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCi17Ci19Ci0K
LUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
IGFsZ29yaXRobSkKLXsKLSAgICBpbnQgZ2NyeXB0QWxnb3JpdGhtOwotCi0gICAgc3dpdGNoIChh
bGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKLSAg
ICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEExOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAgICBnY3J5cHRB
bGdvcml0aG0gPSBHQ1JZX01EX1NIQTIyNDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0g
R0NSWV9NRF9TSEEyNTY7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hB
Mzg0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfNTEyOgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTUxMjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGln
ZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0g
PSBnY3J5cHRBbGdvcml0aG07Ci0KLSAgICBnY3J5X21kX29wZW4oJmRpZ2VzdC0+bV9jb250ZXh0
LT5tZCwgZ2NyeXB0QWxnb3JpdGhtLCAwKTsKLSAgICBpZiAoIWRpZ2VzdC0+bV9jb250ZXh0LT5t
ZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZGlnZXN0OwotfQotCi12
b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5n
dGgpCi17Ci0gICAgZ2NyeV9tZF93cml0ZShtX2NvbnRleHQtPm1kLCBpbnB1dCwgbGVuZ3RoKTsK
LX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAg
IGludCBkaWdlc3RMZW4gPSBnY3J5X21kX2dldF9hbGdvX2RsZW4obV9jb250ZXh0LT5hbGdvcml0
aG0pOwotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoZGlnZXN0TGVuKTsKLQotICAgIGdjcnlf
bWRfZmluYWwobV9jb250ZXh0LT5tZCk7Ci0gICAgbWVtY3B5KHJlc3VsdC5kYXRhKCksIGdjcnlf
bWRfcmVhZChtX2NvbnRleHQtPm1kLCAwKSwgZGlnZXN0TGVuKTsKLSAgICBnY3J5X21kX2Nsb3Nl
KG1fY29udGV4dC0+bWQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2du
dXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5
cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4OWE1ZDgxZjJiNGJlMjczMmNlZTNlNTI2MzM4NmVkNTljYjIxNGRlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDEwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPGdudXRscy9nbnV0bHMuaD4KLSNp
bmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0
IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgYWxn
b3JpdGhtOwotICAgIGdudXRsc19oYXNoX2hkX3QgaGFzaDsKLX07Ci0KLUNyeXB0b0RpZ2VzdDo6
Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkK
LXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLSAgICBnbnV0bHNfaGFz
aF9kZWluaXQobV9jb250ZXh0LT5oYXNoLCAwKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxn
b3JpdGhtKQotewotICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgZ251dGxzQWxnb3JpdGht
OwotCi0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMTogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NI
QTE7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMjI0OiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hB
MjI0OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzI1NjogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NI
QTI1NjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19T
SEEzODQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdf
U0hBNTEyOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQotCi0gICAgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRpZ2VzdC0+
bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnbnV0bHNBbGdvcml0aG07Ci0KLSAgICBpbnQgcmV0ID0g
Z251dGxzX2hhc2hfaW5pdCgmZGlnZXN0LT5tX2NvbnRleHQtPmhhc2gsIGdudXRsc0FsZ29yaXRo
bSk7Ci0gICAgaWYgKHJldCAhPSBHTlVUTFNfRV9TVUNDRVNTKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIHJldHVybiBkaWdlc3Q7Ci19Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRC
eXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBnbnV0bHNfaGFz
aChtX2NvbnRleHQtPmhhc2gsIGlucHV0LCBsZW5ndGgpOwotfQotCi1WZWN0b3I8dWludDhfdD4g
Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3Vs
dDsKLSAgICBpbnQgZGlnZXN0TGVuID0gZ251dGxzX2hhc2hfZ2V0X2xlbihtX2NvbnRleHQtPmFs
Z29yaXRobSk7Ci0gICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RMZW4pOwotCi0gICAgZ251dGxzX2hh
c2hfb3V0cHV0KG1fY29udGV4dC0+aGFzaCwgcmVzdWx0LmRhdGEoKSk7Ci0KLSAgICByZXR1cm4g
cmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2Y2MxOTJjMmIzMDM5NTk0MzBmMjQ5YzczNjM0YjEzOWM3
YThhNDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNsdWRlIDx3aW5jcnlwdC5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKLSAg
ICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07Ci0gICAgSENSWVBUUFJPViBoQ29u
dGV4dCB7IDAgfTsKLSAgICBIQ1JZUFRIQVNIIGhIYXNoIHsgMCB9OwotfTsKLQotQ3J5cHRvRGln
ZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250
ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotICAgIGlmIChI
Q1JZUFRIQVNIIGhIYXNoID0gbV9jb250ZXh0LT5oSGFzaCkKLSAgICAgICAgQ3J5cHREZXN0cm95
SGFzaChoSGFzaCk7Ci0gICAgaWYgKEhDUllQVFBST1YgaENvbnRleHQgPSBtX2NvbnRleHQtPmhD
b250ZXh0KQotICAgICAgICBDcnlwdFJlbGVhc2VDb250ZXh0KGhDb250ZXh0LCAwKTsKLX0KLQot
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQWxnb3Jp
dGhtIGFsZ29yaXRobSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdl
c3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9
IGFsZ29yaXRobTsKLSAgICBpZiAoIUNyeXB0QWNxdWlyZUNvbnRleHQoJmRpZ2VzdC0+bV9jb250
ZXh0LT5oQ29udGV4dCwgbnVsbHB0ciwgbnVsbHB0ciAvKiB1c2UgZGVmYXVsdCBwcm92aWRlciAq
LywgUFJPVl9SU0FfQUVTLCBDUllQVF9WRVJJRllDT05URVhUKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxzZTsKLSAgICBzd2l0Y2ggKGFsZ29yaXRo
bSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7Ci0gICAgICAg
IHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQs
IENBTEdfU0hBMSwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7
Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+
aENvbnRleHQsIENBTEdfU0hBXzI1NiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMzg0OiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3Qt
Pm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzM4NCwgMCwgMCwgJmRpZ2VzdC0+bV9jb250
ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRl
SGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzUxMiwgMCwgMCwgJmRp
Z2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0g
ICAgaWYgKHN1Y2NlZWRlZCkKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICByZXR1cm4gbnVs
bHB0cjsKLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0
LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGlmICghaW5wdXQgfHwgIWxlbmd0aCkKLSAgICAgICAg
cmV0dXJuOwotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0SGFzaERhdGEobV9jb250ZXh0LT5oSGFz
aCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBCWVRFKj4oaW5wdXQpLCBsZW5ndGgsIDApKTsKLX0K
LQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIFZl
Y3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyOwotICAg
IERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlclNpemUgPSBzaXplb2YoZGlnZXN0TGVuZ3RoQnVmZmVy
KTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFzaFBhcmFtKG1fY29udGV4dC0+aEhh
c2gsIEhQX0hBU0hTSVpFLCByZWludGVycHJldF9jYXN0PEJZVEUqPigmZGlnZXN0TGVuZ3RoQnVm
ZmVyKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlclNpemUsIDApKTsKLSAgICByZXN1bHQucmVzaXplKGRp
Z2VzdExlbmd0aEJ1ZmZlcik7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJh
bShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIVkFMLCByZXN1bHQuZGF0YSgpLCAmZGlnZXN0TGVu
Z3RoQnVmZmVyLCAwKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LnNpemUoKSA9PSBkaWdl
c3RMZW5ndGhCdWZmZXIpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggYzM0NTU3ZDk3Y2NlNzBhMTI3MDY4
ZmJiNDBmODY0YTQ0ODY1NGEzYS4uZDRiZDhhZTAzZWU0ZGFjY2NhNmViYmUxN2FiNzc3ZTZlZGNi
YjZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMxLDEwICszMSwxMCBAQAogCiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJDb29raWVKYXJTb3Vw
LmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgog
I2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1
ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUu
aCIKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgpA
QCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWNlcnRpZmljYXRlRGF0YSkK
ICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIGRpZ2VzdCA9IENy
eXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAg
ICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGNl
cnRpZmljYXRlRGF0YS0+ZGF0YSwgY2VydGlmaWNhdGVEYXRhLT5sZW4pOwogCiAgICAgICAgIGF1
dG8gaGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9XZWJLaXRGUy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZQppbmRleCAyOWEw
OTY5MDM4ZmFhNzQ0ZTFhOGM1OGYzNTZhZDA3M2YwMDUyNWJkLi41MTMwZmZjYmNjN2M5Y2U3NTE0
YWY0ZDU1M2JkOGE0ZjA1MDE0NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RlMu
Y21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlCkBAIC0xMCw2ICsxMCw5IEBA
IGVuZGlmICgpCiBpZiAoTk9UIFdFQkNPUkVfRElSKQogICAgIHNldChXRUJDT1JFX0RJUiAiJHtD
TUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViQ29yZSIpCiBlbmRpZiAoKQoraWYgKE5PVCBQQUxf
RElSKQorICAgIHNldChQQUxfRElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJDb3Jl
L1BBTCIpCitlbmRpZiAoKQogaWYgKE5PVCBXRUJLSVRfRElSKQogICAgIHNldChXRUJLSVRfRElS
ICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJLaXQiKQogZW5kaWYgKCkKZGlmZiAtLWdp
dCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggNzlhMTdiYWNhMGRmNTMy
OGU3YjNkMTE5NzJiYjZiN2I0N2UyZTZmYS4uN2FjOWQ4YzBmMWJkOGMyMjMyOWQwMDBmOWM4MDU5
NTU1NjNlNTZlZSAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50
eHQKQEAgLTExNSw2ICsxMTUsNyBAQCBlbHNlICgpCiAgICAgc2V0KFdlYkNvcmVfTElCUkFSWV9U
WVBFIFNUQVRJQykKIGVuZGlmICgpCiAKK3NldChQQUxfTElCUkFSWV9UWVBFIFNUQVRJQykKIHNl
dChXZWJLaXRfTElCUkFSWV9UWVBFIFNIQVJFRCkKIHNldChXZWJLaXQyX0xJQlJBUllfVFlQRSBT
SEFSRUQpCiBzZXQoV2ViQ29yZVRlc3RTdXBwb3J0X0xJQlJBUllfVFlQRSBTVEFUSUMpCmRpZmYg
LS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTRmNjQ3MTYwOGU5NGVhOTRlN2Qy
ZGJmZmFiZDZmNGI4ZTVjZDczZS4uZjJiZjc1ZDVhOWE2NDU1NGFkNTk1OTFiYmIzZmJjOTAyM2Zj
YjNiZiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDE3LTAxLTEwICBEb24gT2xtc3RlYWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4g
YW5kIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogU291cmNlL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9XZWJLaXRGUy5jbWFrZToKKwogMjAxNi0xMi0yMSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5u
dWxlbkB5YW5kZXgucnU+CiAKICAgICAgICAgc2V0IFBZVEhPTlBBVEggaW4gc2VwYXJhdGUgQ09N
TUFORCBkb2Vzbid0IHdvcmsgd2l0aCBhbGwgQ01ha2UgZ2VuZXJhdG9ycwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298521</attachid>
            <date>2017-01-10 16:18:14 -0800</date>
            <delta_ts>2017-01-10 17:23:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358.patch</filename>
            <type>text/plain</type>
            <size>95631</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJlNmIxNDdjZTJkOTMx
NjM3YzA1MDdkZWYzMmZiZjBjMjhhM2Y1OC4uNWQxOTFjN2ZiNWE2YmZjYzcwYjVmNDdkODg1OTAy
N2Y5MzA4ZmVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE3LTAxLTEwICBEb24g
T2xtc3RlYWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4gYW5kIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZv
cm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGVuZm9yY2UgbGF5ZXJpbmcgYW5kIHByb21v
dGUgdGVzdGFiaWxpdHksIFdlYkNvcmUvcGxhdGZvcm0gZmlsZXMKKyAgICAgICAgc2hvdWxkIGJl
IGNvbXBpbGVkIGluIHRoZWlyIG93biB0YXJnZXQuIFRoaXMgbmV3IHRhcmdldCBjYW4gZW5mb3Jj
ZSBsYXllcmluZworICAgICAgICBhbmQgY2FuIGJlIHRlc3RlZCB3aXRoIHVuaXQgdGVzdHMgaW4g
YWRkaXRpb24gdG8gbGF5b3V0IHRlc3RzLgorCisgICAgICAgIFRoZSBuYW1lIG9mIHRoaXMgbmV3
IHRhcmdldCBpcyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIsIG9yICJQQUwuIgorICAg
ICAgICBUaGlzIGNvbXByaXNlcyBvZiBhIG5ldyBkaXJlY3RvcnkgaW4gV2ViQ29yZSB3aGljaCB3
aWxsIGJlIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBmb3IgZmlsZXMgbWlncmF0ZWQgZnJvbSBX
ZWJDb3JlL3BsYXRmb3JtLiBUaGlzIG5ldyBmb2xkZXIsIGFuZCBpdHMgYXNzb2NpYXRlZAorICAg
ICAgICB0YXJnZXQsIHdpbGwgbWFpbnRhaW4gbGF5ZXJpbmcgaW52YXJpYW50cy4gVGhlc2UgaW52
YXJpYW50cyBhcmUgZW5mb3JjZWQgYXQKKyAgICAgICAgYnVpbGQtdGltZSB3aXRoIGEgYnVpbGQg
c3RlcCB3aGljaCBwcm9jZXNzZXMgdGhlIHN5bWJvbHMgd2l0aGluIHRoZSBjb21waWxlZAorICAg
ICAgICBhcmNoaXZlIGZpbGUgYXMgd2VsbCBhcyB0aGUgI2luY2x1ZGUgZGlyZWN0aXZlcyBpbnNp
ZGUgdGhlIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgRmlsZXMgd2lsbCBiZSBtaWdyYXRlZCBpbnRv
IHRoaXMgbmV3IHRhcmdldC9kaXJlY3RvcnkgcGllY2UtYnktcGllY2UsIGFuZCB0aGUKKyAgICAg
ICAgbWlncmF0aW9uIG9mIGEgZmlsZSB3aWxsIGJlIHBlcmZvcm1lZCBhcyBzb29uIGFzIGl0IGNh
biBiZSBtaWdyYXRlZCB3aXRob3V0CisgICAgICAgIHZpb2xhdGluZyBsYXllcmluZy4KKworICAg
ICAgICBXaXRoaW4gV2ViQ29yZSwgZmlsZXMgc2hvdWxkIGluY2x1ZGUgZmlsZXMgaW4gUEFMIHVz
aW5nIHRoZSBjb252ZW50aW9uCisgICAgICAgICNpbmNsdWRlIDxQQUwvZm9vLmg+LiBTeW1ib2xz
IHdpdGhpbiBQQUwgYXJlIHBsYWNlZCB3aXRoaW4gYSBuZXcgbmFtZXNwYWNlLAorICAgICAgICBX
ZWJDb3JlOjpQQUwsIGFuZCB0aGVyZWZvcmUgd2hlbiB1c2VkIGluc2lkZSBXZWJDb3JlIHNob3Vs
ZCBiZSByZWZlcnJlZCB0bworICAgICAgICBhcyBQQUw6OkZvby4KKworICAgICAgICBUaGUgZmly
c3Qgc2V0IG9mIGZpbGVzIHRvIG1vdmUgaW50byB0aGUgbmV3IHBsYXRmb3JtIGlzIHRoZSBjcnlw
dG8vIHN1YmRpcmVjdG9yeQorICAgICAgICBiZWNhdXNlIGl0IGlzIGJvdGggc2ltcGxlIGJ1dCBh
bHNvIGluY2x1ZGVzIHBsYXRmb3JtLWRlcGVuZGVudCBmaWxlcy4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9QQUwueGNjb25maWc6IEFk
ZGVkLiBQQUwtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLgorICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6IE5lZWQgdG8gdXBkYXRlIHRoZSBzZWFyY2ggcGF0
aHMgc28gZmlsZXMgY2FuCisgICAgICAgIGluY2x1ZGUgUEFMIGZpbGVzLgorICAgICAgICAqIFBB
TC9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3JtRWZsLmNtYWtl
OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvUGxhdGZvcm1HVEsuY21ha2U6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9QbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3Jt
V2luLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvY29uZmlnLmg6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmguCisgICAgICAgICogUEFML2NyeXB0by9j
b21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcC4KKyAgICAgICAgKiBQQUwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RH
Q3J5cHQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dj
cnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwLgorICAgICAgICAqIFBBTC9jcnlwdG8vZ251dGxz
L0NyeXB0b0RpZ2VzdEdudVRMUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAuCisgICAgICAgICogUEFM
L2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcC4KKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAg
ICAgKiBTY3JpcHRzL0VuZm9yY2VQQUxMYXllcmluZy5weTogQWRkZWQuIFRoaXMgaXMgdGhlIGxh
eWVyaW5nIGVuZm9yY2VtZW50IG1lY2hhbmlzbS4KKyAgICAgICAgSXQgY2hlY2tzIGJvdGggc3lt
Ym9sIG5hbWVzIGluIHRoZSBjb21waWxlZCAuYSBmaWxlIGFzIHdlbGwgYXMgaW5jbHVkZSBkaXJl
Y3RpdmVzIGluCisgICAgICAgIHRoZSBzb3VyY2UgY29kZS4KKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCB0aGUgbmV3IFBBTCB0YXJnZXQuCisgICAgICAg
ICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6IFVwZGF0ZSB0byB1
c2UgdGhlIFBBTCBzeW1ib2wgbmFtaW5nCisgICAgICAgIGNvbnZlbnRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjpz
aWduUlNBU1NBX1BLQ1MxX3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UlNBU1NBX1BL
Q1MxX3YxXzUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6IERp
dHR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEy
NTZIYXNoKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJblBv
bGljaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNz
aW9uLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIb3N0VExTQ2VydGlmaWNhdGVTZXQ6
OmNvbXB1dGVDZXJ0aWZpY2F0ZUhhc2gpOgorCiAyMDE3LTAxLTEwICBLZWl0aCBSb2xsaW4gIDxr
cm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBNaXNzaW5nIGxvZ2dpbmcgaW4gSWNvbkxvYWRl
cjo6c3RhcnRMb2FkaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvQ01ha2VMaXN0cy50eHQKaW5kZXggMWI4YTJkY2I1MDRmYjU1NmFiYzVmNTgzYjc2YmUzOGQ5
MmYwZmRmMS4uMTVmZGYyMjRhODk2NmJlMTFkY2Y2M2UyZmE4ZjU4N2EwM2U3MjY0NCAxMDA2NDQK
LS0tIGEvU291cmNlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9DTWFrZUxpc3RzLnR4dApA
QCAtNDYsNiArNDYsNyBAQCBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdURiAke0FE
RElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFH
UyhKYXZhU2NyaXB0Q29yZSAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogCiBpZiAoRU5B
QkxFX1dFQkNPUkUpCisgICAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhQQUwgJHtB
RERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVS
X0ZMQUdTKFdlYkNvcmVUZXN0U3VwcG9ydCAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQog
ICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29yZSAke0FERElUSU9OQUxf
Q09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2Vi
Q29yZURlcml2ZWRTb3VyY2VzICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDQ4MTk3YjJkYjI5NTNmNjM1ZGRiYzliYjBhMDU1MzM1YWNhOTI1NmYu
LmRkODA2NmZlNWQ1N2I2ZjJjZjk5OTI4ZjgyYzkyYTBmMmY5NTA0MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0xLDYgKzEsNyBAQAogY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIu
OC4xMikKIGluY2x1ZGUoV2ViS2l0Q29tbW9uKQogc2V0X3Byb3BlcnR5KERJUkVDVE9SWSAuIFBS
T1BFUlRZIEZPTERFUiAiV2ViQ29yZSIpCithZGRfc3ViZGlyZWN0b3J5KFBBTCkKIAogc2V0KFdl
YkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpAQCAt
Mjk1Miw2ICsyOTUzLDcgQEAgc2V0KFdlYkNvcmVfUExVR19JTlNfUkVTT1VSQ0VTCiBzZXQoV2Vi
Q29yZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJSQVJJRVN9CiAgICAgSmF2YVNjcmlwdENvcmUk
e0RFQlVHX1NVRkZJWH0KKyAgICBQQUwKICkKIAogaWYgKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVE
X01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhj
Y29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA5YmEyZWQwNjJkZTk0MWI5NjkwMmNhNDRjZWFhMWMwZTQ3MTc5NzIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcKQEAg
LTAsMCArMSwzNiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoK
Ky8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
Ky8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5j
bHVkZSAiV2ViQ29yZS54Y2NvbmZpZyIKKworSU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhf
JChDT05GSUdVUkFUSU9OKSk7CitJTlNUQUxMX1BBVEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwv
bGliOworCitTS0lQX0lOU1RBTEwgPSAkKFNLSVBfSU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFM
TCkpOworU0tJUF9JTlNUQUxMXyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9OTyA9IFlFUzsKK1NLSVBf
SU5TVEFMTF9ZRVMgPSBOTzsKKworUFJPRFVDVF9OQU1FID0gUEFMOworRVhFQ1VUQUJMRV9QUkVG
SVggPSBsaWI7CitFWFBPUlRFRF9TWU1CT0xTX0ZJTEUgPSA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZwppbmRleCBjNDg4ZjgwNGZmYjAwNjc0YmJl
OThhMWQyODU2YjM2MGRhYzBjOGEzLi41OWYzOGU1MGNiODNlZjRjODk1ZDA1MTA0ODM4YmQ5NTQ3
NmNjMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3Jl
LnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNj
b25maWcKQEAgLTQ2LDcgKzQ2LDcgQEAgT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKE9USEVSX0NG
TEFHUyk7CiAKIFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9ucyAkKFNES1JPT1Qp
L3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9uczsKIAotSEVBREVSX1NFQVJDSF9QQVRI
UyA9IEZvcndhcmRpbmdIZWFkZXJzIGljdSAvdXNyL2luY2x1ZGUvbGlieHNsdCAvdXNyL2luY2x1
ZGUvbGlieG1sMiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUi
ICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJ
T05TX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CitIRUFERVJf
U0VBUkNIX1BBVEhTID0gRm9yd2FyZGluZ0hlYWRlcnMgaWN1ICQoU1JDUk9PVCkgL3Vzci9pbmNs
dWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9p
bmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRI
ID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzOwogSU5TVEFMTF9QQVRI
W3Nkaz1tYWNvc3gqXSA9ICQoV0VCQ09SRV9GUkFNRVdPUktTX0RJUik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01h
a2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg2Mjk5MTkyNTg5OTUyMjEzOTFjYTkwYzY3NmE3ZTFi
ZjJjNjcwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DTWFrZUxpc3Rz
LnR4dApAQCAtMCwwICsxLDM4IEBACitzZXQoUEFMX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAi
JHtQQUxfRElSfSIKKyAgICAiJHtQQUxfRElSfS9jcnlwdG8iCispCisKK3NldChQQUxfU09VUkNF
UworKQorCitzZXQoUEFMX0xJQlJBUklFUworICAgIFdURgorKQorCitXRUJLSVRfSU5DTFVERV9D
T05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKworV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke1BBTF9T
T1VSQ0VTfSkKK1dFQktJVF9GUkFNRVdPUksoUEFMKQorCitpZiAoVU5JWCkKKyAgICBhZGRfY3Vz
dG9tX2NvbW1hbmQoCisgICAgICAgIFRBUkdFVCBQQUwKKyAgICAgICAgUE9TVF9CVUlMRAorICAg
ICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L3NjcmlwdHMv
RW5mb3JjZVBBTExheWVyaW5nLnB5ICQ8VEFSR0VUX0ZJTEU6UEFMPiAke1BBTF9ESVJ9CisgICAg
ICAgIFZFUkJBVElNKQorZW5kaWYgKCkKKworaWYgKE1TVkMpCisgICAgYWRkX2N1c3RvbV9jb21t
YW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBSRV9CVUlMRAorICAgICAgICBDT01N
QU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVF9MSUJSQVJJRVNfRElSfS90b29scy9zY3Jp
cHRzL2F1dG8tdmVyc2lvbi5wbCAke0RFUklWRURfU09VUkNFU19ESVJ9CisgICAgICAgIFZFUkJB
VElNKQorCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAg
ICAgIFBPU1RfQlVJTEQKKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJL
SVRfTElCUkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0cy92ZXJzaW9uLXN0YW1wLnBsICR7REVSSVZF
RF9TT1VSQ0VTX0RJUn0gJDxUQVJHRVRfRklMRTpQQUw+CisgICAgICAgIFZFUkJBVElNKQorZW5k
aWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUVmbC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzVjMTg5
ODRhZTg5YjljZWFhYjI1YjU3ZmRhMDZhMWExNWZjNjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChB
UFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5j
cHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUdUSy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUdUSy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzVjMTg5
ODRhZTg5YjljZWFhYjI1YjU3ZmRhMDZhMWExNWZjNjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChB
UFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5j
cHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybU1hYy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybU1hYy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjk2OGVj
NGQ5OGU0MWY3MzcyOTBmOGY0ZjI4Zjc0ZjZhMmU2MWY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChB
UFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENv
bW1vbkNyeXB0by5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9y
bVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybVdpbi5jbWFrZQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZjY5MTlmNzZmMTA4ZjcyZWM4ODdhMWI3MzUwNzgxNzIyYTI1OGE4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtV2luLmNtYWtlCkBAIC0wLDAgKzEs
MyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vd2luL0NyeXB0b0RpZ2Vz
dFdpbi5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDg4YzgwYWRmNmMxMWY2YzMw
ODIwM2E4ZTcyZWE0ODM2ODZmM2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML2NvbmZpZy5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLwor
CisjaWYgZGVmaW5lZChIQVZFX0NPTkZJR19IKSAmJiBIQVZFX0NPTkZJR19IICYmIGRlZmluZWQo
QlVJTERJTkdfV0lUSF9DTUFLRSkKKyNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgorI2VuZGlmCisK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3Mu
aD4KKworI2lmZGVmIF9fQVBQTEVfXworI2RlZmluZSBIQVZFX0ZVTkNfVVNMRUVQIDEKKyNlbmRp
ZiAvKiBfX0FQUExFX18gKi8KKworI2lmIE9TKFdJTkRPV1MpCisKKyNpZm5kZWYgX1dJTjMyX1dJ
Tk5UCisjZGVmaW5lIF9XSU4zMl9XSU5OVCAweDYwMQorI2VuZGlmCisKKyNpZm5kZWYgV0lOVkVS
CisjZGVmaW5lIFdJTlZFUiAweDA2MDEKKyNlbmRpZgorCisjZW5kaWYgLyogT1MoV0lORE9XUykg
Ki8KKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKy8vIFRoZXNlIHVuZGVmcyBtYXRjaCB1cCB3aXRo
IGRlZmluZXMgaW4gV2ViQ29yZVByZWZpeC5oIGZvciBNYWMgT1MgWC4KKy8vIEhlbHBzIHVzIGNh
dGNoIGlmIGFueW9uZSB1c2VzIG5ldyBvciBkZWxldGUgYnkgYWNjaWRlbnQgaW4gY29kZSBhbmQg
ZG9lc24ndCBpbmNsdWRlICJjb25maWcuaCIuCisjdW5kZWYgbmV3CisjdW5kZWYgZGVsZXRlCisj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworI2luY2x1ZGUgPGNpc282NDY+CisKKyNlbmRp
ZgorCisjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliMjA4NmE1ZWVlZmIxMTNkNWFkMjE5Y2Vm
OGI0MTk3N2Q3NGJmYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsKKworc3Ry
dWN0IENyeXB0b0RpZ2VzdENvbnRleHQ7CisKK2NsYXNzIENyeXB0b0RpZ2VzdCB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvRGlnZXN0KTsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNz
IEFsZ29yaXRobSB7CisgICAgICAgIFNIQV8xLAorICAgICAgICBTSEFfMjI0LAorICAgICAgICBT
SEFfMjU2LAorICAgICAgICBTSEFfMzg0LAorICAgICAgICBTSEFfNTEyLAorICAgIH07CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGNyZWF0ZShBbGdvcml0aG0pOwor
ICAgIH5DcnlwdG9EaWdlc3QoKTsKKworICAgIHZvaWQgYWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5w
dXQsIHNpemVfdCBsZW5ndGgpOworICAgIFZlY3Rvcjx1aW50OF90PiBjb21wdXRlSGFzaCgpOwor
Citwcml2YXRlOgorICAgIENyeXB0b0RpZ2VzdCgpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0RpZ2VzdENvbnRleHQ+IG1fY29udGV4dDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZTo6UEFMCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vY29tbW9u
Y3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Y3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM3ZTc2NmFhOGE1NjFiOTllNGU1N2RhOWUyNjkxMmMzYmU4NWJlZGMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdl
c3RDb21tb25DcnlwdG8uY3BwCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Q29t
bW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFj
ZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG0gYWxnb3JpdGhtOworICAgIHZvaWQqIGNjQ29udGV4dDsKK307CisKK2lubGlu
ZSBDQ19TSEExX0NUWCogdG9TSEExQ29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0
KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8xKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMV9DVFgqPihjb250
ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjI0Q29udGV4
dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5h
bGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lu
bGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTI1NkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCog
Y29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2
X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9T
SEEzODRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJU
KGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRl
eHQpOworfQoraW5saW5lIENDX1NIQTUxMl9DVFgqIHRvU0hBNTEyQ29udGV4dChDcnlwdG9EaWdl
c3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0g
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KKworQ3J5cHRvRGlnZXN0
OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0
KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQoreworICAgIHN3aXRjaCAo
bV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMToKKyAgICAgICAgZGVsZXRlIHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
MjQ6CisgICAgICAgIGRlbGV0ZSB0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6
CisgICAgICAgIGRlbGV0ZSB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Cisg
ICAgICAgIGRlbGV0ZSB0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAg
ICAgIGRlbGV0ZSB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KK30KKworCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9E
aWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwor
ICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBhbGdvcml0aG07CisKKyAgICBzd2l0
Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
OiB7CisgICAgICAgIENDX1NIQTFfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTFfQ1RYOworICAg
ICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0Nf
U0hBMV9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7CisgICAgICAgIENDX1NIQTI1
Nl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMjU2X0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2Nv
bnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTIyNF9Jbml0KGNvbnRl
eHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIENDX1NIQTI1Nl9DVFgqIGNvbnRleHQg
PSBuZXcgQ0NfU0hBMjU2X0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4
dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTI1Nl9Jbml0KGNvbnRleHQpOworICAgICAgICBy
ZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMzg0OiB7CisgICAgICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEy
X0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Cisg
ICAgICAgIENDX1NIQTM4NF9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0Owor
ICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7CisgICAg
ICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEyX0NUWDsKKyAgICAgICAg
ZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTUx
Ml9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90
IGxlbmd0aCkKK3sKKyAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7CisgICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6CisgICAgICAgIENDX1NIQTFfVXBkYXRl
KHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAg
ICAgICBDQ19TSEEyMjRfVXBkYXRlKHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBp
bnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIENDX1NIQTI1Nl9VcGRhdGUodG9TSEEyNTZDb250
ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgQ0NfU0hB
Mzg0X1VwZGF0ZSh0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0
aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfNTEyOgorICAgICAgICBDQ19TSEE1MTJfVXBkYXRlKHRvU0hBNTEyQ29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwor
VmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQoreworICAgIFZlY3Rv
cjx1aW50OF90PiByZXN1bHQ7CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewor
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICByZXN1bHQu
cmVzaXplKENDX1NIQTFfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NIQTFfRmluYWwocmVz
dWx0LmRhdGEoKSwgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAg
cmVzdWx0LnJlc2l6ZShDQ19TSEEyMjRfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NIQTIy
NF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTY6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjU2X0RJR0VTVF9MRU5HVEgpOworICAg
ICAgICBDQ19TSEEyNTZfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyNTZDb250ZXh0KG1fY29u
dGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMzg0OgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTM4NF9ESUdFU1Rf
TEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMzg0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMzg0
Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19T
SEE1MTJfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NIQTUxMl9GaW5hbChyZXN1bHQuZGF0
YSgpLCB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6
OlBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nY3J5cHQvQ3J5cHRv
RGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0RpZ2VzdEdDcnlwdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM3ZmVmNGZmODJjN2RkZGFjNTkwMzhiNjRm
NWViNGU2M2M5ZGFkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE2IFNv
ZnRBdEhvbWUKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0
b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z2NyeXB0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsg
bmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKKyAgICBpbnQg
YWxnb3JpdGhtOworICAgIGdjcnlfbWRfaGRfdCBtZDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5
cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sK
K30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKK30KKworc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG0gYWxnb3JpdGhtKQoreworICAgIGludCBnY3J5cHRBbGdvcml0aG07CisKKyAgICBzd2l0
Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTE7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIGdj
cnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjI0OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAgICBnY3J5cHRBbGdvcml0
aG0gPSBHQ1JZX01EX1NIQTI1NjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9N
RF9TSEEzODQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV81MTI6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBNTEyOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0
PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29y
aXRobSA9IGdjcnlwdEFsZ29yaXRobTsKKworICAgIGdjcnlfbWRfb3BlbigmZGlnZXN0LT5tX2Nv
bnRleHQtPm1kLCBnY3J5cHRBbGdvcml0aG0sIDApOworICAgIGlmICghZGlnZXN0LT5tX2NvbnRl
eHQtPm1kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBkaWdlc3Q7Cit9
CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90
IGxlbmd0aCkKK3sKKyAgICBnY3J5X21kX3dyaXRlKG1fY29udGV4dC0+bWQsIGlucHV0LCBsZW5n
dGgpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7
CisgICAgaW50IGRpZ2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFs
Z29yaXRobSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW4pOworCisgICAg
Z2NyeV9tZF9maW5hbChtX2NvbnRleHQtPm1kKTsKKyAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSwg
Z2NyeV9tZF9yZWFkKG1fY29udGV4dC0+bWQsIDApLCBkaWdlc3RMZW4pOworICAgIGdjcnlfbWRf
Y2xvc2UobV9jb250ZXh0LT5tZCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2Ny
eXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9j
cnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVhN2JhMTkw
MTQ0ZWY1OTFlNWE4MDNiM2NhZTIzMWJjNzYwYWFiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKQEAgLTAs
MCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z251dGxzL2NyeXB0by5oPgorI2luY2x1ZGUg
PGdudXRscy9nbnV0bHMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsK
Kworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIGdudXRsc19kaWdlc3RfYWxnb3Jp
dGhtX3QgYWxnb3JpdGhtOworICAgIGdudXRsc19oYXNoX2hkX3QgaGFzaDsKK307CisKK0NyeXB0
b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0
Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBn
bnV0bHNfaGFzaF9kZWluaXQobV9jb250ZXh0LT5oYXNoLCAwKTsKK30KKworc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG0gYWxnb3JpdGhtKQoreworICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgZ251dGxz
QWxnb3JpdGhtOworCisgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVU
TFNfRElHX1NIQTE7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRM
U19ESUdfU0hBMjI0OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogeworICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVU
TFNfRElHX1NIQTI1NjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05V
VExTX0RJR19TSEEzODQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdO
VVRMU19ESUdfU0hBNTEyOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAg
IGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnbnV0bHNBbGdvcml0aG07CisKKyAgICBp
bnQgcmV0ID0gZ251dGxzX2hhc2hfaW5pdCgmZGlnZXN0LT5tX2NvbnRleHQtPmhhc2gsIGdudXRs
c0FsZ29yaXRobSk7CisgICAgaWYgKHJldCAhPSBHTlVUTFNfRV9TVUNDRVNTKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBkaWdlc3Q7Cit9CisKK3ZvaWQgQ3J5cHRvRGln
ZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBn
bnV0bHNfaGFzaChtX2NvbnRleHQtPmhhc2gsIGlucHV0LCBsZW5ndGgpOworfQorCitWZWN0b3I8
dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3VsdDsKKyAgICBpbnQgZGlnZXN0TGVuID0gZ251dGxzX2hhc2hfZ2V0X2xlbihtX2Nv
bnRleHQtPmFsZ29yaXRobSk7CisgICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RMZW4pOworCisgICAg
Z251dGxzX2hhc2hfb3V0cHV0KG1fY29udGV4dC0+aGFzaCwgcmVzdWx0LmRhdGEoKSk7CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2U3MTM0OTMwYWY5YTBlMzdlOTFjZmY2YTQwZjQyMmE1MzI4MWFhMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdp
bi5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5j
bHVkZSA8d2luY3J5cHQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsK
Kworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtIGFsZ29yaXRobTsKKyAgICBIQ1JZUFRQUk9WIGhDb250ZXh0IHsgMCB9OworICAgIEhDUllQ
VEhBU0ggaEhhc2ggeyAwIH07Cit9OworCitDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCisg
ICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCit7Cit9CisKK0NyeXB0b0Rp
Z2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7CisgICAgaWYgKEhDUllQVEhBU0ggaEhhc2ggPSBtX2Nv
bnRleHQtPmhIYXNoKQorICAgICAgICBDcnlwdERlc3Ryb3lIYXNoKGhIYXNoKTsKKyAgICBpZiAo
SENSWVBUUFJPViBoQ29udGV4dCA9IG1fY29udGV4dC0+aENvbnRleHQpCisgICAgICAgIENyeXB0
UmVsZWFzZUNvbnRleHQoaENvbnRleHQsIDApOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
RGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAg
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsK
KyAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3JpdGhtOworICAgIGlmICgh
Q3J5cHRBY3F1aXJlQ29udGV4dCgmZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBudWxscHRy
LCBudWxscHRyIC8qIHVzZSBkZWZhdWx0IHByb3ZpZGVyICovLCBQUk9WX1JTQV9BRVMsIENSWVBU
X1ZFUklGWUNPTlRFWFQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBib29sIHN1Y2Nl
ZWRlZCA9IGZhbHNlOworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKKyAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVh
dGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEExLCAwLCAwLCAmZGln
ZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKKyAgICAgICAgc3VjY2VlZGVkID0g
Q3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMjU2
LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAgICAgICAg
c3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwg
Q0FMR19TSEFfMzg0LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6
IHsKKyAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0
LT5oQ29udGV4dCwgQ0FMR19TSEFfNTEyLCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKyAgICBpZiAoc3VjY2VlZGVkKQorICAg
ICAgICByZXR1cm4gZGlnZXN0OworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIENyeXB0
b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCit7Cisg
ICAgaWYgKCFpbnB1dCB8fCAhbGVuZ3RoKQorICAgICAgICByZXR1cm47CisgICAgUkVMRUFTRV9B
U1NFUlQoQ3J5cHRIYXNoRGF0YShtX2NvbnRleHQtPmhIYXNoLCByZWludGVycHJldF9jYXN0PGNv
bnN0IEJZVEUqPihpbnB1dCksIGxlbmd0aCwgMCkpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5
cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsK
KyAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXI7CisgICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVm
ZmVyU2l6ZSA9IHNpemVvZihkaWdlc3RMZW5ndGhCdWZmZXIpOworCisgICAgUkVMRUFTRV9BU1NF
UlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5oSGFzaCwgSFBfSEFTSFNJWkUsIHJlaW50
ZXJwcmV0X2Nhc3Q8QllURSo+KCZkaWdlc3RMZW5ndGhCdWZmZXIpLCAmZGlnZXN0TGVuZ3RoQnVm
ZmVyU2l6ZSwgMCkpOworICAgIHJlc3VsdC5yZXNpemUoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKwor
ICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFzaFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQ
X0hBU0hWQUwsIHJlc3VsdC5kYXRhKCksICZkaWdlc3RMZW5ndGhCdWZmZXIsIDApKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQuc2l6ZSgpID09IGRpZ2VzdExlbmd0aEJ1ZmZlcik7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpQQUwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZjNhZTg5YjAwZTNkMzRiZDk0NThjNThmZmI0NGE4ZWEy
Nzk2YjNkZC4uMWYwZTEwMzVhZDRhZDJlMWUzZjBiMTcyNWEyYWNlY2VlM2M4MGM5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTY5LDggKzY5LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9lZmwvQXVkaW9CdXNFZmwuY3BwCiAKLSAg
ICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKLQogICAgIHBs
YXRmb3JtL2VmbC9DdXJzb3JFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNw
cAogICAgIHBsYXRmb3JtL2VmbC9EcmFnSW1hZ2VFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IDYyNDIxNjI5YzVlZDUwN2E3NzM0YTNlNmRmY2QzNGE3Mjg4MWViZGYuLmIxYzZl
NmI4Y2UxMzM3ZTM4YzI4NDYzMTU0YjVmYWUxNzBjZDA0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCkBAIC02OCw4ICs2OCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAg
ICAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1c0dMaWIuY3BwCiAKLSAgICBwbGF0Zm9ybS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKLQogICAgIHBsYXRmb3JtL2dhbWVw
YWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCiAKICAgICBwbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0
aW9uUHJvdmlkZXJHZW9jbHVlMS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggYjgx
MmI5YzFhZTdmZDgzMTFhMGQwZTYzZWQ4MzNlOTAxN2FkZGZhMi4uYzk0MzdlNzNkNzBiMmVlOGZj
YWQyMzQwZGI3MmNiMzRkZjU0YTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMz
Miw4ICszMzIsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9j
b2NvYS9UaGVtZUNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvV2ViQ29yZU5TRXJyb3JFeHRy
YXMubW0KIAotICAgIHBsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAK
ICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UKaW5kZXggOGQ3ZjUwOGExMjI5NTcxNzkwN2RlZjQxNGYyZjI2NGRm
MTBjMTlhZC4uYTRhOTkwOWIxMjEzNDNjZWViYzY5YmQwMWE4MzVjMThmMTg5MDFmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTczLDggKzczLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKIAot
ICAgIHBsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAotCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAogCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5IGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9F
bmZvcmNlUEFMTGF5ZXJpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg5NmZmZjQ1MjAzOGI3NTM1NGU4MDhj
YmRlZWVjZmVkYmE2Y2E1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Njcmlw
dHMvRW5mb3JjZVBBTExheWVyaW5nLnB5CkBAIC0wLDAgKzEsNDkgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5
cworaW1wb3J0IG9zCisKK2FyY2hpdmVGaWxlID0gc3lzLmFyZ3ZbMV0KK3NvdXJjZURpcmVjdG9y
eSA9IHN5cy5hcmd2WzJdCisKK3N5bWJvbE5hbWVzcGFjZUNvbW1hbmQgPSAibm0gLWdqICIgKyBh
cmNoaXZlRmlsZSArICIgfCBjKytmaWx0IHwgZ3JlcCBcIl5XZWJDb3JlOjpcIiB8IGdyZXAgLXYg
XCJeV2ViQ29yZTo6UEFMOjpcIiIKKworcnYgPSBvcy5zeXN0ZW0oc3ltYm9sTmFtZXNwYWNlQ29t
bWFuZCArICIgPiAvZGV2L251bGwiKQorCitpZiBydiA9PSAwOgorICAgIHByaW50KCJUaGUgZm9s
bG93aW5nIHN5bWJvbHMgYXJlIHVzZWQgb3IgZGVjbGFyZWQgaW4gUEFMIGJ1dCBhcmUgaW4gdGhl
IFdlYkNvcmUgbmFtZXNwYWNlICh3aGljaCBpcyBmb3JiaWRkZW4gdG8gcHJlc2VydmUgbGF5ZXJp
bmcpOiIpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgb3Muc3lzdGVtKHN5bWJvbE5hbWVz
cGFjZUNvbW1hbmQpCisgICAgc3lzLmV4aXQoMSkKKworaW5jbHVkZVNlYXJjaENvbW1hbmQgPSAi
ZmluZCAiICsgc291cmNlRGlyZWN0b3J5ICsgIiBcKCAtbmFtZSBcIiouY3BwXCIgLW9yIC1uYW1l
IFwiKi5oXCIgLW9yIC1uYW1lIFwiKi5tXCIgLW9yIC1uYW1lIFwiKi5tbVwiIFwpIC1leGVjIGdy
ZXAgLXFFIFwiXiMoaW5jbHVkZXxpbXBvcnQpIC5XZWJDb3JlL1wiIHt9IFw7IC1wcmludCIKKwor
cnYgPSBvcy5zeXN0ZW0oImV4aXQgJCgiICsgaW5jbHVkZVNlYXJjaENvbW1hbmQgKyAiIHwgd2Mg
LWwgKSIpCisKK2lmIHJ2ICE9IDA6CisgICAgcHJpbnQoIlRoZSBmb2xsb3dpbmcgZmlsZXMgaW4g
UEFMIGluY2x1ZGUgaGVhZGVycyBmcm9tIFdlYkNvcmUgKHdoaWNoIGlzIGZvcmJpZGRlbiB0byBw
cmVzZXJ2ZSBsYXllcmluZyk6IikKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICBvcy5zeXN0
ZW0oaW5jbHVkZVNlYXJjaENvbW1hbmQpCisgICAgc3lzLmV4aXQoMSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYjkzYWIzZGEz
ODYzNWVmOWNlYTIyNjVhZmQ0NThjMDIxNzUwOTE3Li5lZTc3MTNlMzViYzc4Njk4ODk5MTIwMmM4
YzZlODgxZTI3YThjNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NjIxLDYgKzU2MjEsMTAgQEAKIAkJQzI4MDgzM0YxQzZE
QzI2RjAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNl
LmggKi87IH07CiAJCUMyODA4MzQwMUM2REMyNzUwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzNEMUM2
REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmNwcCAqLzsgfTsKIAkJQzI4MDgzNDIxQzZEQzk2
QTAwMTQ1MUI2IC8qIEpTRm9udEZhY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MDgzNDExQzZEQzk2QTAwMTQ1MUI2IC8qIEpTRm9u
dEZhY2VDdXN0b20uY3BwICovOyB9OworCQlDMjlFN0M2MjFFMjRCRUM0MDBGRkVDM0QgLyogQ3J5
cHRvRGlnZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMjlFN0M2MTFFMjRCRUM0MDBGRkVDM0QgLyogQ3J5cHRvRGlnZXN0LmggKi87IH07CisJCUMy
OUU3QzY1MUUyNEJFRTYwMEZGRUMzRCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5RTdDNjQxRTI0
QkVFNjAwRkZFQzNEIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi87IH07CisJCUMy
OUU3QzZBMUUyNEMzOTAwMEZGRUMzRCAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOUU3QzY5MUUyNEMzOTAwMEZGRUMzRCAvKiBjb25m
aWcuaCAqLzsgfTsKKwkJQzI5RTdDNkMxRTI0Q0MyQjAwRkZFQzNEIC8qIGxpYlBBTC5hIGluIEZy
YW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5RTdDNUExRTI0
QkMxRDAwRkZFQzNEIC8qIGxpYlBBTC5hICovOyB9OwogCQlDMkUxRjQzRjFENjI1NEUxMDA5NDYy
NUMgLyogQnJlYWtMaW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNFQTQ4MTYwOTdEOTMwMjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMzMwQTIyMzEzRUMx
OTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMzMwQTIyMTEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9v
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QzMzRUU1QzQxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzM0VF
NUMyMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAg
Ki87IH07CkBAIC02MjYyLDggKzYyNjYsNiBAQAogCQlFMUY4MEI4ODE4MzE3MjUyMDA3ODg1QzMg
LyogQ3J5cHRvS2V5UGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFGODBCODYxODMxNzI1MjAwNzg4NUMzIC8qIENyeXB0b0tleVBhaXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUY4MEI4RDE4
MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjgwQjhCMTgzMTcyQjUwMDc4ODVDMyAvKiBK
U0NyeXB0b0tleVBhaXIuY3BwICovOyB9OwogCQlFMUY4MEI4RTE4MzE3MkI1MDA3ODg1QzMgLyog
SlNDcnlwdG9LZXlQYWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUY4MEI4QzE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmggKi87
IH07Ci0JCUUxRkUxMzY0MTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RDb21tb25Dcnlw
dG8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFG
RTEzNjIxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi87
IH07Ci0JCUUxRkUxMzY3MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzY2MTgzNDNBMTAw
MDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCAqLzsgfTsKIAkJRTFGRTEzNkExODNGRTFBQjAwODky
RjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzY4MTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgKi87IH07CiAJCUUxRkUxMzZCMTgzRkUxQUIwMDg5MkYx
MyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjkxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQLmggKi87IH07CiAJCUUxRkUxMzcwMTgzRkVDRjAwMDg5MkYxMyAvKiBD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2RTE4M0ZFQ0YwMDA4OTJGMTMgLyogQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVBNYWMuY3BwICovOyB9OwpAQCAtNjkwNSw2ICs2OTA3LDEzIEBACiAJCQly
ZW1vdGVHbG9iYWxJRFN0cmluZyA9IDQxN0RBNkNGMTM3MzRFMDIwMDdDNTdGQjsKIAkJCXJlbW90
ZUluZm8gPSBXZWJDb3JlVGVzdFN1cHBvcnQ7CiAJCX07CisJCUMyOUU3QzY2MUUyNEJGMjcwMEZG
RUMzRCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWlu
ZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFD
MDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xv
YmFsSURTdHJpbmcgPSBDMjlFN0M1OTFFMjRCQzFDMDBGRkVDM0Q7CisJCQlyZW1vdGVJbmZvID0g
UEFMOworCQl9OwogCQlERDA0MUZGMDA5RDlFMzI1MDAxMEFGMkEgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFp
bmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICov
OwpAQCAtMTM1NDIsNiArMTM1NTEsMTIgQEAKIAkJQzI4MDgzM0QxQzZEQzIyQzAwMTQ1MUI2IC8q
IEpTRm9udEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNG
b250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODA4MzNFMUM2REMy
MkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRm9udEZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI4MDgzNDEx
QzZEQzk2QTAwMTQ1MUI2IC8qIEpTRm9udEZhY2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNGb250RmFjZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyOUU3QzVBMUUyNEJDMUQwMEZGRUMzRCAvKiBsaWJQQUwuYSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsg
aW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliUEFMLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCUMyOUU3QzYxMUUyNEJFQzQwMEZGRUMzRCAvKiBDcnlwdG9EaWdl
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvRGlnZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOUU3QzY0MUUyNEJFRTYwMEZGRUMzRCAvKiBD
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzI5RTdDNjkxRTI0QzM5MDAwRkZFQzNEIC8qIGNvbmZpZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzI5RTdDNkIxRTI0QzdEMTAwRkZFQzNEIC8qIFBBTC54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBQQUwueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyOUU3QzZGMUUyNTZEODAwMEZGRUMzRCAvKiBFbmZvcmNlUEFMTGF5ZXJp
bmcucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUgPSBFbmZvcmNlUEFMTGF5
ZXJpbmcucHk7IHBhdGggPSBTY3JpcHRzL0VuZm9yY2VQQUxMYXllcmluZy5weTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hv
b3Nlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvckNob29zZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzMzRUU1QzIxNEZCNDk2MTAwMDIwOTVBIC8q
IEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzMzRUU1QzMxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VD
bGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNDI2Nyw4ICsxNDI4Miw2IEBACiAJCUUxRjgwQjg2MTgzMTcyNTIwMDc4ODVD
MyAvKiBDcnlwdG9LZXlQYWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENy
eXB0b0tleVBhaXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGODBCOEIxODMx
NzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0NyeXB0b0tleVBhaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMUY4MEI4QzE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3J5cHRvS2V5UGFpci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUZFMTM2MjE4MzQzNTExMDA4OTJGMTMgLyogQ3J5
cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUUxRkUxMzY2MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvRGlnZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxRkUxMzY4MTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdv
cml0aG1SU0FfT0FFUC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxRkUxMzY5MTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2RTE4M0ZFQ0YwMDA4OTJGMTMg
LyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQ5NzgsNiArMTQ5OTEsNyBAQAogCQkJaXNhID0gUEJYRnJh
bWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJ
ZmlsZXMgPSAoCisJCQkJQzI5RTdDNkMxRTI0Q0MyQjAwRkZFQzNEIC8qIGxpYlBBTC5hIGluIEZy
YW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTIxMkIwNDhBMzAwRUQ5OEM2IC8qIEFjY2VsZXJhdGUu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTMxMkIwNDhBMzAwRUQ5OEM2
IC8qIEF1ZGlvVG9vbGJveC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQkxQUIzM0RB
NTEyNTUxRTMyMDAyNDQ1N0EgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCkBA
IC0xNDk5MSw2ICsxNTAwNSwxMyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OworCQlDMjlFN0M1NzFFMjRCQzFDMDBGRkVDM0QgLyogRnJh
bWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQlFMUJBNjcwRTE3NDJC
REUwMDBDMjAyNTEgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE1MDIxLDYg
KzE1MDQyLDcgQEAKIAkJCQlFMUJBNjcxNjE3NDJCREUwMDBDMjAyNTEgLyogbGliV2ViQ29yZVRl
c3RTaGltLmR5bGliICovLAogCQkJCTQxN0RBNkQwMTM3MzRFMDIwMDdDNTdGQiAvKiBsaWJXZWJD
b3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8sCiAJCQkJOTNGMTlCMUEwODI0NUU1QTAwMUU5QUJDIC8q
IFdlYkNvcmUuZnJhbWV3b3JrICovLAorCQkJCUMyOUU3QzVBMUUyNEJDMUQwMEZGRUMzRCAvKiBs
aWJQQUwuYSAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7CkBAIC0xNTQyNCw2ICsxNTQ0Niw3IEBACiAJCQkJMkU0MzQ2MzEwRjU0NkE2
ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8sCiAJCQkJRTFGMDQyNDMwOTgzOTM4OTAwNjY5NEVBIC8q
IHhtbCAqLywKIAkJCQk2NTY1ODBFQzA5RDEyQjIwMDAwRTYxRDcgLyogRGVyaXZlZCBTb3VyY2Vz
ICovLAorCQkJCUMyOUU3QzVGMUUyNEJDQTIwMEZGRUMzRCAvKiBQQUwgKi8sCiAJCQkJMDg5QzE2
NjVGRTg0MTE1OEMwMkFBQzA3IC8qIFJlc291cmNlcyAqLywKIAkJCQkzNzE3RDdFNDE3RUNDMzZD
MDAzQzI3NkQgLyogU2NyaXB0cyAqLywKIAkJCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyog
RnJhbWV3b3JrcyAqLywKQEAgLTE2MjA0LDYgKzE2MjI3LDcgQEAKIAkJMUNERDQ0NjYwQkE5Qzgw
MDAwRjkwMTQ3IC8qIENvbmZpZ3VyYXRpb25zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlDMjlFN0M2QjFFMjRDN0QxMDBGRkVDM0QgLyogUEFMLnhjY29u
ZmlnICovLAogCQkJCTFDREQ0NUU2MEJBOUM4NDYwMEY5MDE0NyAvKiBCYXNlLnhjY29uZmlnICov
LAogCQkJCTFDREQ0NUU0MEJBOUM4NDYwMEY5MDE0NyAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcg
Ki8sCiAJCQkJNDQ5MDk4QjEwRjhGODI1MjAwNzZBMzI3IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnICovLApAQCAtMTY1MTYsNiArMTY1NDAsNyBAQAogCQkJCUY0ODM4OTc5MUUxREQyM0EwMDc2
QjdFQSAvKiBFZGl0aW5nSGlzdG9yeSAqLywKIAkJCQkzNzE3RDdFNTE3RUNDM0E2MDAzQzI3NkQg
LyogZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsICovLAogCQkJCTM3RDQ1NkZCMUE5QTUw
QjYwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3MucG0gKi8sCisJCQkJQzI5RTdDNkYxRTI1
NkQ4MDAwRkZFQzNEIC8qIEVuZm9yY2VQQUxMYXllcmluZy5weSAqLywKIAkJCSk7CiAJCQluYW1l
ID0gU2NyaXB0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMjQ4OCw3ICsyMjUx
Myw2IEBACiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAwQzFBMzU5IC8qIGF1ZGlvICovLAogCQkJCTFB
RTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKIAkJCQlBNUM5NzRDRTExNDg1RkRBMDA2
NkYyQUIgLyogY29jb2EgKi8sCi0JCQkJQ0U1MEQ4Q0UxQzg5MzJFRDAwNzJFQTVBIC8qIGNyeXB0
byAqLywKIAkJCQk1MTVCRTE4NzFENTRGNURCMDBERDdDNjggLyogZ2FtZXBhZCAqLywKIAkJCQlC
MkEwMTU5MTBBRjZDRDUzMDA2QkNFMEUgLyogZ3JhcGhpY3MgKi8sCiAJCQkJQTU5RTNDMUIxMTU4
MEYzNDAwNzI5MjhFIC8qIGlvcyAqLywKQEAgLTIyNjgyLDYgKzIyNzA2LDMyIEBACiAJCQl0YWJX
aWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCUMyOUU3QzVGMUUyNEJDQTIwMEZG
RUMzRCAvKiBQQUwgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCUMyOUU3QzY5MUUyNEMzOTAwMEZGRUMzRCAvKiBjb25maWcuaCAqLywKKwkJCQlDMjlFN0M2
MDFFMjRCQ0RGMDBGRkVDM0QgLyogY3J5cHRvICovLAorCQkJKTsKKwkJCXBhdGggPSBQQUw7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDMjlFN0M2MDFFMjRCQ0RGMDBGRkVD
M0QgLyogY3J5cHRvICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlDMjlFN0M2MzFFMjRCRUQ0MDBGRkVDM0QgLyogY29tbW9uY3J5cHRvICovLAorCQkJCUMy
OUU3QzYxMUUyNEJFQzQwMEZGRUMzRCAvKiBDcnlwdG9EaWdlc3QuaCAqLywKKwkJCSk7CisJCQlw
YXRoID0gY3J5cHRvOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzI5RTdD
NjMxRTI0QkVENDAwRkZFQzNEIC8qIGNvbW1vbmNyeXB0byAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzI5RTdDNjQxRTI0QkVFNjAwRkZFQzNEIC8qIENy
eXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IGNvbW1vbmNy
eXB0bzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUM5NkY1RUJGMUI1ODcy
MjYwMDkxRUE5RCAvKiBtZWRpYXNlc3Npb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKApAQCAtMjI5MjgsMjMgKzIyOTc4LDYgQEAKIAkJCXBhdGggPSBpb3M7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlDRTUwRDhDRTFDODkzMkVEMDA3MkVB
NUEgLyogY3J5cHRvICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgK
LQkJCQlDRTUwRDhDRjFDODkzMkZCMDA3MkVBNUEgLyogY29tbW9uY3J5cHRvICovLAotCQkJCUUx
RkUxMzY2MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCAqLywKLQkJCSk7Ci0JCQlw
YXRoID0gY3J5cHRvOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJQ0U1MEQ4
Q0YxQzg5MzJGQjAwNzJFQTVBIC8qIGNvbW1vbmNyeXB0byAqLyA9IHsKLQkJCWlzYSA9IFBCWEdy
b3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTFGRTEzNjIxODM0MzUxMTAwODkyRjEzIC8qIENy
eXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8sCi0JCQkpOwotCQkJcGF0aCA9IGNvbW1vbmNy
eXB0bzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCURGOUFGRDZGMTNGQzMx
QjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTI1MjM0LDcgKzI1MjY3LDYgQEAKIAkJCQlFMTlBQzNGMTE4MjREQzc5MDAzNDk0
MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTlBQzNG
MzE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMTlBQzNGNTE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
LmggaW4gSGVhZGVycyAqLywKLQkJCQlFMUZFMTM2NzE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRv
RGlnZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTU3QThFNTE4MTczQTNBMDA5RjgyMUQgLyog
Q3J5cHRvS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI1Rjg0RTE4MjQyODlEMDBEODRDRDkg
LyogQ3J5cHRvS2V5QUVTLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI1Rjg1RTE4MkMyREY2MDBE
ODRDRDkgLyogQ3J5cHRvS2V5RGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODQzNCw2ICsyODQ2
NiwxNSBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OworCQlDMjlFN0M1ODFFMjRCQzFDMDBGRkVDM0QgLyogSGVhZGVycyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUMyOUU3QzZBMUUyNEMzOTAwMEZGRUMzRCAvKiBjb25m
aWcuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyOUU3QzYyMUUyNEJFQzQwMEZGRUMzRCAvKiBDcnlw
dG9EaWdlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQlFMUJBNjZGNjE3NDJCREUwMDBDMjAyNTEgLyog
SGVhZGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTI4NDgzLDYgKzI4NTI0LDcgQEAKIAkJCWJ1aWxk
UnVsZXMgPSAoCiAJCQkpOwogCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCUMyOUU3QzY3MUUyNEJG
MjcwMEZGRUMzRCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJCUREMDQxRkYxMDlEOUUz
MjUwMDEwQUYyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJKTsKIAkJCW5hbWUgPSBX
ZWJDb3JlOwpAQCAtMjg0OTEsNiArMjg1MzMsMjQgQEAKIAkJCXByb2R1Y3RSZWZlcmVuY2UgPSA5
M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87CiAJCQlwcm9k
dWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmZyYW1ld29yayI7CiAJCX07CisJCUMy
OUU3QzU5MUUyNEJDMUMwMEZGRUMzRCAvKiBQQUwgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVU
YXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gQzI5RTdDNUUxRTI0QkMxRDAwRkZF
QzNEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJQQUwi
ICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJQzI5RTdDNTYxRTI0QkMxQzAwRkZFQzNEIC8q
IFNvdXJjZXMgKi8sCisJCQkJQzI5RTdDNTcxRTI0QkMxQzAwRkZFQzNEIC8qIEZyYW1ld29ya3Mg
Ki8sCisJCQkJQzI5RTdDNTgxRTI0QkMxQzAwRkZFQzNEIC8qIEhlYWRlcnMgKi8sCisJCQkJQzI5
RTdDNkUxRTI1NkNGQjAwRkZFQzNEIC8qIEVuZm9yY2UgUEFMIExheWVyaW5nICovLAorCQkJKTsK
KwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJ
CW5hbWUgPSBQQUw7CisJCQlwcm9kdWN0TmFtZSA9IFBBTDsKKwkJCXByb2R1Y3RSZWZlcmVuY2Ug
PSBDMjlFN0M1QTFFMjRCQzFEMDBGRkVDM0QgLyogbGliUEFMLmEgKi87CisJCQlwcm9kdWN0VHlw
ZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKIAkJRTFC
QTY2RjMxNzQyQkRFMDAwQzIwMjUxIC8qIFdlYkNvcmVUZXN0U2hpbSAqLyA9IHsKIAkJCWlzYSA9
IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBFMUJBNjcxMjE3
NDJCREUwMDBDMjAyNTEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgIldlYkNvcmVUZXN0U2hpbSIgKi87CkBAIC0yODUxOCw2ICsyODU3OCwxMiBAQAogCQkJ
CUJ1aWxkSW5kZXBlbmRlbnRUYXJnZXRzSW5QYXJhbGxlbCA9IFlFUzsKIAkJCQlMYXN0U3dpZnRV
cGRhdGVDaGVjayA9IDA3MDA7CiAJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA3MDA7CisJCQkJVGFy
Z2V0QXR0cmlidXRlcyA9IHsKKwkJCQkJQzI5RTdDNTkxRTI0QkMxQzAwRkZFQzNEID0geworCQkJ
CQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9uID0gOC4yLjE7CisJCQkJCQlQcm92aXNpb25pbmdTdHls
ZSA9IEF1dG9tYXRpYzsKKwkJCQkJfTsKKwkJCQl9OwogCQkJfTsKIAkJCWJ1aWxkQ29uZmlndXJh
dGlvbkxpc3QgPSAxNDlDMjg0MzA4OTAyQjExMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJDb3JlIiAqLzsKIAkJCWNvbXBhdGliaWxpdHlWZXJz
aW9uID0gIlhjb2RlIDMuMiI7CkBAIC0yODU0Miw2ICsyODYwOCw3IEBACiAJCQkJREQwNDFGQkUw
OUQ5RERCRTAwMTBBRjJBIC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk0MTdEQTZDRjEzNzM0
RTAyMDA3QzU3RkIgLyogV2ViQ29yZVRlc3RTdXBwb3J0ICovLAogCQkJCUUxQkE2NkYzMTc0MkJE
RTAwMEMyMDI1MSAvKiBXZWJDb3JlVGVzdFNoaW0gKi8sCisJCQkJQzI5RTdDNTkxRTI0QkMxQzAw
RkZFQzNEIC8qIFBBTCAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9u
ICovCkBAIC0yODY5MSw2ICsyODc1OCwyMCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJ
CXNoZWxsU2NyaXB0ID0gIlNSQ19ESVI9XCIkU1JDUk9PVC9Nb2R1bGVzL21vZGVybi1tZWRpYS1j
b250cm9sc1wiXG5EU1RfRElSPVwiJEJVSUxUX1BST0RVQ1RTX0RJUi8kVU5MT0NBTElaRURfUkVT
T1VSQ0VTX0ZPTERFUl9QQVRIL21vZGVybi1tZWRpYS1jb250cm9sc1wiXG5cbm1rZGlyIC1wIFwi
JERTVF9ESVJcIlxuXG5pZiBbIFwiJHtQTEFURk9STV9OQU1FfVwiID09IFwibWFjb3N4XCIgXTsg
dGhlblxuICAgIElNR19PU19QUkVGSVg9XCJtYWNPU1wiXG5maVxuXG5pZiBbIFwiJHtQTEFURk9S
TV9OQU1FfVwiID09IFwiaXBob25lb3NcIiBdIHx8IFsgXCIke1BMQVRGT1JNX05BTUV9XCIgPT0g
XCJpcGhvbmVzaW11bGF0b3JcIiBdOyB0aGVuXG4gICAgSU1HX09TX1BSRUZJWD1cImlPU1wiXG5m
aVxuXG5pZiBbIC1uIFwiJElNR19PU19QUkVGSVhcIiBdOyB0aGVuXG4gICAgbWtkaXIgLXAgXCIk
RFNUX0RJUi9pbWFnZXNcIlxuICAgIHJzeW5jIC1hcSAtLWV4Y2x1ZGUgXCIuc3ZuXCIgLS1leGNs
dWRlIFwiLkRTX1N0b3JlXCIgXCIkU1JDX0RJUi9pbWFnZXMvJElNR19PU19QUkVGSVhcIiBcIiRE
U1RfRElSL2ltYWdlc1wiXG5maVxuXG5jZCBcIiRTUkNfRElSXCJcbmNhdCBjb250cm9scy8qLmNz
cyA+IFwiJERTVF9ESVIvbW9kZXJuLW1lZGlhLWNvbnRyb2xzLmNzc1wiXG5jYXQgYGNhdCBqcy1m
aWxlc2AgPiBcIiREU1RfRElSL21vZGVybi1tZWRpYS1jb250cm9scy5qc1wiIjsKIAkJfTsKKwkJ
QzI5RTdDNkUxRTI1NkNGQjAwRkZFQzNEIC8qIEVuZm9yY2UgUEFMIExheWVyaW5nICovID0gewor
CQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkp
OworCQkJbmFtZSA9ICJFbmZvcmNlIFBBTCBMYXllcmluZyI7CisJCQlvdXRwdXRQYXRocyA9ICgK
KwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNo
ZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJweXRob24gJHtTUkNST09UfS9T
Y3JpcHRzL0VuZm9yY2VQQUxMYXllcmluZy5weSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vJHtGVUxM
X1BST0RVQ1RfTkFNRX0gJHtTUkNST09UfS9QQUwiOworCQl9OwogCQlERDA0MUZCRDA5RDlEREJF
MDAxMEFGMkEgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
QEAgLTI5MDcxLDcgKzI5MTUyLDYgQEAKIAkJCQlFMTlBQzNGMDE4MjREQzc5MDAzNDk0MjYgLyog
Q3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOUFDM0YyMTgy
NERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTE5QUMzRjQxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMi5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlFMUZFMTM2NDE4MzQzNTExMDA4OTJGMTMgLyogQ3J5cHRv
RGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEU0MTgxNzNB
M0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNUY4NEQx
ODI0Mjg5RDAwRDg0Q0Q5IC8qIENyeXB0b0tleUFFUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MTI1Rjg2MzE4MkMzMDNBMDBEODRDRDkgLyogQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMTg5Niw2ICszMTk3NiwxNCBAQAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OworCQlDMjlFN0M1NjFFMjRC
QzFDMDBGRkVDM0QgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJ
CUMyOUU3QzY1MUUyNEJFRTYwMEZGRUMzRCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCX07CiAJCUUxQkE2NzAyMTc0MkJERTAwMEMyMDI1MSAvKiBTb3VyY2VzICov
ID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwpAQCAtMzE5MjIsNiArMzIwMTAsMTEgQEAKIAkJCXRhcmdldCA9IDQxN0RB
NkNGMTM3MzRFMDIwMDdDNTdGQiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi87CiAJCQl0YXJnZXRQ
cm94eSA9IDQxODE2Rjg0MTM4NTlDN0QwMDU3QUFBNCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki87CiAJCX07CisJCUMyOUU3QzY3MUUyNEJGMjcwMEZGRUMzRCAvKiBQQlhUYXJnZXREZXBlbmRl
bmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IEMy
OUU3QzU5MUUyNEJDMUMwMEZGRUMzRCAvKiBQQUwgKi87CisJCQl0YXJnZXRQcm94eSA9IEMyOUU3
QzY2MUUyNEJGMjcwMEZGRUMzRCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJ
CUREMDQxRkYxMDlEOUUzMjUwMDEwQUYyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewog
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdldCA9IEREMDQxRkJFMDlEOURE
QkUwMDEwQUYyQSAvKiBEZXJpdmVkIFNvdXJjZXMgKi87CkBAIC0zMjA2NSw2ICszMjE1OCwyNyBA
QAogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OworCQlDMjlFN0M1QjFFMjRCQzFE
MDBGRkVDM0QgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQzI5RTdDNkIxRTI0QzdEMTAwRkZFQzNE
IC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFt
ZSA9IERlYnVnOworCQl9OworCQlDMjlFN0M1QzFFMjRCQzFEMDBGRkVDM0QgLyogUmVsZWFzZSAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSBDMjlFN0M2QjFFMjRDN0QxMDBGRkVDM0QgLyogUEFMLnhjY29uZmlnICov
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsK
KwkJQzI5RTdDNUQxRTI0QkMxRDAwRkZFQzNEIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
QzI5RTdDNkIxRTI0QzdEMTAwRkZFQzNEIC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCUREMDQxRkMy
MDlEOUREREMwMDEwQUYyQSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQ0RENDVFNTBCQTlDODQ2
MDBGOTAxNDcgLyogV2ViQ29yZS54Y2NvbmZpZyAqLzsKQEAgLTMyMTUzLDYgKzMyMjY3LDE2IEBA
CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OworCQlDMjlFN0M1RTFFMjRCQzFEMDBGRkVD
M0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIg
Ki8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0
aW9ucyA9ICgKKwkJCQlDMjlFN0M1QjFFMjRCQzFEMDBGRkVDM0QgLyogRGVidWcgKi8sCisJCQkJ
QzI5RTdDNUMxRTI0QkMxRDAwRkZFQzNEIC8qIFJlbGVhc2UgKi8sCisJCQkJQzI5RTdDNUQxRTI0
QkMxRDAwRkZFQzNEIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVj
dGlvbjsKKwkJfTsKIAkJREQwNDFGQzEwOUQ5REREQzAwMTBBRjJBIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMiICovID0g
ewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEExLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTEuY3BwCmluZGV4IDBjOGRmZGRkMWUwYTdhZGJhYTE4ZWY5YzUxMmE3Mjhj
OTQyYWRlMjkuLjIxMGQ5OGYzZDYwZjdhZmIzZWM5N2YwMmUyYjM0OGU3YzkyMmFkMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTEuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBU
TykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2Ny
eXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0
Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6aWRl
bnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6ZGlnZXN0KFZlY3Rv
cjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlv
bkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRv
RGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKKyAgICBhdXRv
IGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzEpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNh
bGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNz
YWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbAogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdv
cml0aG1TSEExOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEp
OworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAg
ZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNw
cAppbmRleCA2Y2ExYWVlNWE2YmI3ZDgzY2EwNTY0MTlkY2JlYmQ1MTdiOWQ2MTg1Li5iZTQ0MTk1
NzQyMjhjYjUxMDkxZmU2NWI0OGNiZjMxYzIwZmJmODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAK
QEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVk
ZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0b0Rp
Z2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmlkZW50aWZpZXIoKSBj
b25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90
PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdv
cmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0Ojpj
cmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOworICAgIGF1dG8gZGlnZXN0
ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjI0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9p
ZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdl
LCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGht
U0hBMjI0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3Qg
PSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7
CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAg
IGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5j
cHAKaW5kZXggNzM2NjBmNTk5YWYzN2NhOWRlOWEyMTllM2Y0ZjIzNDhmNDZhYzJiMy4uNmY4MTZj
ODk0YTc5ZWU3YTZkM2JlN2JmNjk0ZDQxODkwNjBiODYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3Bw
CkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1
ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9E
aWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjppZGVudGlmaWVyKCkg
Y29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdChWZWN0b3I8dWludDhf
dD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFj
ayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
b3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGRpZ2Vz
dCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1Nik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2Fn
ZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRo
bVNIQTI1Njo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0
ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYp
OworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAg
ICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQu
Y3BwCmluZGV4IGM5Nzc1MmQ4MWMwMDU0MjM5YjBiODhjNjBhYTM0M2VmYTY1ZTE0NzcuLmRlMTE1
ODc3MDM4YjUyMTFiMDcwNTFjMjY0YjMwZWEwNTBkNDU5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNw
cApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNs
dWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRv
RGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6aWRlbnRpZmllcigp
IGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4
X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAgYXV0byBkaWdl
c3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8zODQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3Nh
Z2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0
aG1TSEEzODQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAg
ICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
LmNwcAppbmRleCAzM2U0ODNkYTE1ZDEwY2NkYjczZWUzOGY5M2ExM2Q2ZDcxODcwMmVmLi4zNjU4
OTMwMjg2YjhmMGRkM2ZjNjIyN2I4ZWNiM2UxMDQ2MGJjM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5j
cHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5j
bHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0
b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmlkZW50aWZpZXIo
KSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KFZlY3Rvcjx1aW50
OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxi
YWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOworICAgIGF1dG8gZGln
ZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfNTEyKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNz
YWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3Jp
dGhtU0hBNTEyOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
Mik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAg
ICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81TWFjLmNwcAppbmRleCBmNmFiN2EyMTU1NTNiNmNiZmI0NzMwMzU1Y2ZlNTM1
MmE5ZDAyMzU1Li43ZmNmNWUyMTY4NjU4ZjlhNzQxMTk2NjFmZDAwNGM4ZDcwYWZiODlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcApAQCAtMzAsMjYgKzMwLDI2IEBACiAKICNp
bmNsdWRlICJDb21tb25DcnlwdG9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0
aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAj
aW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0Ny
eXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBzdGQ6Om9wdGlv
bmFsPENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBjcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24pCitpbmxpbmUgc3RkOjpvcHRpb25hbDxQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBjcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChoYXNoRnVu
Y3Rpb24pIHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgotICAg
ICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOworICAgICAgICByZXR1
cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7CiAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yMjQ7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjI0OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzI1NjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsK
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6Ci0gICAgICAgIHJl
dHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKKyAgICAgICAgcmV0dXJuIFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CiAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV81MTI7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfNTEyOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQpAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiBzaWduUlNBU1NBX1BLQ1MxX3YxXzUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZgogICAg
IGF1dG8gY3J5cHRvRGlnZXN0QWxnb3JpdGhtID0gV2ViQ29yZTo6Y3J5cHRvRGlnZXN0QWxnb3Jp
dGhtKGhhc2gpOwogICAgIGlmICghY3J5cHRvRGlnZXN0QWxnb3JpdGhtKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0
b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOworICAgIGF1dG8gZGlnZXN0
ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKICAg
ICBpZiAoIWRpZ2VzdCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
IH07CiAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLCBkYXRhTGVuZ3RoKTsKQEAgLTkzLDcgKzkz
LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHZlcmlmeVJTQVNTQV9QS0NTMV92MV81KENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwKICAgICBhdXRvIGNyeXB0b0RpZ2VzdEFsZ29y
aXRobSA9IFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNoKTsKICAgICBpZiAoIWNy
eXB0b0RpZ2VzdEFsZ29yaXRobSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlv
bkVycm9yIH07Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRv
RGlnZXN0QWxnb3JpdGhtKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0Ojpj
cmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CiAgICAgaWYgKCFkaWdlc3QpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIGRpZ2VzdC0+YWRkQnl0
ZXMoZGF0YSwgZGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAppbmRleCBkZjk2MWUwMThhYjdmYTAzY2RhNTk0YjkyNDE4ZjU5NGVm
OTQ4YjhiLi4yMjI2MjIyODk5NGI1YTg3ZDg5OGNmMThiNGFmYjc0N2IyNThkNDU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTQ1LDcg
KzQ1LDYgQEAKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiQ29va2llLmgi
CiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5j
bHVkZSAiRE9NRWRpdG9yLmgiCiAjaW5jbHVkZSAiRE9NUGF0Y2hTdXBwb3J0LmgiCiAjaW5jbHVk
ZSAiRE9NV2luZG93LmgiCkBAIC03OSw2ICs3OCw3IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2lu
Y2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgPFBBTC9jcnlw
dG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlBz
ZXVkb0VsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgpAQCAtMTMxNyw3ICsxMzE3
LDcgQEAgc3RhdGljIFN0cmluZyBjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFz
aChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgIFRleHRFbmNvZGluZyBkb2N1bWVudEVuY29k
aW5nID0gZWxlbWVudC5kb2N1bWVudCgpLnRleHRFbmNvZGluZygpOwogICAgIGNvbnN0IFRleHRF
bmNvZGluZyYgZW5jb2RpbmdUb1VzZSA9IGRvY3VtZW50RW5jb2RpbmcuaXNWYWxpZCgpID8gZG9j
dW1lbnRFbmNvZGluZyA6IFVURjhFbmNvZGluZygpOwogICAgIENTdHJpbmcgY29udGVudCA9IGVu
Y29kaW5nVG9Vc2UuZW5jb2RlKFRleHROb2RlVHJhdmVyc2FsOjpjb250ZW50c0FzU3RyaW5nKGVs
ZW1lbnQpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgYXV0byBjcnlwdG9EaWdlc3Qg
PSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7
CisgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgIGNyeXB0b0RpZ2VzdC0+YWRk
Qnl0ZXMoY29udGVudC5kYXRhKCksIGNvbnRlbnQubGVuZ3RoKCkpOwogICAgIFZlY3Rvcjx1aW50
OF90PiBkaWdlc3QgPSBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCk7CiAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoInNoYTI1Ni0iLCBiYXNlNjRFbmNvZGUoZGlnZXN0LmRhdGEoKSwgZGlnZXN0LnNp
emUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAKaW5kZXggZjA1OWI2MDE0Yzg0YjdmYTRhNzM2Zjk1NGE4OTEzMTRhYjczYTVlZC4u
OTNlZWQxM2Q4ZWQ0NDQxMzg4N2Q0MTU4NGI5NjVlYjAxY2U1MzA4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0zMyw3ICsz
Myw2IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2luY2x1ZGUg
IkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZUxpc3QuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRl
ICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgpAQCAtNDUsNiArNDQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJK
U01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0b0RpZ2Vz
dC5oPgogI2luY2x1ZGUgIlBhcnNpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJQaW5nTG9hZGVy
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC0zMDEsMTggKzMwMSwxOCBAQCBi
b29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsUG9saWNpZXNBbGxvdyhWaW9sYXRlZERpcmVj
dGl2ZUNhbGxiYWNrJiYgY2FsbGJhYwogICAgIHJldHVybiBpc0FsbG93ZWQ7CiB9CiAKLXN0YXRp
YyBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSB0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShDb250ZW50
U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtIGFsZ29yaXRobSkKK3N0YXRpYyBQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRlbnRTZWN1cml0
eVBvbGljeUhhc2hBbGdvcml0aG0gYWxnb3JpdGhtKQogewogICAgIHN3aXRjaCAoYWxnb3JpdGht
KSB7CiAgICAgY2FzZSBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfMjU2
OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CisgICAg
ICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OwogICAgIGNh
c2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAg
cmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OworICAgICAgICByZXR1cm4g
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKICAgICBjYXNlIENvbnRlbnRT
ZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIHJldHVybiBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICBy
ZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgUHJlZGljYXRlPgpAQCAtMzMzLDcgKzMzMyw3IEBAIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6SGFzaEluRW5mb3JjZWRBbmRSZXBvcnRPbmx5UG9saWNpZXNQYWlyIENvbnRlbnRT
ZWN1cml0eVBvCiAgICAgYm9vbCBmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgPSBmYWxzZTsK
ICAgICBib29sIGZvdW5kSGFzaEluUmVwb3J0T25seVBvbGljaWVzID0gZmFsc2U7CiAgICAgZm9y
IChhdXRvIGFsZ29yaXRobSA6IGFsZ29yaXRobXMpIHsKLSAgICAgICAgYXV0byBjcnlwdG9EaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0
aG0pKTsKKyAgICAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOwogICAgICAgICBjcnlwdG9E
aWdlc3QtPmFkZEJ5dGVzKGNvbnRlbnRDU3RyaW5nLmRhdGEoKSwgY29udGVudENTdHJpbmcubGVu
Z3RoKCkpOwogICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoIGhhc2ggPSB7IGFsZ29y
aXRobSwgY3J5cHRvRGlnZXN0LT5jb21wdXRlSGFzaCgpIH07CiAgICAgICAgIGlmICghZm91bmRI
YXNoSW5FbmZvcmNlZFBvbGljaWVzICYmIGFsbFBvbGljaWVzV2l0aERpc3Bvc2l0aW9uQWxsb3co
Q29udGVudFNlY3VyaXR5UG9saWN5OjpEaXNwb3NpdGlvbjo6RW5mb3JjZSwgc3RkOjpmb3J3YXJk
PFByZWRpY2F0ZT4ocHJlZGljYXRlKSwgaGFzaCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMx
ZjA3NWFhMzdjYjM0NjIwOTg0N2E1OTllMWY1NDI4NGY5ZjM4MTkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgQ3J5cHRvRGlnZXN0X2gKLSNkZWZpbmUgQ3J5cHRvRGlnZXN0
X2gKLQotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dDsK
LQotY2xhc3MgQ3J5cHRvRGlnZXN0IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcnlwdG9E
aWdlc3QpOwotcHVibGljOgotICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKLSAgICAgICAgU0hB
XzEsCi0gICAgICAgIFNIQV8yMjQsCi0gICAgICAgIFNIQV8yNTYsCi0gICAgICAgIFNIQV8zODQs
Ci0gICAgICAgIFNIQV81MTIsCi0gICAgfTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0RpZ2VzdD4gY3JlYXRlKEFsZ29yaXRobSk7Ci0gICAgfkNyeXB0b0RpZ2VzdCgpOwotCi0g
ICAgdm9pZCBhZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVIYXNoKCk7Ci0KLXByaXZhdGU6Ci0gICAgQ3J5cHRvRGln
ZXN0KCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gbV9jb250
ZXh0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ3J5cHRvRGln
ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25j
cnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNmZmM1NjA1MjI2YjY0YjQ5MzczYmVhNjg1ZTky
M2YwMTk5YmI0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2Vz
dENvbW1vbkNyeXB0by5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQot
I2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG0gYWxnb3JpdGhtOwotICAgIHZvaWQqIGNjQ29udGV4dDsKLX07Ci0KLWlubGluZSBD
Q19TSEExX0NUWCogdG9TSEExQ29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQot
ewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8xKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMV9DVFgqPihjb250ZXh0
LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjI0Q29udGV4dChD
cnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdv
cml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlubGlu
ZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTI1NkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29u
dGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NU
WCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEEz
ODRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNv
bnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQp
OwotfQotaW5saW5lIENDX1NIQTUxMl9DVFgqIHRvU0hBNTEyQ29udGV4dChDcnlwdG9EaWdlc3RD
b250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
Q19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLQotQ3J5cHRvRGlnZXN0OjpD
cnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQot
ewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotICAgIHN3aXRjaCAobV9j
b250ZXh0LT5hbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMToKLSAgICAgICAgZGVsZXRlIHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6
Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6Ci0g
ICAgICAgIGRlbGV0ZSB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAg
ICAgIGRlbGV0ZSB0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAg
IGRlbGV0ZSB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLX0KLQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdl
c3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCi17Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAg
IGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBhbGdvcml0aG07Ci0KLSAgICBzd2l0Y2gg
KGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7
Ci0gICAgICAgIENDX1NIQTFfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTFfQ1RYOwotICAgICAg
ICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hB
MV9Jbml0KGNvbnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7Ci0gICAgICAgIENDX1NIQTI1Nl9D
VFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMjU2X0NUWDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRl
eHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTIyNF9Jbml0KGNvbnRleHQp
OwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2OiB7Ci0gICAgICAgIENDX1NIQTI1Nl9DVFgqIGNvbnRleHQgPSBu
ZXcgQ0NfU0hBMjU2X0NUWDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9
IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTI1Nl9Jbml0KGNvbnRleHQpOwotICAgICAgICByZXR1
cm4gZGlnZXN0OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
Mzg0OiB7Ci0gICAgICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEyX0NU
WDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAg
ICAgIENDX1NIQTM4NF9Jbml0KGNvbnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAg
IH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAg
IENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEyX0NUWDsKLSAgICAgICAgZGln
ZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTUxMl9J
bml0KGNvbnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICB9Ci19Ci0K
LXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxl
bmd0aCkKLXsKLSAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Ci0gICAgICAgIENDX1NIQTFfVXBkYXRlKHRv
U0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAg
ICBDQ19TSEEyMjRfVXBkYXRlKHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1
dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yNTY6Ci0gICAgICAgIENDX1NIQTI1Nl9VcGRhdGUodG9TSEEyNTZDb250ZXh0
KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgQ0NfU0hBMzg0
X1VwZGF0ZSh0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
NTEyOgotICAgICAgICBDQ19TSEE1MTJfVXBkYXRlKHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQu
Z2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotVmVj
dG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIFZlY3Rvcjx1
aW50OF90PiByZXN1bHQ7Ci0gICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewotICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICByZXN1bHQucmVz
aXplKENDX1NIQTFfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTFfRmluYWwocmVzdWx0
LmRhdGEoKSwgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgcmVz
dWx0LnJlc2l6ZShDQ19TSEEyMjRfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTIyNF9G
aW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6
Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjU2X0RJR0VTVF9MRU5HVEgpOwotICAgICAg
ICBDQ19TSEEyNTZfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4
dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMzg0OgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTM4NF9ESUdFU1RfTEVO
R1RIKTsKLSAgICAgICAgQ0NfU0hBMzg0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMzg0Q29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEE1
MTJfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTUxMl9GaW5hbChyZXN1bHQuZGF0YSgp
LCB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2Vz
dEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0RpZ2VzdEdDcnlwdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhM2M4YmYy
NDNkYzA3MmFiYmE4NDYxODk3MzNhMGY1M2ZkNmMwNGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dj
cnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChD
KSAyMDE2IFNvZnRBdEhvbWUKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8Z2NyeXB0Lmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIGludCBhbGdvcml0
aG07Ci0gICAgZ2NyeV9tZF9oZF90IG1kOwotfTsKLQotQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdl
c3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQotewotfQotCi1D
cnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBh
bGdvcml0aG0pCi17Ci0gICAgaW50IGdjcnlwdEFsZ29yaXRobTsKLQotICAgIHN3aXRjaCAoYWxn
b3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Ci0gICAg
ICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgZ2NyeXB0QWxn
b3JpdGhtID0gR0NSWV9NRF9TSEEyMjQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdD
UllfTURfU0hBMjU2OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMzg0OgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTM4
NDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzUxMjoKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEE1MTI7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2Vz
dChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0g
Z2NyeXB0QWxnb3JpdGhtOwotCi0gICAgZ2NyeV9tZF9vcGVuKCZkaWdlc3QtPm1fY29udGV4dC0+
bWQsIGdjcnlwdEFsZ29yaXRobSwgMCk7Ci0gICAgaWYgKCFkaWdlc3QtPm1fY29udGV4dC0+bWQp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGRpZ2VzdDsKLX0KLQotdm9p
ZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3Ro
KQotewotICAgIGdjcnlfbWRfd3JpdGUobV9jb250ZXh0LT5tZCwgaW5wdXQsIGxlbmd0aCk7Ci19
Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBp
bnQgZGlnZXN0TGVuID0gZ2NyeV9tZF9nZXRfYWxnb19kbGVuKG1fY29udGV4dC0+YWxnb3JpdGht
KTsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGRpZ2VzdExlbik7Ci0KLSAgICBnY3J5X21k
X2ZpbmFsKG1fY29udGV4dC0+bWQpOwotICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBnY3J5X21k
X3JlYWQobV9jb250ZXh0LT5tZCwgMCksIGRpZ2VzdExlbik7Ci0gICAgZ2NyeV9tZF9jbG9zZSht
X2NvbnRleHQtPm1kKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nbnV0
bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0
by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggODlhNWQ4MWYyYjRiZTI3MzJjZWUzZTUyNjMzODZlZDU5Y2IyMTRkZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNsdWRlIDxnbnV0bHMvZ251dGxzLmg+Ci0jaW5j
bHVkZSA8Z251dGxzL2NyeXB0by5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBD
cnlwdG9EaWdlc3RDb250ZXh0IHsKLSAgICBnbnV0bHNfZGlnZXN0X2FsZ29yaXRobV90IGFsZ29y
aXRobTsKLSAgICBnbnV0bHNfaGFzaF9oZF90IGhhc2g7Ci19OwotCi1DcnlwdG9EaWdlc3Q6OkNy
eXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCi17
Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci0gICAgZ251dGxzX2hhc2hf
ZGVpbml0KG1fY29udGV4dC0+aGFzaCwgMCk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9E
aWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29y
aXRobSkKLXsKLSAgICBnbnV0bHNfZGlnZXN0X2FsZ29yaXRobV90IGdudXRsc0FsZ29yaXRobTsK
LQotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzE6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEx
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzIyNDogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTIy
NDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yNTY6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEy
NTY7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMzg0OiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hB
Mzg0OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzUxMjogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NI
QTUxMjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1f
Y29udGV4dC0+YWxnb3JpdGhtID0gZ251dGxzQWxnb3JpdGhtOwotCi0gICAgaW50IHJldCA9IGdu
dXRsc19oYXNoX2luaXQoJmRpZ2VzdC0+bV9jb250ZXh0LT5oYXNoLCBnbnV0bHNBbGdvcml0aG0p
OwotICAgIGlmIChyZXQgIT0gR05VVExTX0VfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICByZXR1cm4gZGlnZXN0OwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0
ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgZ251dGxzX2hhc2go
bV9jb250ZXh0LT5oYXNoLCBpbnB1dCwgbGVuZ3RoKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENy
eXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7
Ci0gICAgaW50IGRpZ2VzdExlbiA9IGdudXRsc19oYXNoX2dldF9sZW4obV9jb250ZXh0LT5hbGdv
cml0aG0pOwotICAgIHJlc3VsdC5yZXNpemUoZGlnZXN0TGVuKTsKLQotICAgIGdudXRsc19oYXNo
X291dHB1dChtX2NvbnRleHQtPmhhc2gsIHJlc3VsdC5kYXRhKCkpOwotCi0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3NmNjMTkyYzJiMzAzOTU5NDMwZjI0OWM3MzYzNGIxMzljN2E4
YTQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8d2luY3J5cHQuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAg
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOwotICAgIEhDUllQVFBST1YgaENvbnRl
eHQgeyAwIH07Ci0gICAgSENSWVBUSEFTSCBoSGFzaCB7IDAgfTsKLX07Ci0KLUNyeXB0b0RpZ2Vz
dDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4
dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLSAgICBpZiAoSENS
WVBUSEFTSCBoSGFzaCA9IG1fY29udGV4dC0+aEhhc2gpCi0gICAgICAgIENyeXB0RGVzdHJveUhh
c2goaEhhc2gpOwotICAgIGlmIChIQ1JZUFRQUk9WIGhDb250ZXh0ID0gbV9jb250ZXh0LT5oQ29u
dGV4dCkKLSAgICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ29udGV4dCwgMCk7Ci19Ci0KLXN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKEFsZ29yaXRo
bSBhbGdvcml0aG0pCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0
KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBh
bGdvcml0aG07Ci0gICAgaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZkaWdlc3QtPm1fY29udGV4
dC0+aENvbnRleHQsIG51bGxwdHIsIG51bGxwdHIgLyogdXNlIGRlZmF1bHQgcHJvdmlkZXIgKi8s
IFBST1ZfUlNBX0FFUywgQ1JZUFRfVkVSSUZZQ09OVEVYVCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7Ci0gICAgc3dpdGNoIChhbGdvcml0aG0p
IHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewotICAgICAgICBz
dWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBD
QUxHX1NIQTEsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Njogewot
ICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhD
b250ZXh0LCBDQUxHX1NIQV8yNTYsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzM4NDogewotICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5t
X2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8zODQsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4
dC0+aEhhc2gpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzUxMjogewotICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhh
c2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV81MTIsIDAsIDAsICZkaWdl
c3QtPm1fY29udGV4dC0+aEhhc2gpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQotICAg
IGlmIChzdWNjZWVkZWQpCi0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwg
c2l6ZV90IGxlbmd0aCkKLXsKLSAgICBpZiAoIWlucHV0IHx8ICFsZW5ndGgpCi0gICAgICAgIHJl
dHVybjsKLSAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEhhc2hEYXRhKG1fY29udGV4dC0+aEhhc2gs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQllURSo+KGlucHV0KSwgbGVuZ3RoLCAwKSk7Ci19Ci0K
LVZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBWZWN0
b3I8dWludDhfdD4gcmVzdWx0OwotICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlcjsKLSAgICBE
V09SRCBkaWdlc3RMZW5ndGhCdWZmZXJTaXplID0gc2l6ZW9mKGRpZ2VzdExlbmd0aEJ1ZmZlcik7
Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNo
LCBIUF9IQVNIU0laRSwgcmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oJmRpZ2VzdExlbmd0aEJ1ZmZl
ciksICZkaWdlc3RMZW5ndGhCdWZmZXJTaXplLCAwKSk7Ci0gICAgcmVzdWx0LnJlc2l6ZShkaWdl
c3RMZW5ndGhCdWZmZXIpOwotCi0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0o
bV9jb250ZXh0LT5oSGFzaCwgSFBfSEFTSFZBTCwgcmVzdWx0LmRhdGEoKSwgJmRpZ2VzdExlbmd0
aEJ1ZmZlciwgMCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5zaXplKCkgPT0gZGlnZXN0
TGVuZ3RoQnVmZmVyKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGMzNDU1N2Q5N2NjZTcwYTEyNzA2OGZi
YjQwZjg2NGE0NDg2NTRhM2EuLmQ0YmQ4YWUwM2VlNGRhY2NjYTZlYmJlMTdhYjc3N2U2ZWRjYmI2
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3Vw
TmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zMSwxMCArMzEsMTAgQEAKIAogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5o
IgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
IDxQQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgi
CiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KQEAg
LTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZURhdGEpCiAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICAgICAgYXV0byBkaWdlc3QgPSBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAg
ICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhjZXJ0
aWZpY2F0ZURhdGEtPmRhdGEsIGNlcnRpZmljYXRlRGF0YS0+bGVuKTsKIAogICAgICAgICBhdXRv
IGhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
V2ViS2l0RlMuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UKaW5kZXggMjlhMDk2
OTAzOGZhYTc0NGUxYThjNThmMzU2YWQwNzNmMDA1MjViZC4uNTEzMGZmY2JjYzdjOWNlNzUxNGFm
NGQ1NTNiZDhhNGYwNTAxNDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZTLmNt
YWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZQpAQCAtMTAsNiArMTAsOSBAQCBl
bmRpZiAoKQogaWYgKE5PVCBXRUJDT1JFX0RJUikKICAgICBzZXQoV0VCQ09SRV9ESVIgIiR7Q01B
S0VfU09VUkNFX0RJUn0vU291cmNlL1dlYkNvcmUiKQogZW5kaWYgKCkKK2lmIChOT1QgUEFMX0RJ
UikKKyAgICBzZXQoUEFMX0RJUiAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViQ29yZS9Q
QUwiKQorZW5kaWYgKCkKIGlmIChOT1QgV0VCS0lUX0RJUikKICAgICBzZXQoV0VCS0lUX0RJUiAi
JHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViS2l0IikKIGVuZGlmICgpCmRpZmYgLS1naXQg
YS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CmluZGV4IDc5YTE3YmFjYTBkZjUzMjhl
N2IzZDExOTcyYmI2YjdiNDdlMmU2ZmEuLjdhYzlkOGMwZjFiZDhjMjIzMjlkMDAwZjljODA1OTU1
NTYzZTU2ZWUgMTAwNjQ0Ci0tLSBhL0NNYWtlTGlzdHMudHh0CisrKyBiL0NNYWtlTGlzdHMudHh0
CkBAIC0xMTUsNiArMTE1LDcgQEAgZWxzZSAoKQogICAgIHNldChXZWJDb3JlX0xJQlJBUllfVFlQ
RSBTVEFUSUMpCiBlbmRpZiAoKQogCitzZXQoUEFMX0xJQlJBUllfVFlQRSBTVEFUSUMpCiBzZXQo
V2ViS2l0X0xJQlJBUllfVFlQRSBTSEFSRUQpCiBzZXQoV2ViS2l0Ml9MSUJSQVJZX1RZUEUgU0hB
UkVEKQogc2V0KFdlYkNvcmVUZXN0U3VwcG9ydF9MSUJSQVJZX1RZUEUgU1RBVElDKQpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDE0ZjY0NzE2MDhlOTRlYTk0ZTdkMmRi
ZmZhYmQ2ZjRiOGU1Y2Q3M2UuLmYyYmY3NWQ1YTlhNjQ1NTRhZDU5NTkxYmJiM2ZiYzkwMjNmY2Iz
YmYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNy0wMS0xMCAgRG9uIE9sbXN0ZWFkIDxkb24ub2xtc3RlYWRAYW0uc29ueS5jb20+IGFu
ZCBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50
cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIFNvdXJjZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
V2ViS2l0RlMuY21ha2U6CisKIDIwMTYtMTItMjEgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVs
ZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIHNldCBQWVRIT05QQVRIIGluIHNlcGFyYXRlIENPTU1B
TkQgZG9lc24ndCB3b3JrIHdpdGggYWxsIENNYWtlIGdlbmVyYXRvcnMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298530</attachid>
            <date>2017-01-10 17:23:00 -0800</date>
            <delta_ts>2017-01-10 22:43:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358.patch</filename>
            <type>text/plain</type>
            <size>95631</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmJlNmIxNDdjZTJkOTMx
NjM3YzA1MDdkZWYzMmZiZjBjMjhhM2Y1OC4uNWQxOTFjN2ZiNWE2YmZjYzcwYjVmNDdkODg1OTAy
N2Y5MzA4ZmVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE3LTAxLTEwICBEb24g
T2xtc3RlYWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4gYW5kIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZv
cm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGVuZm9yY2UgbGF5ZXJpbmcgYW5kIHByb21v
dGUgdGVzdGFiaWxpdHksIFdlYkNvcmUvcGxhdGZvcm0gZmlsZXMKKyAgICAgICAgc2hvdWxkIGJl
IGNvbXBpbGVkIGluIHRoZWlyIG93biB0YXJnZXQuIFRoaXMgbmV3IHRhcmdldCBjYW4gZW5mb3Jj
ZSBsYXllcmluZworICAgICAgICBhbmQgY2FuIGJlIHRlc3RlZCB3aXRoIHVuaXQgdGVzdHMgaW4g
YWRkaXRpb24gdG8gbGF5b3V0IHRlc3RzLgorCisgICAgICAgIFRoZSBuYW1lIG9mIHRoaXMgbmV3
IHRhcmdldCBpcyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIsIG9yICJQQUwuIgorICAg
ICAgICBUaGlzIGNvbXByaXNlcyBvZiBhIG5ldyBkaXJlY3RvcnkgaW4gV2ViQ29yZSB3aGljaCB3
aWxsIGJlIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBmb3IgZmlsZXMgbWlncmF0ZWQgZnJvbSBX
ZWJDb3JlL3BsYXRmb3JtLiBUaGlzIG5ldyBmb2xkZXIsIGFuZCBpdHMgYXNzb2NpYXRlZAorICAg
ICAgICB0YXJnZXQsIHdpbGwgbWFpbnRhaW4gbGF5ZXJpbmcgaW52YXJpYW50cy4gVGhlc2UgaW52
YXJpYW50cyBhcmUgZW5mb3JjZWQgYXQKKyAgICAgICAgYnVpbGQtdGltZSB3aXRoIGEgYnVpbGQg
c3RlcCB3aGljaCBwcm9jZXNzZXMgdGhlIHN5bWJvbHMgd2l0aGluIHRoZSBjb21waWxlZAorICAg
ICAgICBhcmNoaXZlIGZpbGUgYXMgd2VsbCBhcyB0aGUgI2luY2x1ZGUgZGlyZWN0aXZlcyBpbnNp
ZGUgdGhlIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgRmlsZXMgd2lsbCBiZSBtaWdyYXRlZCBpbnRv
IHRoaXMgbmV3IHRhcmdldC9kaXJlY3RvcnkgcGllY2UtYnktcGllY2UsIGFuZCB0aGUKKyAgICAg
ICAgbWlncmF0aW9uIG9mIGEgZmlsZSB3aWxsIGJlIHBlcmZvcm1lZCBhcyBzb29uIGFzIGl0IGNh
biBiZSBtaWdyYXRlZCB3aXRob3V0CisgICAgICAgIHZpb2xhdGluZyBsYXllcmluZy4KKworICAg
ICAgICBXaXRoaW4gV2ViQ29yZSwgZmlsZXMgc2hvdWxkIGluY2x1ZGUgZmlsZXMgaW4gUEFMIHVz
aW5nIHRoZSBjb252ZW50aW9uCisgICAgICAgICNpbmNsdWRlIDxQQUwvZm9vLmg+LiBTeW1ib2xz
IHdpdGhpbiBQQUwgYXJlIHBsYWNlZCB3aXRoaW4gYSBuZXcgbmFtZXNwYWNlLAorICAgICAgICBX
ZWJDb3JlOjpQQUwsIGFuZCB0aGVyZWZvcmUgd2hlbiB1c2VkIGluc2lkZSBXZWJDb3JlIHNob3Vs
ZCBiZSByZWZlcnJlZCB0bworICAgICAgICBhcyBQQUw6OkZvby4KKworICAgICAgICBUaGUgZmly
c3Qgc2V0IG9mIGZpbGVzIHRvIG1vdmUgaW50byB0aGUgbmV3IHBsYXRmb3JtIGlzIHRoZSBjcnlw
dG8vIHN1YmRpcmVjdG9yeQorICAgICAgICBiZWNhdXNlIGl0IGlzIGJvdGggc2ltcGxlIGJ1dCBh
bHNvIGluY2x1ZGVzIHBsYXRmb3JtLWRlcGVuZGVudCBmaWxlcy4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9QQUwueGNjb25maWc6IEFk
ZGVkLiBQQUwtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLgorICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6IE5lZWQgdG8gdXBkYXRlIHRoZSBzZWFyY2ggcGF0
aHMgc28gZmlsZXMgY2FuCisgICAgICAgIGluY2x1ZGUgUEFMIGZpbGVzLgorICAgICAgICAqIFBB
TC9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3JtRWZsLmNtYWtl
OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvUGxhdGZvcm1HVEsuY21ha2U6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9QbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3Jt
V2luLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvY29uZmlnLmg6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmguCisgICAgICAgICogUEFML2NyeXB0by9j
b21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcC4KKyAgICAgICAgKiBQQUwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RH
Q3J5cHQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dj
cnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwLgorICAgICAgICAqIFBBTC9jcnlwdG8vZ251dGxz
L0NyeXB0b0RpZ2VzdEdudVRMUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAuCisgICAgICAgICogUEFM
L2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcC4KKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAg
ICAgKiBTY3JpcHRzL0VuZm9yY2VQQUxMYXllcmluZy5weTogQWRkZWQuIFRoaXMgaXMgdGhlIGxh
eWVyaW5nIGVuZm9yY2VtZW50IG1lY2hhbmlzbS4KKyAgICAgICAgSXQgY2hlY2tzIGJvdGggc3lt
Ym9sIG5hbWVzIGluIHRoZSBjb21waWxlZCAuYSBmaWxlIGFzIHdlbGwgYXMgaW5jbHVkZSBkaXJl
Y3RpdmVzIGluCisgICAgICAgIHRoZSBzb3VyY2UgY29kZS4KKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCB0aGUgbmV3IFBBTCB0YXJnZXQuCisgICAgICAg
ICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6IFVwZGF0ZSB0byB1
c2UgdGhlIFBBTCBzeW1ib2wgbmFtaW5nCisgICAgICAgIGNvbnZlbnRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjpz
aWduUlNBU1NBX1BLQ1MxX3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UlNBU1NBX1BL
Q1MxX3YxXzUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6IERp
dHR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEy
NTZIYXNoKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJblBv
bGljaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNz
aW9uLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIb3N0VExTQ2VydGlmaWNhdGVTZXQ6
OmNvbXB1dGVDZXJ0aWZpY2F0ZUhhc2gpOgorCiAyMDE3LTAxLTEwICBLZWl0aCBSb2xsaW4gIDxr
cm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBNaXNzaW5nIGxvZ2dpbmcgaW4gSWNvbkxvYWRl
cjo6c3RhcnRMb2FkaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvQ01ha2VMaXN0cy50eHQKaW5kZXggMWI4YTJkY2I1MDRmYjU1NmFiYzVmNTgzYjc2YmUzOGQ5
MmYwZmRmMS4uMTVmZGYyMjRhODk2NmJlMTFkY2Y2M2UyZmE4ZjU4N2EwM2U3MjY0NCAxMDA2NDQK
LS0tIGEvU291cmNlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9DTWFrZUxpc3RzLnR4dApA
QCAtNDYsNiArNDYsNyBAQCBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdURiAke0FE
RElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFH
UyhKYXZhU2NyaXB0Q29yZSAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogCiBpZiAoRU5B
QkxFX1dFQkNPUkUpCisgICAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhQQUwgJHtB
RERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVS
X0ZMQUdTKFdlYkNvcmVUZXN0U3VwcG9ydCAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQog
ICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29yZSAke0FERElUSU9OQUxf
Q09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2Vi
Q29yZURlcml2ZWRTb3VyY2VzICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDQ4MTk3YjJkYjI5NTNmNjM1ZGRiYzliYjBhMDU1MzM1YWNhOTI1NmYu
LmRkODA2NmZlNWQ1N2I2ZjJjZjk5OTI4ZjgyYzkyYTBmMmY5NTA0MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0xLDYgKzEsNyBAQAogY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIu
OC4xMikKIGluY2x1ZGUoV2ViS2l0Q29tbW9uKQogc2V0X3Byb3BlcnR5KERJUkVDVE9SWSAuIFBS
T1BFUlRZIEZPTERFUiAiV2ViQ29yZSIpCithZGRfc3ViZGlyZWN0b3J5KFBBTCkKIAogc2V0KFdl
YkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpAQCAt
Mjk1Miw2ICsyOTUzLDcgQEAgc2V0KFdlYkNvcmVfUExVR19JTlNfUkVTT1VSQ0VTCiBzZXQoV2Vi
Q29yZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJSQVJJRVN9CiAgICAgSmF2YVNjcmlwdENvcmUk
e0RFQlVHX1NVRkZJWH0KKyAgICBQQUwKICkKIAogaWYgKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVE
X01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhj
Y29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA5YmEyZWQwNjJkZTk0MWI5NjkwMmNhNDRjZWFhMWMwZTQ3MTc5NzIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcKQEAg
LTAsMCArMSwzNiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoK
Ky8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
Ky8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5j
bHVkZSAiV2ViQ29yZS54Y2NvbmZpZyIKKworSU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhf
JChDT05GSUdVUkFUSU9OKSk7CitJTlNUQUxMX1BBVEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwv
bGliOworCitTS0lQX0lOU1RBTEwgPSAkKFNLSVBfSU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFM
TCkpOworU0tJUF9JTlNUQUxMXyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9OTyA9IFlFUzsKK1NLSVBf
SU5TVEFMTF9ZRVMgPSBOTzsKKworUFJPRFVDVF9OQU1FID0gUEFMOworRVhFQ1VUQUJMRV9QUkVG
SVggPSBsaWI7CitFWFBPUlRFRF9TWU1CT0xTX0ZJTEUgPSA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZwppbmRleCBjNDg4ZjgwNGZmYjAwNjc0YmJl
OThhMWQyODU2YjM2MGRhYzBjOGEzLi41OWYzOGU1MGNiODNlZjRjODk1ZDA1MTA0ODM4YmQ5NTQ3
NmNjMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3Jl
LnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNj
b25maWcKQEAgLTQ2LDcgKzQ2LDcgQEAgT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKE9USEVSX0NG
TEFHUyk7CiAKIFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9ucyAkKFNES1JPT1Qp
L3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9uczsKIAotSEVBREVSX1NFQVJDSF9QQVRI
UyA9IEZvcndhcmRpbmdIZWFkZXJzIGljdSAvdXNyL2luY2x1ZGUvbGlieHNsdCAvdXNyL2luY2x1
ZGUvbGlieG1sMiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUi
ICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJ
T05TX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CitIRUFERVJf
U0VBUkNIX1BBVEhTID0gRm9yd2FyZGluZ0hlYWRlcnMgaWN1ICQoU1JDUk9PVCkgL3Vzci9pbmNs
dWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9p
bmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRI
ID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzOwogSU5TVEFMTF9QQVRI
W3Nkaz1tYWNvc3gqXSA9ICQoV0VCQ09SRV9GUkFNRVdPUktTX0RJUik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01h
a2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg2Mjk5MTkyNTg5OTUyMjEzOTFjYTkwYzY3NmE3ZTFi
ZjJjNjcwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DTWFrZUxpc3Rz
LnR4dApAQCAtMCwwICsxLDM4IEBACitzZXQoUEFMX0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAi
JHtQQUxfRElSfSIKKyAgICAiJHtQQUxfRElSfS9jcnlwdG8iCispCisKK3NldChQQUxfU09VUkNF
UworKQorCitzZXQoUEFMX0xJQlJBUklFUworICAgIFdURgorKQorCitXRUJLSVRfSU5DTFVERV9D
T05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKworV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke1BBTF9T
T1VSQ0VTfSkKK1dFQktJVF9GUkFNRVdPUksoUEFMKQorCitpZiAoVU5JWCkKKyAgICBhZGRfY3Vz
dG9tX2NvbW1hbmQoCisgICAgICAgIFRBUkdFVCBQQUwKKyAgICAgICAgUE9TVF9CVUlMRAorICAg
ICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L1NjcmlwdHMv
RW5mb3JjZVBBTExheWVyaW5nLnB5ICQ8VEFSR0VUX0ZJTEU6UEFMPiAke1BBTF9ESVJ9CisgICAg
ICAgIFZFUkJBVElNKQorZW5kaWYgKCkKKworaWYgKE1TVkMpCisgICAgYWRkX2N1c3RvbV9jb21t
YW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBSRV9CVUlMRAorICAgICAgICBDT01N
QU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVF9MSUJSQVJJRVNfRElSfS90b29scy9zY3Jp
cHRzL2F1dG8tdmVyc2lvbi5wbCAke0RFUklWRURfU09VUkNFU19ESVJ9CisgICAgICAgIFZFUkJB
VElNKQorCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAg
ICAgIFBPU1RfQlVJTEQKKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJL
SVRfTElCUkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0cy92ZXJzaW9uLXN0YW1wLnBsICR7REVSSVZF
RF9TT1VSQ0VTX0RJUn0gJDxUQVJHRVRfRklMRTpQQUw+CisgICAgICAgIFZFUkJBVElNKQorZW5k
aWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUVmbC5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUVmbC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzVjMTg5
ODRhZTg5YjljZWFhYjI1YjU3ZmRhMDZhMWExNWZjNjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChB
UFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5j
cHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUdUSy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUdUSy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzVjMTg5
ODRhZTg5YjljZWFhYjI1YjU3ZmRhMDZhMWExNWZjNjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChB
UFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5j
cHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybU1hYy5jbWFrZSBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybU1hYy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjk2OGVj
NGQ5OGU0MWY3MzcyOTBmOGY0ZjI4Zjc0ZjZhMmU2MWY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChB
UFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENv
bW1vbkNyeXB0by5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9y
bVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybVdpbi5jbWFrZQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42ZjY5MTlmNzZmMTA4ZjcyZWM4ODdhMWI3MzUwNzgxNzIyYTI1OGE4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtV2luLmNtYWtlCkBAIC0wLDAgKzEs
MyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vd2luL0NyeXB0b0RpZ2Vz
dFdpbi5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDg4YzgwYWRmNmMxMWY2YzMw
ODIwM2E4ZTcyZWE0ODM2ODZmM2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML2NvbmZpZy5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLwor
CisjaWYgZGVmaW5lZChIQVZFX0NPTkZJR19IKSAmJiBIQVZFX0NPTkZJR19IICYmIGRlZmluZWQo
QlVJTERJTkdfV0lUSF9DTUFLRSkKKyNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgorI2VuZGlmCisK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3Mu
aD4KKworI2lmZGVmIF9fQVBQTEVfXworI2RlZmluZSBIQVZFX0ZVTkNfVVNMRUVQIDEKKyNlbmRp
ZiAvKiBfX0FQUExFX18gKi8KKworI2lmIE9TKFdJTkRPV1MpCisKKyNpZm5kZWYgX1dJTjMyX1dJ
Tk5UCisjZGVmaW5lIF9XSU4zMl9XSU5OVCAweDYwMQorI2VuZGlmCisKKyNpZm5kZWYgV0lOVkVS
CisjZGVmaW5lIFdJTlZFUiAweDA2MDEKKyNlbmRpZgorCisjZW5kaWYgLyogT1MoV0lORE9XUykg
Ki8KKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKy8vIFRoZXNlIHVuZGVmcyBtYXRjaCB1cCB3aXRo
IGRlZmluZXMgaW4gV2ViQ29yZVByZWZpeC5oIGZvciBNYWMgT1MgWC4KKy8vIEhlbHBzIHVzIGNh
dGNoIGlmIGFueW9uZSB1c2VzIG5ldyBvciBkZWxldGUgYnkgYWNjaWRlbnQgaW4gY29kZSBhbmQg
ZG9lc24ndCBpbmNsdWRlICJjb25maWcuaCIuCisjdW5kZWYgbmV3CisjdW5kZWYgZGVsZXRlCisj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworI2luY2x1ZGUgPGNpc282NDY+CisKKyNlbmRp
ZgorCisjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliMjA4NmE1ZWVlZmIxMTNkNWFkMjE5Y2Vm
OGI0MTk3N2Q3NGJmYWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsKKworc3Ry
dWN0IENyeXB0b0RpZ2VzdENvbnRleHQ7CisKK2NsYXNzIENyeXB0b0RpZ2VzdCB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvRGlnZXN0KTsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNz
IEFsZ29yaXRobSB7CisgICAgICAgIFNIQV8xLAorICAgICAgICBTSEFfMjI0LAorICAgICAgICBT
SEFfMjU2LAorICAgICAgICBTSEFfMzg0LAorICAgICAgICBTSEFfNTEyLAorICAgIH07CisgICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGNyZWF0ZShBbGdvcml0aG0pOwor
ICAgIH5DcnlwdG9EaWdlc3QoKTsKKworICAgIHZvaWQgYWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5w
dXQsIHNpemVfdCBsZW5ndGgpOworICAgIFZlY3Rvcjx1aW50OF90PiBjb21wdXRlSGFzaCgpOwor
Citwcml2YXRlOgorICAgIENyeXB0b0RpZ2VzdCgpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0RpZ2VzdENvbnRleHQ+IG1fY29udGV4dDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZTo6UEFMCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vY29tbW9u
Y3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Y3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM3ZTc2NmFhOGE1NjFiOTllNGU1N2RhOWUyNjkxMmMzYmU4NWJlZGMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdl
c3RDb21tb25DcnlwdG8uY3BwCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Q29t
bW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFj
ZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG0gYWxnb3JpdGhtOworICAgIHZvaWQqIGNjQ29udGV4dDsKK307CisKK2lubGlu
ZSBDQ19TSEExX0NUWCogdG9TSEExQ29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0
KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8xKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMV9DVFgqPihjb250
ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjI0Q29udGV4
dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5h
bGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lu
bGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTI1NkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCog
Y29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2
X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9T
SEEzODRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJU
KGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRl
eHQpOworfQoraW5saW5lIENDX1NIQTUxMl9DVFgqIHRvU0hBNTEyQ29udGV4dChDcnlwdG9EaWdl
c3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0g
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KKworQ3J5cHRvRGlnZXN0
OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0
KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQoreworICAgIHN3aXRjaCAo
bV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMToKKyAgICAgICAgZGVsZXRlIHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
MjQ6CisgICAgICAgIGRlbGV0ZSB0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6
CisgICAgICAgIGRlbGV0ZSB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Cisg
ICAgICAgIGRlbGV0ZSB0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAg
ICAgIGRlbGV0ZSB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KK30KKworCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9E
aWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwor
ICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBhbGdvcml0aG07CisKKyAgICBzd2l0
Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
OiB7CisgICAgICAgIENDX1NIQTFfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTFfQ1RYOworICAg
ICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0Nf
U0hBMV9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7CisgICAgICAgIENDX1NIQTI1
Nl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMjU2X0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2Nv
bnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTIyNF9Jbml0KGNvbnRl
eHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIENDX1NIQTI1Nl9DVFgqIGNvbnRleHQg
PSBuZXcgQ0NfU0hBMjU2X0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4
dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTI1Nl9Jbml0KGNvbnRleHQpOworICAgICAgICBy
ZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMzg0OiB7CisgICAgICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEy
X0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Cisg
ICAgICAgIENDX1NIQTM4NF9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0Owor
ICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7CisgICAg
ICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEyX0NUWDsKKyAgICAgICAg
ZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTUx
Ml9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90
IGxlbmd0aCkKK3sKKyAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7CisgICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6CisgICAgICAgIENDX1NIQTFfVXBkYXRl
KHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAg
ICAgICBDQ19TSEEyMjRfVXBkYXRlKHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBp
bnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIENDX1NIQTI1Nl9VcGRhdGUodG9TSEEyNTZDb250
ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgQ0NfU0hB
Mzg0X1VwZGF0ZSh0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0
aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfNTEyOgorICAgICAgICBDQ19TSEE1MTJfVXBkYXRlKHRvU0hBNTEyQ29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwor
VmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQoreworICAgIFZlY3Rv
cjx1aW50OF90PiByZXN1bHQ7CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewor
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICByZXN1bHQu
cmVzaXplKENDX1NIQTFfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NIQTFfRmluYWwocmVz
dWx0LmRhdGEoKSwgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAg
cmVzdWx0LnJlc2l6ZShDQ19TSEEyMjRfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NIQTIy
NF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTY6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjU2X0RJR0VTVF9MRU5HVEgpOworICAg
ICAgICBDQ19TSEEyNTZfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyNTZDb250ZXh0KG1fY29u
dGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMzg0OgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTM4NF9ESUdFU1Rf
TEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMzg0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMzg0
Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19T
SEE1MTJfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NIQTUxMl9GaW5hbChyZXN1bHQuZGF0
YSgpLCB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6
OlBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nY3J5cHQvQ3J5cHRv
RGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0RpZ2VzdEdDcnlwdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM3ZmVmNGZmODJjN2RkZGFjNTkwMzhiNjRm
NWViNGU2M2M5ZGFkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlw
dG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDE2IFNv
ZnRBdEhvbWUKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0
b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z2NyeXB0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsg
bmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKKyAgICBpbnQg
YWxnb3JpdGhtOworICAgIGdjcnlfbWRfaGRfdCBtZDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5
cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sK
K30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKK30KKworc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG0gYWxnb3JpdGhtKQoreworICAgIGludCBnY3J5cHRBbGdvcml0aG07CisKKyAgICBzd2l0
Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTE7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIGdj
cnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjI0OworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAgICBnY3J5cHRBbGdvcml0
aG0gPSBHQ1JZX01EX1NIQTI1NjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9N
RF9TSEEzODQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV81MTI6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBNTEyOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0
PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29y
aXRobSA9IGdjcnlwdEFsZ29yaXRobTsKKworICAgIGdjcnlfbWRfb3BlbigmZGlnZXN0LT5tX2Nv
bnRleHQtPm1kLCBnY3J5cHRBbGdvcml0aG0sIDApOworICAgIGlmICghZGlnZXN0LT5tX2NvbnRl
eHQtPm1kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBkaWdlc3Q7Cit9
CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90
IGxlbmd0aCkKK3sKKyAgICBnY3J5X21kX3dyaXRlKG1fY29udGV4dC0+bWQsIGlucHV0LCBsZW5n
dGgpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7
CisgICAgaW50IGRpZ2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFs
Z29yaXRobSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW4pOworCisgICAg
Z2NyeV9tZF9maW5hbChtX2NvbnRleHQtPm1kKTsKKyAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSwg
Z2NyeV9tZF9yZWFkKG1fY29udGV4dC0+bWQsIDApLCBkaWdlc3RMZW4pOworICAgIGdjcnlfbWRf
Y2xvc2UobV9jb250ZXh0LT5tZCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2Ny
eXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9j
cnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVhN2JhMTkw
MTQ0ZWY1OTFlNWE4MDNiM2NhZTIzMWJjNzYwYWFiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKQEAgLTAs
MCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z251dGxzL2NyeXB0by5oPgorI2luY2x1ZGUg
PGdudXRscy9nbnV0bHMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsK
Kworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIGdudXRsc19kaWdlc3RfYWxnb3Jp
dGhtX3QgYWxnb3JpdGhtOworICAgIGdudXRsc19oYXNoX2hkX3QgaGFzaDsKK307CisKK0NyeXB0
b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0
Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBn
bnV0bHNfaGFzaF9kZWluaXQobV9jb250ZXh0LT5oYXNoLCAwKTsKK30KKworc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG0gYWxnb3JpdGhtKQoreworICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgZ251dGxz
QWxnb3JpdGhtOworCisgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVU
TFNfRElHX1NIQTE7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRM
U19ESUdfU0hBMjI0OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogeworICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVU
TFNfRElHX1NIQTI1NjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05V
VExTX0RJR19TSEEzODQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdO
VVRMU19ESUdfU0hBNTEyOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAg
IGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnbnV0bHNBbGdvcml0aG07CisKKyAgICBp
bnQgcmV0ID0gZ251dGxzX2hhc2hfaW5pdCgmZGlnZXN0LT5tX2NvbnRleHQtPmhhc2gsIGdudXRs
c0FsZ29yaXRobSk7CisgICAgaWYgKHJldCAhPSBHTlVUTFNfRV9TVUNDRVNTKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBkaWdlc3Q7Cit9CisKK3ZvaWQgQ3J5cHRvRGln
ZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBn
bnV0bHNfaGFzaChtX2NvbnRleHQtPmhhc2gsIGlucHV0LCBsZW5ndGgpOworfQorCitWZWN0b3I8
dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgVmVjdG9yPHVpbnQ4
X3Q+IHJlc3VsdDsKKyAgICBpbnQgZGlnZXN0TGVuID0gZ251dGxzX2hhc2hfZ2V0X2xlbihtX2Nv
bnRleHQtPmFsZ29yaXRobSk7CisgICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RMZW4pOworCisgICAg
Z251dGxzX2hhc2hfb3V0cHV0KG1fY29udGV4dC0+aGFzaCwgcmVzdWx0LmRhdGEoKSk7CisKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uY2U3MTM0OTMwYWY5YTBlMzdlOTFjZmY2YTQwZjQyMmE1MzI4MWFhMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdp
bi5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5j
bHVkZSA8d2luY3J5cHQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsK
Kworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtIGFsZ29yaXRobTsKKyAgICBIQ1JZUFRQUk9WIGhDb250ZXh0IHsgMCB9OworICAgIEhDUllQ
VEhBU0ggaEhhc2ggeyAwIH07Cit9OworCitDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCisg
ICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCit7Cit9CisKK0NyeXB0b0Rp
Z2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7CisgICAgaWYgKEhDUllQVEhBU0ggaEhhc2ggPSBtX2Nv
bnRleHQtPmhIYXNoKQorICAgICAgICBDcnlwdERlc3Ryb3lIYXNoKGhIYXNoKTsKKyAgICBpZiAo
SENSWVBUUFJPViBoQ29udGV4dCA9IG1fY29udGV4dC0+aENvbnRleHQpCisgICAgICAgIENyeXB0
UmVsZWFzZUNvbnRleHQoaENvbnRleHQsIDApOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
RGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAg
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsK
KyAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3JpdGhtOworICAgIGlmICgh
Q3J5cHRBY3F1aXJlQ29udGV4dCgmZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBudWxscHRy
LCBudWxscHRyIC8qIHVzZSBkZWZhdWx0IHByb3ZpZGVyICovLCBQUk9WX1JTQV9BRVMsIENSWVBU
X1ZFUklGWUNPTlRFWFQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBib29sIHN1Y2Nl
ZWRlZCA9IGZhbHNlOworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKKyAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVh
dGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEExLCAwLCAwLCAmZGln
ZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKKyAgICAgICAgc3VjY2VlZGVkID0g
Q3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMjU2
LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAgICAgICAg
c3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwg
Q0FMR19TSEFfMzg0LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6
IHsKKyAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0
LT5oQ29udGV4dCwgQ0FMR19TSEFfNTEyLCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKyAgICBpZiAoc3VjY2VlZGVkKQorICAg
ICAgICByZXR1cm4gZGlnZXN0OworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIENyeXB0
b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCit7Cisg
ICAgaWYgKCFpbnB1dCB8fCAhbGVuZ3RoKQorICAgICAgICByZXR1cm47CisgICAgUkVMRUFTRV9B
U1NFUlQoQ3J5cHRIYXNoRGF0YShtX2NvbnRleHQtPmhIYXNoLCByZWludGVycHJldF9jYXN0PGNv
bnN0IEJZVEUqPihpbnB1dCksIGxlbmd0aCwgMCkpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5
cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsK
KyAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXI7CisgICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVm
ZmVyU2l6ZSA9IHNpemVvZihkaWdlc3RMZW5ndGhCdWZmZXIpOworCisgICAgUkVMRUFTRV9BU1NF
UlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5oSGFzaCwgSFBfSEFTSFNJWkUsIHJlaW50
ZXJwcmV0X2Nhc3Q8QllURSo+KCZkaWdlc3RMZW5ndGhCdWZmZXIpLCAmZGlnZXN0TGVuZ3RoQnVm
ZmVyU2l6ZSwgMCkpOworICAgIHJlc3VsdC5yZXNpemUoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKwor
ICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFzaFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQ
X0hBU0hWQUwsIHJlc3VsdC5kYXRhKCksICZkaWdlc3RMZW5ndGhCdWZmZXIsIDApKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChyZXN1bHQuc2l6ZSgpID09IGRpZ2VzdExlbmd0aEJ1ZmZlcik7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlOjpQQUwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZjNhZTg5YjAwZTNkMzRiZDk0NThjNThmZmI0NGE4ZWEy
Nzk2YjNkZC4uMWYwZTEwMzVhZDRhZDJlMWUzZjBiMTcyNWEyYWNlY2VlM2M4MGM5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTY5LDggKzY5LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9lZmwvQXVkaW9CdXNFZmwuY3BwCiAKLSAg
ICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKLQogICAgIHBs
YXRmb3JtL2VmbC9DdXJzb3JFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNw
cAogICAgIHBsYXRmb3JtL2VmbC9EcmFnSW1hZ2VFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IDYyNDIxNjI5YzVlZDUwN2E3NzM0YTNlNmRmY2QzNGE3Mjg4MWViZGYuLmIxYzZl
NmI4Y2UxMzM3ZTM4YzI4NDYzMTU0YjVmYWUxNzBjZDA0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCkBAIC02OCw4ICs2OCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAg
ICAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1c0dMaWIuY3BwCiAKLSAgICBwbGF0Zm9ybS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKLQogICAgIHBsYXRmb3JtL2dhbWVw
YWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCiAKICAgICBwbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0
aW9uUHJvdmlkZXJHZW9jbHVlMS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggYjgx
MmI5YzFhZTdmZDgzMTFhMGQwZTYzZWQ4MzNlOTAxN2FkZGZhMi4uYzk0MzdlNzNkNzBiMmVlOGZj
YWQyMzQwZGI3MmNiMzRkZjU0YTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMz
Miw4ICszMzIsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9j
b2NvYS9UaGVtZUNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvV2ViQ29yZU5TRXJyb3JFeHRy
YXMubW0KIAotICAgIHBsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAK
ICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UKaW5kZXggOGQ3ZjUwOGExMjI5NTcxNzkwN2RlZjQxNGYyZjI2NGRm
MTBjMTlhZC4uYTRhOTkwOWIxMjEzNDNjZWViYzY5YmQwMWE4MzVjMThmMTg5MDFmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTczLDggKzczLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKIAot
ICAgIHBsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAotCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAogCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5IGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9F
bmZvcmNlUEFMTGF5ZXJpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg5NmZmZjQ1MjAzOGI3NTM1NGU4MDhj
YmRlZWVjZmVkYmE2Y2E1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Njcmlw
dHMvRW5mb3JjZVBBTExheWVyaW5nLnB5CkBAIC0wLDAgKzEsNDkgQEAKKyMhL3Vzci9iaW4vZW52
IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5
cworaW1wb3J0IG9zCisKK2FyY2hpdmVGaWxlID0gc3lzLmFyZ3ZbMV0KK3NvdXJjZURpcmVjdG9y
eSA9IHN5cy5hcmd2WzJdCisKK3N5bWJvbE5hbWVzcGFjZUNvbW1hbmQgPSAibm0gLWdqICIgKyBh
cmNoaXZlRmlsZSArICIgfCBjKytmaWx0IHwgZ3JlcCBcIl5XZWJDb3JlOjpcIiB8IGdyZXAgLXYg
XCJeV2ViQ29yZTo6UEFMOjpcIiIKKworcnYgPSBvcy5zeXN0ZW0oc3ltYm9sTmFtZXNwYWNlQ29t
bWFuZCArICIgPiAvZGV2L251bGwiKQorCitpZiBydiA9PSAwOgorICAgIHByaW50KCJUaGUgZm9s
bG93aW5nIHN5bWJvbHMgYXJlIHVzZWQgb3IgZGVjbGFyZWQgaW4gUEFMIGJ1dCBhcmUgaW4gdGhl
IFdlYkNvcmUgbmFtZXNwYWNlICh3aGljaCBpcyBmb3JiaWRkZW4gdG8gcHJlc2VydmUgbGF5ZXJp
bmcpOiIpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgb3Muc3lzdGVtKHN5bWJvbE5hbWVz
cGFjZUNvbW1hbmQpCisgICAgc3lzLmV4aXQoMSkKKworaW5jbHVkZVNlYXJjaENvbW1hbmQgPSAi
ZmluZCAiICsgc291cmNlRGlyZWN0b3J5ICsgIiBcKCAtbmFtZSBcIiouY3BwXCIgLW9yIC1uYW1l
IFwiKi5oXCIgLW9yIC1uYW1lIFwiKi5tXCIgLW9yIC1uYW1lIFwiKi5tbVwiIFwpIC1leGVjIGdy
ZXAgLXFFIFwiXiMoaW5jbHVkZXxpbXBvcnQpIC5XZWJDb3JlL1wiIHt9IFw7IC1wcmludCIKKwor
cnYgPSBvcy5zeXN0ZW0oImV4aXQgJCgiICsgaW5jbHVkZVNlYXJjaENvbW1hbmQgKyAiIHwgd2Mg
LWwgKSIpCisKK2lmIHJ2ICE9IDA6CisgICAgcHJpbnQoIlRoZSBmb2xsb3dpbmcgZmlsZXMgaW4g
UEFMIGluY2x1ZGUgaGVhZGVycyBmcm9tIFdlYkNvcmUgKHdoaWNoIGlzIGZvcmJpZGRlbiB0byBw
cmVzZXJ2ZSBsYXllcmluZyk6IikKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICBvcy5zeXN0
ZW0oaW5jbHVkZVNlYXJjaENvbW1hbmQpCisgICAgc3lzLmV4aXQoMSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiYjkzYWIzZGEz
ODYzNWVmOWNlYTIyNjVhZmQ0NThjMDIxNzUwOTE3Li5lZTc3MTNlMzViYzc4Njk4ODk5MTIwMmM4
YzZlODgxZTI3YThjNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NjIxLDYgKzU2MjEsMTAgQEAKIAkJQzI4MDgzM0YxQzZE
QzI2RjAwMTQ1MUI2IC8qIEpTRm9udEZhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzNFMUM2REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNl
LmggKi87IH07CiAJCUMyODA4MzQwMUM2REMyNzUwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzNEMUM2
REMyMkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmNwcCAqLzsgfTsKIAkJQzI4MDgzNDIxQzZEQzk2
QTAwMTQ1MUI2IC8qIEpTRm9udEZhY2VDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MDgzNDExQzZEQzk2QTAwMTQ1MUI2IC8qIEpTRm9u
dEZhY2VDdXN0b20uY3BwICovOyB9OworCQlDMjlFN0M2MjFFMjRCRUM0MDBGRkVDM0QgLyogQ3J5
cHRvRGlnZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMjlFN0M2MTFFMjRCRUM0MDBGRkVDM0QgLyogQ3J5cHRvRGlnZXN0LmggKi87IH07CisJCUMy
OUU3QzY1MUUyNEJFRTYwMEZGRUMzRCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5RTdDNjQxRTI0
QkVFNjAwRkZFQzNEIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi87IH07CisJCUMy
OUU3QzZBMUUyNEMzOTAwMEZGRUMzRCAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOUU3QzY5MUUyNEMzOTAwMEZGRUMzRCAvKiBjb25m
aWcuaCAqLzsgfTsKKwkJQzI5RTdDNkMxRTI0Q0MyQjAwRkZFQzNEIC8qIGxpYlBBTC5hIGluIEZy
YW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5RTdDNUExRTI0
QkMxRDAwRkZFQzNEIC8qIGxpYlBBTC5hICovOyB9OwogCQlDMkUxRjQzRjFENjI1NEUxMDA5NDYy
NUMgLyogQnJlYWtMaW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNFQTQ4MTYwOTdEOTMwMjAwOTRDOUU0IC8qIEJyZWFrTGluZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMzMwQTIyMzEzRUMx
OTZCMDAwMEI0NUIgLyogQ29sb3JDaG9vc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMzMwQTIyMTEzRUMxOTZCMDAwMEI0NUIgLyogQ29sb3JDaG9v
c2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QzMzRUU1QzQxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMzM0VF
NUMyMTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAg
Ki87IH07CkBAIC02MjYyLDggKzYyNjYsNiBAQAogCQlFMUY4MEI4ODE4MzE3MjUyMDA3ODg1QzMg
LyogQ3J5cHRvS2V5UGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFGODBCODYxODMxNzI1MjAwNzg4NUMzIC8qIENyeXB0b0tleVBhaXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUY4MEI4RDE4
MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjgwQjhCMTgzMTcyQjUwMDc4ODVDMyAvKiBK
U0NyeXB0b0tleVBhaXIuY3BwICovOyB9OwogCQlFMUY4MEI4RTE4MzE3MkI1MDA3ODg1QzMgLyog
SlNDcnlwdG9LZXlQYWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUY4MEI4QzE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmggKi87
IH07Ci0JCUUxRkUxMzY0MTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RDb21tb25Dcnlw
dG8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFG
RTEzNjIxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi87
IH07Ci0JCUUxRkUxMzY3MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzY2MTgzNDNBMTAw
MDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCAqLzsgfTsKIAkJRTFGRTEzNkExODNGRTFBQjAwODky
RjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzY4MTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgKi87IH07CiAJCUUxRkUxMzZCMTgzRkUxQUIwMDg5MkYx
MyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjkxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQLmggKi87IH07CiAJCUUxRkUxMzcwMTgzRkVDRjAwMDg5MkYxMyAvKiBD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2RTE4M0ZFQ0YwMDA4OTJGMTMgLyogQ3J5cHRvQWxn
b3JpdGhtUlNBX09BRVBNYWMuY3BwICovOyB9OwpAQCAtNjkwNSw2ICs2OTA3LDEzIEBACiAJCQly
ZW1vdGVHbG9iYWxJRFN0cmluZyA9IDQxN0RBNkNGMTM3MzRFMDIwMDdDNTdGQjsKIAkJCXJlbW90
ZUluZm8gPSBXZWJDb3JlVGVzdFN1cHBvcnQ7CiAJCX07CisJCUMyOUU3QzY2MUUyNEJGMjcwMEZG
RUMzRCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWlu
ZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFD
MDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xv
YmFsSURTdHJpbmcgPSBDMjlFN0M1OTFFMjRCQzFDMDBGRkVDM0Q7CisJCQlyZW1vdGVJbmZvID0g
UEFMOworCQl9OwogCQlERDA0MUZGMDA5RDlFMzI1MDAxMEFGMkEgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFp
bmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICov
OwpAQCAtMTM1NDIsNiArMTM1NTEsMTIgQEAKIAkJQzI4MDgzM0QxQzZEQzIyQzAwMTQ1MUI2IC8q
IEpTRm9udEZhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNG
b250RmFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODA4MzNFMUM2REMy
MkMwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRm9udEZhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI4MDgzNDEx
QzZEQzk2QTAwMTQ1MUI2IC8qIEpTRm9udEZhY2VDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNGb250RmFjZUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyOUU3QzVBMUUyNEJDMUQwMEZGRUMzRCAvKiBsaWJQQUwuYSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsg
aW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliUEFMLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCUMyOUU3QzYxMUUyNEJFQzQwMEZGRUMzRCAvKiBDcnlwdG9EaWdl
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvRGlnZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOUU3QzY0MUUyNEJFRTYwMEZGRUMzRCAvKiBD
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzI5RTdDNjkxRTI0QzM5MDAwRkZFQzNEIC8qIGNvbmZpZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzI5RTdDNkIxRTI0QzdEMTAwRkZFQzNEIC8qIFBBTC54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBQQUwueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyOUU3QzZGMUUyNTZEODAwMEZGRUMzRCAvKiBFbmZvcmNlUEFMTGF5ZXJp
bmcucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUgPSBFbmZvcmNlUEFMTGF5
ZXJpbmcucHk7IHBhdGggPSBTY3JpcHRzL0VuZm9yY2VQQUxMYXllcmluZy5weTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hv
b3Nlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvckNob29zZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzMzRUU1QzIxNEZCNDk2MTAwMDIwOTVBIC8q
IEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzMzRUU1QzMxNEZCNDk2MTAwMDIwOTVBIC8qIEJhc2VD
bGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNDI2Nyw4ICsxNDI4Miw2IEBACiAJCUUxRjgwQjg2MTgzMTcyNTIwMDc4ODVD
MyAvKiBDcnlwdG9LZXlQYWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENy
eXB0b0tleVBhaXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGODBCOEIxODMx
NzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0NyeXB0b0tleVBhaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMUY4MEI4QzE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3J5cHRvS2V5UGFpci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUZFMTM2MjE4MzQzNTExMDA4OTJGMTMgLyogQ3J5
cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUUxRkUxMzY2MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvRGlnZXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxRkUxMzY4MTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdv
cml0aG1SU0FfT0FFUC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxRkUxMzY5MTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2RTE4M0ZFQ0YwMDA4OTJGMTMg
LyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQ5NzgsNiArMTQ5OTEsNyBAQAogCQkJaXNhID0gUEJYRnJh
bWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJ
ZmlsZXMgPSAoCisJCQkJQzI5RTdDNkMxRTI0Q0MyQjAwRkZFQzNEIC8qIGxpYlBBTC5hIGluIEZy
YW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTIxMkIwNDhBMzAwRUQ5OEM2IC8qIEFjY2VsZXJhdGUu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTMxMkIwNDhBMzAwRUQ5OEM2
IC8qIEF1ZGlvVG9vbGJveC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQkxQUIzM0RB
NTEyNTUxRTMyMDAyNDQ1N0EgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCkBA
IC0xNDk5MSw2ICsxNTAwNSwxMyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OworCQlDMjlFN0M1NzFFMjRCQzFDMDBGRkVDM0QgLyogRnJh
bWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQlFMUJBNjcwRTE3NDJC
REUwMDBDMjAyNTEgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE1MDIxLDYg
KzE1MDQyLDcgQEAKIAkJCQlFMUJBNjcxNjE3NDJCREUwMDBDMjAyNTEgLyogbGliV2ViQ29yZVRl
c3RTaGltLmR5bGliICovLAogCQkJCTQxN0RBNkQwMTM3MzRFMDIwMDdDNTdGQiAvKiBsaWJXZWJD
b3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8sCiAJCQkJOTNGMTlCMUEwODI0NUU1QTAwMUU5QUJDIC8q
IFdlYkNvcmUuZnJhbWV3b3JrICovLAorCQkJCUMyOUU3QzVBMUUyNEJDMUQwMEZGRUMzRCAvKiBs
aWJQQUwuYSAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7CkBAIC0xNTQyNCw2ICsxNTQ0Niw3IEBACiAJCQkJMkU0MzQ2MzEwRjU0NkE2
ODAwQjBGMUJBIC8qIHdvcmtlcnMgKi8sCiAJCQkJRTFGMDQyNDMwOTgzOTM4OTAwNjY5NEVBIC8q
IHhtbCAqLywKIAkJCQk2NTY1ODBFQzA5RDEyQjIwMDAwRTYxRDcgLyogRGVyaXZlZCBTb3VyY2Vz
ICovLAorCQkJCUMyOUU3QzVGMUUyNEJDQTIwMEZGRUMzRCAvKiBQQUwgKi8sCiAJCQkJMDg5QzE2
NjVGRTg0MTE1OEMwMkFBQzA3IC8qIFJlc291cmNlcyAqLywKIAkJCQkzNzE3RDdFNDE3RUNDMzZD
MDAzQzI3NkQgLyogU2NyaXB0cyAqLywKIAkJCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcgLyog
RnJhbWV3b3JrcyAqLywKQEAgLTE2MjA0LDYgKzE2MjI3LDcgQEAKIAkJMUNERDQ0NjYwQkE5Qzgw
MDAwRjkwMTQ3IC8qIENvbmZpZ3VyYXRpb25zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlDMjlFN0M2QjFFMjRDN0QxMDBGRkVDM0QgLyogUEFMLnhjY29u
ZmlnICovLAogCQkJCTFDREQ0NUU2MEJBOUM4NDYwMEY5MDE0NyAvKiBCYXNlLnhjY29uZmlnICov
LAogCQkJCTFDREQ0NUU0MEJBOUM4NDYwMEY5MDE0NyAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcg
Ki8sCiAJCQkJNDQ5MDk4QjEwRjhGODI1MjAwNzZBMzI3IC8qIEZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnICovLApAQCAtMTY1MTYsNiArMTY1NDAsNyBAQAogCQkJCUY0ODM4OTc5MUUxREQyM0EwMDc2
QjdFQSAvKiBFZGl0aW5nSGlzdG9yeSAqLywKIAkJCQkzNzE3RDdFNTE3RUNDM0E2MDAzQzI3NkQg
LyogZXh0cmFjdC1sb2NhbGl6YWJsZS1zdHJpbmdzLnBsICovLAogCQkJCTM3RDQ1NkZCMUE5QTUw
QjYwMDMzMzBBMSAvKiBMb2NhbGl6YWJsZVN0cmluZ3MucG0gKi8sCisJCQkJQzI5RTdDNkYxRTI1
NkQ4MDAwRkZFQzNEIC8qIEVuZm9yY2VQQUxMYXllcmluZy5weSAqLywKIAkJCSk7CiAJCQluYW1l
ID0gU2NyaXB0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yMjQ4OCw3ICsyMjUx
Myw2IEBACiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAwQzFBMzU5IC8qIGF1ZGlvICovLAogCQkJCTFB
RTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKIAkJCQlBNUM5NzRDRTExNDg1RkRBMDA2
NkYyQUIgLyogY29jb2EgKi8sCi0JCQkJQ0U1MEQ4Q0UxQzg5MzJFRDAwNzJFQTVBIC8qIGNyeXB0
byAqLywKIAkJCQk1MTVCRTE4NzFENTRGNURCMDBERDdDNjggLyogZ2FtZXBhZCAqLywKIAkJCQlC
MkEwMTU5MTBBRjZDRDUzMDA2QkNFMEUgLyogZ3JhcGhpY3MgKi8sCiAJCQkJQTU5RTNDMUIxMTU4
MEYzNDAwNzI5MjhFIC8qIGlvcyAqLywKQEAgLTIyNjgyLDYgKzIyNzA2LDMyIEBACiAJCQl0YWJX
aWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCUMyOUU3QzVGMUUyNEJDQTIwMEZG
RUMzRCAvKiBQQUwgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCUMyOUU3QzY5MUUyNEMzOTAwMEZGRUMzRCAvKiBjb25maWcuaCAqLywKKwkJCQlDMjlFN0M2
MDFFMjRCQ0RGMDBGRkVDM0QgLyogY3J5cHRvICovLAorCQkJKTsKKwkJCXBhdGggPSBQQUw7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDMjlFN0M2MDFFMjRCQ0RGMDBGRkVD
M0QgLyogY3J5cHRvICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlDMjlFN0M2MzFFMjRCRUQ0MDBGRkVDM0QgLyogY29tbW9uY3J5cHRvICovLAorCQkJCUMy
OUU3QzYxMUUyNEJFQzQwMEZGRUMzRCAvKiBDcnlwdG9EaWdlc3QuaCAqLywKKwkJCSk7CisJCQlw
YXRoID0gY3J5cHRvOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzI5RTdD
NjMxRTI0QkVENDAwRkZFQzNEIC8qIGNvbW1vbmNyeXB0byAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzI5RTdDNjQxRTI0QkVFNjAwRkZFQzNEIC8qIENy
eXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8sCisJCQkpOworCQkJcGF0aCA9IGNvbW1vbmNy
eXB0bzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUM5NkY1RUJGMUI1ODcy
MjYwMDkxRUE5RCAvKiBtZWRpYXNlc3Npb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKApAQCAtMjI5MjgsMjMgKzIyOTc4LDYgQEAKIAkJCXBhdGggPSBpb3M7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlDRTUwRDhDRTFDODkzMkVEMDA3MkVB
NUEgLyogY3J5cHRvICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgK
LQkJCQlDRTUwRDhDRjFDODkzMkZCMDA3MkVBNUEgLyogY29tbW9uY3J5cHRvICovLAotCQkJCUUx
RkUxMzY2MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCAqLywKLQkJCSk7Ci0JCQlw
YXRoID0gY3J5cHRvOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJQ0U1MEQ4
Q0YxQzg5MzJGQjAwNzJFQTVBIC8qIGNvbW1vbmNyeXB0byAqLyA9IHsKLQkJCWlzYSA9IFBCWEdy
b3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTFGRTEzNjIxODM0MzUxMTAwODkyRjEzIC8qIENy
eXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8sCi0JCQkpOwotCQkJcGF0aCA9IGNvbW1vbmNy
eXB0bzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCURGOUFGRDZGMTNGQzMx
QjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTI1MjM0LDcgKzI1MjY3LDYgQEAKIAkJCQlFMTlBQzNGMTE4MjREQzc5MDAzNDk0
MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTlBQzNG
MzE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMTlBQzNGNTE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
LmggaW4gSGVhZGVycyAqLywKLQkJCQlFMUZFMTM2NzE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRv
RGlnZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTU3QThFNTE4MTczQTNBMDA5RjgyMUQgLyog
Q3J5cHRvS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI1Rjg0RTE4MjQyODlEMDBEODRDRDkg
LyogQ3J5cHRvS2V5QUVTLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI1Rjg1RTE4MkMyREY2MDBE
ODRDRDkgLyogQ3J5cHRvS2V5RGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODQzNCw2ICsyODQ2
NiwxNSBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OworCQlDMjlFN0M1ODFFMjRCQzFDMDBGRkVDM0QgLyogSGVhZGVycyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUMyOUU3QzZBMUUyNEMzOTAwMEZGRUMzRCAvKiBjb25m
aWcuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyOUU3QzYyMUUyNEJFQzQwMEZGRUMzRCAvKiBDcnlw
dG9EaWdlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQlFMUJBNjZGNjE3NDJCREUwMDBDMjAyNTEgLyog
SGVhZGVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOwogCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTI4NDgzLDYgKzI4NTI0LDcgQEAKIAkJCWJ1aWxk
UnVsZXMgPSAoCiAJCQkpOwogCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCUMyOUU3QzY3MUUyNEJG
MjcwMEZGRUMzRCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJCUREMDQxRkYxMDlEOUUz
MjUwMDEwQUYyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJKTsKIAkJCW5hbWUgPSBX
ZWJDb3JlOwpAQCAtMjg0OTEsNiArMjg1MzMsMjQgQEAKIAkJCXByb2R1Y3RSZWZlcmVuY2UgPSA5
M0YxOUIxQTA4MjQ1RTVBMDAxRTlBQkMgLyogV2ViQ29yZS5mcmFtZXdvcmsgKi87CiAJCQlwcm9k
dWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmZyYW1ld29yayI7CiAJCX07CisJCUMy
OUU3QzU5MUUyNEJDMUMwMEZGRUMzRCAvKiBQQUwgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVU
YXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gQzI5RTdDNUUxRTI0QkMxRDAwRkZF
QzNEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJQQUwi
ICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJQzI5RTdDNTYxRTI0QkMxQzAwRkZFQzNEIC8q
IFNvdXJjZXMgKi8sCisJCQkJQzI5RTdDNTcxRTI0QkMxQzAwRkZFQzNEIC8qIEZyYW1ld29ya3Mg
Ki8sCisJCQkJQzI5RTdDNTgxRTI0QkMxQzAwRkZFQzNEIC8qIEhlYWRlcnMgKi8sCisJCQkJQzI5
RTdDNkUxRTI1NkNGQjAwRkZFQzNEIC8qIEVuZm9yY2UgUEFMIExheWVyaW5nICovLAorCQkJKTsK
KwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJ
CW5hbWUgPSBQQUw7CisJCQlwcm9kdWN0TmFtZSA9IFBBTDsKKwkJCXByb2R1Y3RSZWZlcmVuY2Ug
PSBDMjlFN0M1QTFFMjRCQzFEMDBGRkVDM0QgLyogbGliUEFMLmEgKi87CisJCQlwcm9kdWN0VHlw
ZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKIAkJRTFC
QTY2RjMxNzQyQkRFMDAwQzIwMjUxIC8qIFdlYkNvcmVUZXN0U2hpbSAqLyA9IHsKIAkJCWlzYSA9
IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBFMUJBNjcxMjE3
NDJCREUwMDBDMjAyNTEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgIldlYkNvcmVUZXN0U2hpbSIgKi87CkBAIC0yODUxOCw2ICsyODU3OCwxMiBAQAogCQkJ
CUJ1aWxkSW5kZXBlbmRlbnRUYXJnZXRzSW5QYXJhbGxlbCA9IFlFUzsKIAkJCQlMYXN0U3dpZnRV
cGRhdGVDaGVjayA9IDA3MDA7CiAJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA3MDA7CisJCQkJVGFy
Z2V0QXR0cmlidXRlcyA9IHsKKwkJCQkJQzI5RTdDNTkxRTI0QkMxQzAwRkZFQzNEID0geworCQkJ
CQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9uID0gOC4yLjE7CisJCQkJCQlQcm92aXNpb25pbmdTdHls
ZSA9IEF1dG9tYXRpYzsKKwkJCQkJfTsKKwkJCQl9OwogCQkJfTsKIAkJCWJ1aWxkQ29uZmlndXJh
dGlvbkxpc3QgPSAxNDlDMjg0MzA4OTAyQjExMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJDb3JlIiAqLzsKIAkJCWNvbXBhdGliaWxpdHlWZXJz
aW9uID0gIlhjb2RlIDMuMiI7CkBAIC0yODU0Miw2ICsyODYwOCw3IEBACiAJCQkJREQwNDFGQkUw
OUQ5RERCRTAwMTBBRjJBIC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk0MTdEQTZDRjEzNzM0
RTAyMDA3QzU3RkIgLyogV2ViQ29yZVRlc3RTdXBwb3J0ICovLAogCQkJCUUxQkE2NkYzMTc0MkJE
RTAwMEMyMDI1MSAvKiBXZWJDb3JlVGVzdFNoaW0gKi8sCisJCQkJQzI5RTdDNTkxRTI0QkMxQzAw
RkZFQzNEIC8qIFBBTCAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9u
ICovCkBAIC0yODY5MSw2ICsyODc1OCwyMCBAQAogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJ
CXNoZWxsU2NyaXB0ID0gIlNSQ19ESVI9XCIkU1JDUk9PVC9Nb2R1bGVzL21vZGVybi1tZWRpYS1j
b250cm9sc1wiXG5EU1RfRElSPVwiJEJVSUxUX1BST0RVQ1RTX0RJUi8kVU5MT0NBTElaRURfUkVT
T1VSQ0VTX0ZPTERFUl9QQVRIL21vZGVybi1tZWRpYS1jb250cm9sc1wiXG5cbm1rZGlyIC1wIFwi
JERTVF9ESVJcIlxuXG5pZiBbIFwiJHtQTEFURk9STV9OQU1FfVwiID09IFwibWFjb3N4XCIgXTsg
dGhlblxuICAgIElNR19PU19QUkVGSVg9XCJtYWNPU1wiXG5maVxuXG5pZiBbIFwiJHtQTEFURk9S
TV9OQU1FfVwiID09IFwiaXBob25lb3NcIiBdIHx8IFsgXCIke1BMQVRGT1JNX05BTUV9XCIgPT0g
XCJpcGhvbmVzaW11bGF0b3JcIiBdOyB0aGVuXG4gICAgSU1HX09TX1BSRUZJWD1cImlPU1wiXG5m
aVxuXG5pZiBbIC1uIFwiJElNR19PU19QUkVGSVhcIiBdOyB0aGVuXG4gICAgbWtkaXIgLXAgXCIk
RFNUX0RJUi9pbWFnZXNcIlxuICAgIHJzeW5jIC1hcSAtLWV4Y2x1ZGUgXCIuc3ZuXCIgLS1leGNs
dWRlIFwiLkRTX1N0b3JlXCIgXCIkU1JDX0RJUi9pbWFnZXMvJElNR19PU19QUkVGSVhcIiBcIiRE
U1RfRElSL2ltYWdlc1wiXG5maVxuXG5jZCBcIiRTUkNfRElSXCJcbmNhdCBjb250cm9scy8qLmNz
cyA+IFwiJERTVF9ESVIvbW9kZXJuLW1lZGlhLWNvbnRyb2xzLmNzc1wiXG5jYXQgYGNhdCBqcy1m
aWxlc2AgPiBcIiREU1RfRElSL21vZGVybi1tZWRpYS1jb250cm9scy5qc1wiIjsKIAkJfTsKKwkJ
QzI5RTdDNkUxRTI1NkNGQjAwRkZFQzNEIC8qIEVuZm9yY2UgUEFMIExheWVyaW5nICovID0gewor
CQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkp
OworCQkJbmFtZSA9ICJFbmZvcmNlIFBBTCBMYXllcmluZyI7CisJCQlvdXRwdXRQYXRocyA9ICgK
KwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNo
ZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJweXRob24gJHtTUkNST09UfS9T
Y3JpcHRzL0VuZm9yY2VQQUxMYXllcmluZy5weSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vJHtGVUxM
X1BST0RVQ1RfTkFNRX0gJHtTUkNST09UfS9QQUwiOworCQl9OwogCQlERDA0MUZCRDA5RDlEREJF
MDAxMEFGMkEgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
QEAgLTI5MDcxLDcgKzI5MTUyLDYgQEAKIAkJCQlFMTlBQzNGMDE4MjREQzc5MDAzNDk0MjYgLyog
Q3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOUFDM0YyMTgy
NERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTE5QUMzRjQxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMi5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlFMUZFMTM2NDE4MzQzNTExMDA4OTJGMTMgLyogQ3J5cHRv
RGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNTdBOEU0MTgxNzNB
M0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNUY4NEQx
ODI0Mjg5RDAwRDg0Q0Q5IC8qIENyeXB0b0tleUFFUy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MTI1Rjg2MzE4MkMzMDNBMDBEODRDRDkgLyogQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0zMTg5Niw2ICszMTk3NiwxNCBAQAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OworCQlDMjlFN0M1NjFFMjRC
QzFDMDBGRkVDM0QgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJ
CUMyOUU3QzY1MUUyNEJFRTYwMEZGRUMzRCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCX07CiAJCUUxQkE2NzAyMTc0MkJERTAwMEMyMDI1MSAvKiBTb3VyY2VzICov
ID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwpAQCAtMzE5MjIsNiArMzIwMTAsMTEgQEAKIAkJCXRhcmdldCA9IDQxN0RB
NkNGMTM3MzRFMDIwMDdDNTdGQiAvKiBXZWJDb3JlVGVzdFN1cHBvcnQgKi87CiAJCQl0YXJnZXRQ
cm94eSA9IDQxODE2Rjg0MTM4NTlDN0QwMDU3QUFBNCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki87CiAJCX07CisJCUMyOUU3QzY3MUUyNEJGMjcwMEZGRUMzRCAvKiBQQlhUYXJnZXREZXBlbmRl
bmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IEMy
OUU3QzU5MUUyNEJDMUMwMEZGRUMzRCAvKiBQQUwgKi87CisJCQl0YXJnZXRQcm94eSA9IEMyOUU3
QzY2MUUyNEJGMjcwMEZGRUMzRCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJ
CUREMDQxRkYxMDlEOUUzMjUwMDEwQUYyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewog
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdldCA9IEREMDQxRkJFMDlEOURE
QkUwMDEwQUYyQSAvKiBEZXJpdmVkIFNvdXJjZXMgKi87CkBAIC0zMjA2NSw2ICszMjE1OCwyNyBA
QAogCQkJfTsKIAkJCW5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OworCQlDMjlFN0M1QjFFMjRCQzFE
MDBGRkVDM0QgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gQzI5RTdDNkIxRTI0QzdEMTAwRkZFQzNE
IC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFt
ZSA9IERlYnVnOworCQl9OworCQlDMjlFN0M1QzFFMjRCQzFEMDBGRkVDM0QgLyogUmVsZWFzZSAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSBDMjlFN0M2QjFFMjRDN0QxMDBGRkVDM0QgLyogUEFMLnhjY29uZmlnICov
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsK
KwkJQzI5RTdDNUQxRTI0QkMxRDAwRkZFQzNEIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
QzI5RTdDNkIxRTI0QzdEMTAwRkZFQzNEIC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCUREMDQxRkMy
MDlEOUREREMwMDEwQUYyQSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQ0RENDVFNTBCQTlDODQ2
MDBGOTAxNDcgLyogV2ViQ29yZS54Y2NvbmZpZyAqLzsKQEAgLTMyMTUzLDYgKzMyMjY3LDE2IEBA
CiAJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CiAJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwogCQl9OworCQlDMjlFN0M1RTFFMjRCQzFEMDBGRkVD
M0QgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIg
Ki8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0
aW9ucyA9ICgKKwkJCQlDMjlFN0M1QjFFMjRCQzFEMDBGRkVDM0QgLyogRGVidWcgKi8sCisJCQkJ
QzI5RTdDNUMxRTI0QkMxRDAwRkZFQzNEIC8qIFJlbGVhc2UgKi8sCisJCQkJQzI5RTdDNUQxRTI0
QkMxRDAwRkZFQzNEIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVj
dGlvbjsKKwkJfTsKIAkJREQwNDFGQzEwOUQ5REREQzAwMTBBRjJBIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMiICovID0g
ewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEExLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTEuY3BwCmluZGV4IDBjOGRmZGRkMWUwYTdhZGJhYTE4ZWY5YzUxMmE3Mjhj
OTQyYWRlMjkuLjIxMGQ5OGYzZDYwZjdhZmIzZWM5N2YwMmUyYjM0OGU3YzkyMmFkMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTEuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBU
TykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2Ny
eXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0
Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6aWRl
bnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6ZGlnZXN0KFZlY3Rv
cjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlv
bkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRv
RGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKKyAgICBhdXRv
IGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzEpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNh
bGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNz
YWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbAogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdv
cml0aG1TSEExOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEp
OworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAg
ZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNw
cAppbmRleCA2Y2ExYWVlNWE2YmI3ZDgzY2EwNTY0MTlkY2JlYmQ1MTdiOWQ2MTg1Li5iZTQ0MTk1
NzQyMjhjYjUxMDkxZmU2NWI0OGNiZjMxYzIwZmJmODc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAK
QEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVk
ZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0b0Rp
Z2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmlkZW50aWZpZXIoKSBj
b25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90
PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdv
cmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0Ojpj
cmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOworICAgIGF1dG8gZGlnZXN0
ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjI0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9p
ZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdl
LCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGht
U0hBMjI0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3Qg
PSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7
CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAg
IGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5j
cHAKaW5kZXggNzM2NjBmNTk5YWYzN2NhOWRlOWEyMTllM2Y0ZjIzNDhmNDZhYzJiMy4uNmY4MTZj
ODk0YTc5ZWU3YTZkM2JlN2JmNjk0ZDQxODkwNjBiODYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3Bw
CkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1
ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9E
aWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjppZGVudGlmaWVyKCkg
Y29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdChWZWN0b3I8dWludDhf
dD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFj
ayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
b3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGRpZ2Vz
dCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1Nik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2Fn
ZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRo
bVNIQTI1Njo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0
ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYp
OworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAg
ICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQu
Y3BwCmluZGV4IGM5Nzc1MmQ4MWMwMDU0MjM5YjBiODhjNjBhYTM0M2VmYTY1ZTE0NzcuLmRlMTE1
ODc3MDM4YjUyMTFiMDcwNTFjMjY0YjMwZWEwNTBkNDU5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNw
cApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNs
dWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRv
RGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6aWRlbnRpZmllcigp
IGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4
X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAgYXV0byBkaWdl
c3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8zODQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3Nh
Z2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0
aG1TSEEzODQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAg
ICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
LmNwcAppbmRleCAzM2U0ODNkYTE1ZDEwY2NkYjczZWUzOGY5M2ExM2Q2ZDcxODcwMmVmLi4zNjU4
OTMwMjg2YjhmMGRkM2ZjNjIyN2I4ZWNiM2UxMDQ2MGJjM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5j
cHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5j
bHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0
b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmlkZW50aWZpZXIo
KSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KFZlY3Rvcjx1aW50
OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxi
YWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOworICAgIGF1dG8gZGln
ZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfNTEyKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNz
YWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3Jp
dGhtU0hBNTEyOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
Mik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAg
ICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81TWFjLmNwcAppbmRleCBmNmFiN2EyMTU1NTNiNmNiZmI0NzMwMzU1Y2ZlNTM1
MmE5ZDAyMzU1Li43ZmNmNWUyMTY4NjU4ZjlhNzQxMTk2NjFmZDAwNGM4ZDcwYWZiODlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcApAQCAtMzAsMjYgKzMwLDI2IEBACiAKICNp
bmNsdWRlICJDb21tb25DcnlwdG9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0
aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAj
aW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0Ny
eXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBzdGQ6Om9wdGlv
bmFsPENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBjcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24pCitpbmxpbmUgc3RkOjpvcHRpb25hbDxQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBjcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChoYXNoRnVu
Y3Rpb24pIHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgotICAg
ICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOworICAgICAgICByZXR1
cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7CiAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yMjQ7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjI0OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzI1NjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsK
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6Ci0gICAgICAgIHJl
dHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKKyAgICAgICAgcmV0dXJuIFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CiAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV81MTI7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfNTEyOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQpAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiBzaWduUlNBU1NBX1BLQ1MxX3YxXzUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZgogICAg
IGF1dG8gY3J5cHRvRGlnZXN0QWxnb3JpdGhtID0gV2ViQ29yZTo6Y3J5cHRvRGlnZXN0QWxnb3Jp
dGhtKGhhc2gpOwogICAgIGlmICghY3J5cHRvRGlnZXN0QWxnb3JpdGhtKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0
b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOworICAgIGF1dG8gZGlnZXN0
ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKICAg
ICBpZiAoIWRpZ2VzdCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
IH07CiAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLCBkYXRhTGVuZ3RoKTsKQEAgLTkzLDcgKzkz
LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHZlcmlmeVJTQVNTQV9QS0NTMV92MV81KENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwKICAgICBhdXRvIGNyeXB0b0RpZ2VzdEFsZ29y
aXRobSA9IFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNoKTsKICAgICBpZiAoIWNy
eXB0b0RpZ2VzdEFsZ29yaXRobSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlv
bkVycm9yIH07Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRv
RGlnZXN0QWxnb3JpdGhtKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0Ojpj
cmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CiAgICAgaWYgKCFkaWdlc3QpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIGRpZ2VzdC0+YWRkQnl0
ZXMoZGF0YSwgZGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAppbmRleCBkZjk2MWUwMThhYjdmYTAzY2RhNTk0YjkyNDE4ZjU5NGVm
OTQ4YjhiLi4yMjI2MjIyODk5NGI1YTg3ZDg5OGNmMThiNGFmYjc0N2IyNThkNDU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTQ1LDcg
KzQ1LDYgQEAKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiQ29va2llLmgi
CiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5j
bHVkZSAiRE9NRWRpdG9yLmgiCiAjaW5jbHVkZSAiRE9NUGF0Y2hTdXBwb3J0LmgiCiAjaW5jbHVk
ZSAiRE9NV2luZG93LmgiCkBAIC03OSw2ICs3OCw3IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2lu
Y2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgPFBBTC9jcnlw
dG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlBz
ZXVkb0VsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgpAQCAtMTMxNyw3ICsxMzE3
LDcgQEAgc3RhdGljIFN0cmluZyBjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFz
aChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgIFRleHRFbmNvZGluZyBkb2N1bWVudEVuY29k
aW5nID0gZWxlbWVudC5kb2N1bWVudCgpLnRleHRFbmNvZGluZygpOwogICAgIGNvbnN0IFRleHRF
bmNvZGluZyYgZW5jb2RpbmdUb1VzZSA9IGRvY3VtZW50RW5jb2RpbmcuaXNWYWxpZCgpID8gZG9j
dW1lbnRFbmNvZGluZyA6IFVURjhFbmNvZGluZygpOwogICAgIENTdHJpbmcgY29udGVudCA9IGVu
Y29kaW5nVG9Vc2UuZW5jb2RlKFRleHROb2RlVHJhdmVyc2FsOjpjb250ZW50c0FzU3RyaW5nKGVs
ZW1lbnQpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgYXV0byBjcnlwdG9EaWdlc3Qg
PSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7
CisgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgIGNyeXB0b0RpZ2VzdC0+YWRk
Qnl0ZXMoY29udGVudC5kYXRhKCksIGNvbnRlbnQubGVuZ3RoKCkpOwogICAgIFZlY3Rvcjx1aW50
OF90PiBkaWdlc3QgPSBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCk7CiAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoInNoYTI1Ni0iLCBiYXNlNjRFbmNvZGUoZGlnZXN0LmRhdGEoKSwgZGlnZXN0LnNp
emUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAKaW5kZXggZjA1OWI2MDE0Yzg0YjdmYTRhNzM2Zjk1NGE4OTEzMTRhYjczYTVlZC4u
OTNlZWQxM2Q4ZWQ0NDQxMzg4N2Q0MTU4NGI5NjVlYjAxY2U1MzA4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0zMyw3ICsz
Myw2IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2luY2x1ZGUg
IkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZUxpc3QuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRl
ICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgpAQCAtNDUsNiArNDQsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJK
U01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0b0RpZ2Vz
dC5oPgogI2luY2x1ZGUgIlBhcnNpbmdVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJQaW5nTG9hZGVy
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkBAIC0zMDEsMTggKzMwMSwxOCBAQCBi
b29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsUG9saWNpZXNBbGxvdyhWaW9sYXRlZERpcmVj
dGl2ZUNhbGxiYWNrJiYgY2FsbGJhYwogICAgIHJldHVybiBpc0FsbG93ZWQ7CiB9CiAKLXN0YXRp
YyBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSB0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShDb250ZW50
U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtIGFsZ29yaXRobSkKK3N0YXRpYyBQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRlbnRTZWN1cml0
eVBvbGljeUhhc2hBbGdvcml0aG0gYWxnb3JpdGhtKQogewogICAgIHN3aXRjaCAoYWxnb3JpdGht
KSB7CiAgICAgY2FzZSBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfMjU2
OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CisgICAg
ICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OwogICAgIGNh
c2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAg
cmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OworICAgICAgICByZXR1cm4g
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKICAgICBjYXNlIENvbnRlbnRT
ZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIHJldHVybiBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICBy
ZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgUHJlZGljYXRlPgpAQCAtMzMzLDcgKzMzMyw3IEBAIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6SGFzaEluRW5mb3JjZWRBbmRSZXBvcnRPbmx5UG9saWNpZXNQYWlyIENvbnRlbnRT
ZWN1cml0eVBvCiAgICAgYm9vbCBmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgPSBmYWxzZTsK
ICAgICBib29sIGZvdW5kSGFzaEluUmVwb3J0T25seVBvbGljaWVzID0gZmFsc2U7CiAgICAgZm9y
IChhdXRvIGFsZ29yaXRobSA6IGFsZ29yaXRobXMpIHsKLSAgICAgICAgYXV0byBjcnlwdG9EaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0
aG0pKTsKKyAgICAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOwogICAgICAgICBjcnlwdG9E
aWdlc3QtPmFkZEJ5dGVzKGNvbnRlbnRDU3RyaW5nLmRhdGEoKSwgY29udGVudENTdHJpbmcubGVu
Z3RoKCkpOwogICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoIGhhc2ggPSB7IGFsZ29y
aXRobSwgY3J5cHRvRGlnZXN0LT5jb21wdXRlSGFzaCgpIH07CiAgICAgICAgIGlmICghZm91bmRI
YXNoSW5FbmZvcmNlZFBvbGljaWVzICYmIGFsbFBvbGljaWVzV2l0aERpc3Bvc2l0aW9uQWxsb3co
Q29udGVudFNlY3VyaXR5UG9saWN5OjpEaXNwb3NpdGlvbjo6RW5mb3JjZSwgc3RkOjpmb3J3YXJk
PFByZWRpY2F0ZT4ocHJlZGljYXRlKSwgaGFzaCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMx
ZjA3NWFhMzdjYjM0NjIwOTg0N2E1OTllMWY1NDI4NGY5ZjM4MTkuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgQ3J5cHRvRGlnZXN0X2gKLSNkZWZpbmUgQ3J5cHRvRGlnZXN0
X2gKLQotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dDsK
LQotY2xhc3MgQ3J5cHRvRGlnZXN0IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcnlwdG9E
aWdlc3QpOwotcHVibGljOgotICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKLSAgICAgICAgU0hB
XzEsCi0gICAgICAgIFNIQV8yMjQsCi0gICAgICAgIFNIQV8yNTYsCi0gICAgICAgIFNIQV8zODQs
Ci0gICAgICAgIFNIQV81MTIsCi0gICAgfTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0RpZ2VzdD4gY3JlYXRlKEFsZ29yaXRobSk7Ci0gICAgfkNyeXB0b0RpZ2VzdCgpOwotCi0g
ICAgdm9pZCBhZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVIYXNoKCk7Ci0KLXByaXZhdGU6Ci0gICAgQ3J5cHRvRGln
ZXN0KCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gbV9jb250
ZXh0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ3J5cHRvRGln
ZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25j
cnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNmZmM1NjA1MjI2YjY0YjQ5MzczYmVhNjg1ZTky
M2YwMTk5YmI0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2Vz
dENvbW1vbkNyeXB0by5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQot
I2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG0gYWxnb3JpdGhtOwotICAgIHZvaWQqIGNjQ29udGV4dDsKLX07Ci0KLWlubGluZSBD
Q19TSEExX0NUWCogdG9TSEExQ29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQot
ewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8xKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMV9DVFgqPihjb250ZXh0
LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjI0Q29udGV4dChD
cnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdv
cml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlubGlu
ZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTI1NkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29u
dGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NU
WCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEEz
ODRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNv
bnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQp
OwotfQotaW5saW5lIENDX1NIQTUxMl9DVFgqIHRvU0hBNTEyQ29udGV4dChDcnlwdG9EaWdlc3RD
b250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
Q19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLQotQ3J5cHRvRGlnZXN0OjpD
cnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQot
ewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotICAgIHN3aXRjaCAobV9j
b250ZXh0LT5hbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMToKLSAgICAgICAgZGVsZXRlIHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6
Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6Ci0g
ICAgICAgIGRlbGV0ZSB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAg
ICAgIGRlbGV0ZSB0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAg
IGRlbGV0ZSB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLX0KLQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdl
c3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCi17Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAg
IGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBhbGdvcml0aG07Ci0KLSAgICBzd2l0Y2gg
KGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7
Ci0gICAgICAgIENDX1NIQTFfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTFfQ1RYOwotICAgICAg
ICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hB
MV9Jbml0KGNvbnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7Ci0gICAgICAgIENDX1NIQTI1Nl9D
VFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMjU2X0NUWDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRl
eHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTIyNF9Jbml0KGNvbnRleHQp
OwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2OiB7Ci0gICAgICAgIENDX1NIQTI1Nl9DVFgqIGNvbnRleHQgPSBu
ZXcgQ0NfU0hBMjU2X0NUWDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9
IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTI1Nl9Jbml0KGNvbnRleHQpOwotICAgICAgICByZXR1
cm4gZGlnZXN0OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
Mzg0OiB7Ci0gICAgICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEyX0NU
WDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAg
ICAgIENDX1NIQTM4NF9Jbml0KGNvbnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAg
IH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAg
IENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEyX0NUWDsKLSAgICAgICAgZGln
ZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTUxMl9J
bml0KGNvbnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICB9Ci19Ci0K
LXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxl
bmd0aCkKLXsKLSAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Ci0gICAgICAgIENDX1NIQTFfVXBkYXRlKHRv
U0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAg
ICBDQ19TSEEyMjRfVXBkYXRlKHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1
dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yNTY6Ci0gICAgICAgIENDX1NIQTI1Nl9VcGRhdGUodG9TSEEyNTZDb250ZXh0
KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgQ0NfU0hBMzg0
X1VwZGF0ZSh0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
NTEyOgotICAgICAgICBDQ19TSEE1MTJfVXBkYXRlKHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQu
Z2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotVmVj
dG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIFZlY3Rvcjx1
aW50OF90PiByZXN1bHQ7Ci0gICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewotICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICByZXN1bHQucmVz
aXplKENDX1NIQTFfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTFfRmluYWwocmVzdWx0
LmRhdGEoKSwgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgcmVz
dWx0LnJlc2l6ZShDQ19TSEEyMjRfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTIyNF9G
aW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6
Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjU2X0RJR0VTVF9MRU5HVEgpOwotICAgICAg
ICBDQ19TSEEyNTZfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4
dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMzg0OgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTM4NF9ESUdFU1RfTEVO
R1RIKTsKLSAgICAgICAgQ0NfU0hBMzg0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMzg0Q29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEE1
MTJfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTUxMl9GaW5hbChyZXN1bHQuZGF0YSgp
LCB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2Vz
dEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0RpZ2VzdEdDcnlwdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhM2M4YmYy
NDNkYzA3MmFiYmE4NDYxODk3MzNhMGY1M2ZkNmMwNGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dj
cnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChD
KSAyMDE2IFNvZnRBdEhvbWUKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8Z2NyeXB0Lmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIGludCBhbGdvcml0
aG07Ci0gICAgZ2NyeV9tZF9oZF90IG1kOwotfTsKLQotQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdl
c3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQotewotfQotCi1D
cnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBh
bGdvcml0aG0pCi17Ci0gICAgaW50IGdjcnlwdEFsZ29yaXRobTsKLQotICAgIHN3aXRjaCAoYWxn
b3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Ci0gICAg
ICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgZ2NyeXB0QWxn
b3JpdGhtID0gR0NSWV9NRF9TSEEyMjQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdD
UllfTURfU0hBMjU2OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMzg0OgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTM4
NDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzUxMjoKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEE1MTI7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2Vz
dChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0g
Z2NyeXB0QWxnb3JpdGhtOwotCi0gICAgZ2NyeV9tZF9vcGVuKCZkaWdlc3QtPm1fY29udGV4dC0+
bWQsIGdjcnlwdEFsZ29yaXRobSwgMCk7Ci0gICAgaWYgKCFkaWdlc3QtPm1fY29udGV4dC0+bWQp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGRpZ2VzdDsKLX0KLQotdm9p
ZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3Ro
KQotewotICAgIGdjcnlfbWRfd3JpdGUobV9jb250ZXh0LT5tZCwgaW5wdXQsIGxlbmd0aCk7Ci19
Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBp
bnQgZGlnZXN0TGVuID0gZ2NyeV9tZF9nZXRfYWxnb19kbGVuKG1fY29udGV4dC0+YWxnb3JpdGht
KTsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGRpZ2VzdExlbik7Ci0KLSAgICBnY3J5X21k
X2ZpbmFsKG1fY29udGV4dC0+bWQpOwotICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBnY3J5X21k
X3JlYWQobV9jb250ZXh0LT5tZCwgMCksIGRpZ2VzdExlbik7Ci0gICAgZ2NyeV9tZF9jbG9zZSht
X2NvbnRleHQtPm1kKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nbnV0
bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0
by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggODlhNWQ4MWYyYjRiZTI3MzJjZWUzZTUyNjMzODZlZDU5Y2IyMTRkZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNsdWRlIDxnbnV0bHMvZ251dGxzLmg+Ci0jaW5j
bHVkZSA8Z251dGxzL2NyeXB0by5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBD
cnlwdG9EaWdlc3RDb250ZXh0IHsKLSAgICBnbnV0bHNfZGlnZXN0X2FsZ29yaXRobV90IGFsZ29y
aXRobTsKLSAgICBnbnV0bHNfaGFzaF9oZF90IGhhc2g7Ci19OwotCi1DcnlwdG9EaWdlc3Q6OkNy
eXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCi17
Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci0gICAgZ251dGxzX2hhc2hf
ZGVpbml0KG1fY29udGV4dC0+aGFzaCwgMCk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9E
aWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29y
aXRobSkKLXsKLSAgICBnbnV0bHNfZGlnZXN0X2FsZ29yaXRobV90IGdudXRsc0FsZ29yaXRobTsK
LQotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzE6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEx
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzIyNDogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTIy
NDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yNTY6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEy
NTY7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMzg0OiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hB
Mzg0OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzUxMjogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NI
QTUxMjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQotICAgIHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1f
Y29udGV4dC0+YWxnb3JpdGhtID0gZ251dGxzQWxnb3JpdGhtOwotCi0gICAgaW50IHJldCA9IGdu
dXRsc19oYXNoX2luaXQoJmRpZ2VzdC0+bV9jb250ZXh0LT5oYXNoLCBnbnV0bHNBbGdvcml0aG0p
OwotICAgIGlmIChyZXQgIT0gR05VVExTX0VfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICByZXR1cm4gZGlnZXN0OwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0
ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgZ251dGxzX2hhc2go
bV9jb250ZXh0LT5oYXNoLCBpbnB1dCwgbGVuZ3RoKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENy
eXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7
Ci0gICAgaW50IGRpZ2VzdExlbiA9IGdudXRsc19oYXNoX2dldF9sZW4obV9jb250ZXh0LT5hbGdv
cml0aG0pOwotICAgIHJlc3VsdC5yZXNpemUoZGlnZXN0TGVuKTsKLQotICAgIGdudXRsc19oYXNo
X291dHB1dChtX2NvbnRleHQtPmhhc2gsIHJlc3VsdC5kYXRhKCkpOwotCi0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3NmNjMTkyYzJiMzAzOTU5NDMwZjI0OWM3MzYzNGIxMzljN2E4
YTQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8d2luY3J5cHQuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAg
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOwotICAgIEhDUllQVFBST1YgaENvbnRl
eHQgeyAwIH07Ci0gICAgSENSWVBUSEFTSCBoSGFzaCB7IDAgfTsKLX07Ci0KLUNyeXB0b0RpZ2Vz
dDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4
dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLSAgICBpZiAoSENS
WVBUSEFTSCBoSGFzaCA9IG1fY29udGV4dC0+aEhhc2gpCi0gICAgICAgIENyeXB0RGVzdHJveUhh
c2goaEhhc2gpOwotICAgIGlmIChIQ1JZUFRQUk9WIGhDb250ZXh0ID0gbV9jb250ZXh0LT5oQ29u
dGV4dCkKLSAgICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ29udGV4dCwgMCk7Ci19Ci0KLXN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKEFsZ29yaXRo
bSBhbGdvcml0aG0pCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0
KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBh
bGdvcml0aG07Ci0gICAgaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZkaWdlc3QtPm1fY29udGV4
dC0+aENvbnRleHQsIG51bGxwdHIsIG51bGxwdHIgLyogdXNlIGRlZmF1bHQgcHJvdmlkZXIgKi8s
IFBST1ZfUlNBX0FFUywgQ1JZUFRfVkVSSUZZQ09OVEVYVCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7Ci0gICAgc3dpdGNoIChhbGdvcml0aG0p
IHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewotICAgICAgICBz
dWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBD
QUxHX1NIQTEsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Njogewot
ICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhD
b250ZXh0LCBDQUxHX1NIQV8yNTYsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzM4NDogewotICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5t
X2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8zODQsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4
dC0+aEhhc2gpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzUxMjogewotICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhh
c2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV81MTIsIDAsIDAsICZkaWdl
c3QtPm1fY29udGV4dC0+aEhhc2gpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQotICAg
IGlmIChzdWNjZWVkZWQpCi0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwg
c2l6ZV90IGxlbmd0aCkKLXsKLSAgICBpZiAoIWlucHV0IHx8ICFsZW5ndGgpCi0gICAgICAgIHJl
dHVybjsKLSAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEhhc2hEYXRhKG1fY29udGV4dC0+aEhhc2gs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQllURSo+KGlucHV0KSwgbGVuZ3RoLCAwKSk7Ci19Ci0K
LVZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBWZWN0
b3I8dWludDhfdD4gcmVzdWx0OwotICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlcjsKLSAgICBE
V09SRCBkaWdlc3RMZW5ndGhCdWZmZXJTaXplID0gc2l6ZW9mKGRpZ2VzdExlbmd0aEJ1ZmZlcik7
Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNo
LCBIUF9IQVNIU0laRSwgcmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oJmRpZ2VzdExlbmd0aEJ1ZmZl
ciksICZkaWdlc3RMZW5ndGhCdWZmZXJTaXplLCAwKSk7Ci0gICAgcmVzdWx0LnJlc2l6ZShkaWdl
c3RMZW5ndGhCdWZmZXIpOwotCi0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0o
bV9jb250ZXh0LT5oSGFzaCwgSFBfSEFTSFZBTCwgcmVzdWx0LmRhdGEoKSwgJmRpZ2VzdExlbmd0
aEJ1ZmZlciwgMCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5zaXplKCkgPT0gZGlnZXN0
TGVuZ3RoQnVmZmVyKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGMzNDU1N2Q5N2NjZTcwYTEyNzA2OGZi
YjQwZjg2NGE0NDg2NTRhM2EuLmQ0YmQ4YWUwM2VlNGRhY2NjYTZlYmJlMTdhYjc3N2U2ZWRjYmI2
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3Vw
TmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zMSwxMCArMzEsMTAgQEAKIAogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5o
IgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRl
IDxQQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgi
CiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KQEAg
LTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZURhdGEpCiAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICAgICAgYXV0byBkaWdlc3QgPSBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAg
ICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhjZXJ0
aWZpY2F0ZURhdGEtPmRhdGEsIGNlcnRpZmljYXRlRGF0YS0+bGVuKTsKIAogICAgICAgICBhdXRv
IGhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2Uv
V2ViS2l0RlMuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UKaW5kZXggMjlhMDk2
OTAzOGZhYTc0NGUxYThjNThmMzU2YWQwNzNmMDA1MjViZC4uNTEzMGZmY2JjYzdjOWNlNzUxNGFm
NGQ1NTNiZDhhNGYwNTAxNDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZTLmNt
YWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZQpAQCAtMTAsNiArMTAsOSBAQCBl
bmRpZiAoKQogaWYgKE5PVCBXRUJDT1JFX0RJUikKICAgICBzZXQoV0VCQ09SRV9ESVIgIiR7Q01B
S0VfU09VUkNFX0RJUn0vU291cmNlL1dlYkNvcmUiKQogZW5kaWYgKCkKK2lmIChOT1QgUEFMX0RJ
UikKKyAgICBzZXQoUEFMX0RJUiAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViQ29yZS9Q
QUwiKQorZW5kaWYgKCkKIGlmIChOT1QgV0VCS0lUX0RJUikKICAgICBzZXQoV0VCS0lUX0RJUiAi
JHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViS2l0IikKIGVuZGlmICgpCmRpZmYgLS1naXQg
YS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CmluZGV4IDc5YTE3YmFjYTBkZjUzMjhl
N2IzZDExOTcyYmI2YjdiNDdlMmU2ZmEuLjdhYzlkOGMwZjFiZDhjMjIzMjlkMDAwZjljODA1OTU1
NTYzZTU2ZWUgMTAwNjQ0Ci0tLSBhL0NNYWtlTGlzdHMudHh0CisrKyBiL0NNYWtlTGlzdHMudHh0
CkBAIC0xMTUsNiArMTE1LDcgQEAgZWxzZSAoKQogICAgIHNldChXZWJDb3JlX0xJQlJBUllfVFlQ
RSBTVEFUSUMpCiBlbmRpZiAoKQogCitzZXQoUEFMX0xJQlJBUllfVFlQRSBTVEFUSUMpCiBzZXQo
V2ViS2l0X0xJQlJBUllfVFlQRSBTSEFSRUQpCiBzZXQoV2ViS2l0Ml9MSUJSQVJZX1RZUEUgU0hB
UkVEKQogc2V0KFdlYkNvcmVUZXN0U3VwcG9ydF9MSUJSQVJZX1RZUEUgU1RBVElDKQpkaWZmIC0t
Z2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDE0ZjY0NzE2MDhlOTRlYTk0ZTdkMmRi
ZmZhYmQ2ZjRiOGU1Y2Q3M2UuLmYyYmY3NWQ1YTlhNjQ1NTRhZDU5NTkxYmJiM2ZiYzkwMjNmY2Iz
YmYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxNy0wMS0xMCAgRG9uIE9sbXN0ZWFkIDxkb24ub2xtc3RlYWRAYW0uc29ueS5jb20+IGFu
ZCBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50
cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIFNvdXJjZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
V2ViS2l0RlMuY21ha2U6CisKIDIwMTYtMTItMjEgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVs
ZW5AeWFuZGV4LnJ1PgogCiAgICAgICAgIHNldCBQWVRIT05QQVRIIGluIHNlcGFyYXRlIENPTU1B
TkQgZG9lc24ndCB3b3JrIHdpdGggYWxsIENNYWtlIGdlbmVyYXRvcnMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298555</attachid>
            <date>2017-01-10 22:43:26 -0800</date>
            <delta_ts>2017-01-19 18:34:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20170110224149.patch</filename>
            <type>text/plain</type>
            <size>95750</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwNTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Q2NmQxNWI1NDIyY2U1
M2U2Y2QxYTQ5NmMyOWY0M2NjNjY3NDRjZi4uYTUzNDE5YTJiYWQzNzVlYmYwOTQ0NjNmMTYwMTgz
Njg4MTRkNjZjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE3LTAxLTEwICBEb24g
T2xtc3RlYWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4gYW5kIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZv
cm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEluIG9yZGVyIHRvIGVuZm9yY2UgbGF5ZXJpbmcgYW5kIHByb21v
dGUgdGVzdGFiaWxpdHksIFdlYkNvcmUvcGxhdGZvcm0gZmlsZXMKKyAgICAgICAgc2hvdWxkIGJl
IGNvbXBpbGVkIGluIHRoZWlyIG93biB0YXJnZXQuIFRoaXMgbmV3IHRhcmdldCBjYW4gZW5mb3Jj
ZSBsYXllcmluZworICAgICAgICBhbmQgY2FuIGJlIHRlc3RlZCB3aXRoIHVuaXQgdGVzdHMgaW4g
YWRkaXRpb24gdG8gbGF5b3V0IHRlc3RzLgorCisgICAgICAgIFRoZSBuYW1lIG9mIHRoaXMgbmV3
IHRhcmdldCBpcyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIsIG9yICJQQUwuIgorICAg
ICAgICBUaGlzIGNvbXByaXNlcyBvZiBhIG5ldyBkaXJlY3RvcnkgaW4gV2ViQ29yZSB3aGljaCB3
aWxsIGJlIHRoZSBkZXN0aW5hdGlvbgorICAgICAgICBmb3IgZmlsZXMgbWlncmF0ZWQgZnJvbSBX
ZWJDb3JlL3BsYXRmb3JtLiBUaGlzIG5ldyBmb2xkZXIsIGFuZCBpdHMgYXNzb2NpYXRlZAorICAg
ICAgICB0YXJnZXQsIHdpbGwgbWFpbnRhaW4gbGF5ZXJpbmcgaW52YXJpYW50cy4gVGhlc2UgaW52
YXJpYW50cyBhcmUgZW5mb3JjZWQgYXQKKyAgICAgICAgYnVpbGQtdGltZSB3aXRoIGEgYnVpbGQg
c3RlcCB3aGljaCBwcm9jZXNzZXMgdGhlIHN5bWJvbHMgd2l0aGluIHRoZSBjb21waWxlZAorICAg
ICAgICBhcmNoaXZlIGZpbGUgYXMgd2VsbCBhcyB0aGUgI2luY2x1ZGUgZGlyZWN0aXZlcyBpbnNp
ZGUgdGhlIHNvdXJjZSBmaWxlcy4KKyAgICAgICAgRmlsZXMgd2lsbCBiZSBtaWdyYXRlZCBpbnRv
IHRoaXMgbmV3IHRhcmdldC9kaXJlY3RvcnkgcGllY2UtYnktcGllY2UsIGFuZCB0aGUKKyAgICAg
ICAgbWlncmF0aW9uIG9mIGEgZmlsZSB3aWxsIGJlIHBlcmZvcm1lZCBhcyBzb29uIGFzIGl0IGNh
biBiZSBtaWdyYXRlZCB3aXRob3V0CisgICAgICAgIHZpb2xhdGluZyBsYXllcmluZy4KKworICAg
ICAgICBXaXRoaW4gV2ViQ29yZSwgZmlsZXMgc2hvdWxkIGluY2x1ZGUgZmlsZXMgaW4gUEFMIHVz
aW5nIHRoZSBjb252ZW50aW9uCisgICAgICAgICNpbmNsdWRlIDxQQUwvZm9vLmg+LiBTeW1ib2xz
IHdpdGhpbiBQQUwgYXJlIHBsYWNlZCB3aXRoaW4gYSBuZXcgbmFtZXNwYWNlLAorICAgICAgICBX
ZWJDb3JlOjpQQUwsIGFuZCB0aGVyZWZvcmUgd2hlbiB1c2VkIGluc2lkZSBXZWJDb3JlIHNob3Vs
ZCBiZSByZWZlcnJlZCB0bworICAgICAgICBhcyBQQUw6OkZvby4KKworICAgICAgICBUaGUgZmly
c3Qgc2V0IG9mIGZpbGVzIHRvIG1vdmUgaW50byB0aGUgbmV3IHBsYXRmb3JtIGlzIHRoZSBjcnlw
dG8vIHN1YmRpcmVjdG9yeQorICAgICAgICBiZWNhdXNlIGl0IGlzIGJvdGggc2ltcGxlIGJ1dCBh
bHNvIGluY2x1ZGVzIHBsYXRmb3JtLWRlcGVuZGVudCBmaWxlcy4KKworICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9QQUwueGNjb25maWc6IEFk
ZGVkLiBQQUwtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zLgorICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6IE5lZWQgdG8gdXBkYXRlIHRoZSBzZWFyY2ggcGF0
aHMgc28gZmlsZXMgY2FuCisgICAgICAgIGluY2x1ZGUgUEFMIGZpbGVzLgorICAgICAgICAqIFBB
TC9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3JtRWZsLmNtYWtl
OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvUGxhdGZvcm1HVEsuY21ha2U6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9QbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQuCisgICAgICAgICogUEFML1BsYXRmb3Jt
V2luLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvY29uZmlnLmg6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmguCisgICAgICAgICogUEFML2NyeXB0by9j
b21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcC4KKyAgICAgICAgKiBQQUwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RH
Q3J5cHQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dj
cnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwLgorICAgICAgICAqIFBBTC9jcnlwdG8vZ251dGxz
L0NyeXB0b0RpZ2VzdEdudVRMUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAuCisgICAgICAgICogUEFM
L2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcC4KKyAgICAgICAgKiBQ
bGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAg
ICAgKiBTY3JpcHRzL0VuZm9yY2VQQUxMYXllcmluZy5weTogQWRkZWQuIFRoaXMgaXMgdGhlIGxh
eWVyaW5nIGVuZm9yY2VtZW50IG1lY2hhbmlzbS4KKyAgICAgICAgSXQgY2hlY2tzIGJvdGggc3lt
Ym9sIG5hbWVzIGluIHRoZSBjb21waWxlZCAuYSBmaWxlIGFzIHdlbGwgYXMgaW5jbHVkZSBkaXJl
Y3RpdmVzIGluCisgICAgICAgIHRoZSBzb3VyY2UgY29kZS4KKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCB0aGUgbmV3IFBBTCB0YXJnZXQuCisgICAgICAg
ICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6IFVwZGF0ZSB0byB1
c2UgdGhlIFBBTCBzeW1ib2wgbmFtaW5nCisgICAgICAgIGNvbnZlbnRpb24uCisgICAgICAgIChX
ZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHA6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjpz
aWduUlNBU1NBX1BLQ1MxX3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UlNBU1NBX1BL
Q1MxX3YxXzUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6IERp
dHR0by4KKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEy
NTZIYXNoKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJblBv
bGljaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNz
aW9uLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIb3N0VExTQ2VydGlmaWNhdGVTZXQ6
OmNvbXB1dGVDZXJ0aWZpY2F0ZUhhc2gpOgorCiAyMDE3LTAxLTEwICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBKU1NvdXJjZUNvZGUg
dG8gcHJvcGFnYXRlIFNvdXJjZUNvZGUgaW4gbW9kdWxlIHBpcGVsaW5lCmRpZmYgLS1naXQgYS9T
b3VyY2UvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvQ01ha2VMaXN0cy50eHQKaW5kZXggMWI4YTJk
Y2I1MDRmYjU1NmFiYzVmNTgzYjc2YmUzOGQ5MmYwZmRmMS4uMTVmZGYyMjRhODk2NmJlMTFkY2Y2
M2UyZmE4ZjU4N2EwM2U3MjY0NCAxMDA2NDQKLS0tIGEvU291cmNlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9DTWFrZUxpc3RzLnR4dApAQCAtNDYsNiArNDYsNyBAQCBXRUJLSVRfU0VUX0VY
VFJBX0NPTVBJTEVSX0ZMQUdTKFdURiAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogV0VC
S0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhKYXZhU2NyaXB0Q29yZSAke0FERElUSU9OQUxf
Q09NUElMRVJfRkxBR1N9KQogCiBpZiAoRU5BQkxFX1dFQkNPUkUpCisgICAgV0VCS0lUX1NFVF9F
WFRSQV9DT01QSUxFUl9GTEFHUyhQQUwgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKICAg
ICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmVUZXN0U3VwcG9ydCAke0FE
RElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJf
RkxBR1MoV2ViQ29yZSAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9T
RVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29yZURlcml2ZWRTb3VyY2VzICR7QURESVRJT05B
TF9DT01QSUxFUl9GTEFHU30pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDQ4MTk3YjJkYjI5NTNm
NjM1ZGRiYzliYjBhMDU1MzM1YWNhOTI1NmYuLmRkODA2NmZlNWQ1N2I2ZjJjZjk5OTI4ZjgyYzky
YTBmMmY5NTA0MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xLDYgKzEsNyBAQAogY21ha2Vf
bWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuOC4xMikKIGluY2x1ZGUoV2ViS2l0Q29tbW9uKQog
c2V0X3Byb3BlcnR5KERJUkVDVE9SWSAuIFBST1BFUlRZIEZPTERFUiAiV2ViQ29yZSIpCithZGRf
c3ViZGlyZWN0b3J5KFBBTCkKIAogc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpAQCAtMjk1Miw2ICsyOTUzLDcgQEAgc2V0KFdlYkNvcmVf
UExVR19JTlNfUkVTT1VSQ0VTCiBzZXQoV2ViQ29yZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJS
QVJJRVN9CiAgICAgSmF2YVNjcmlwdENvcmUke0RFQlVHX1NVRkZJWH0KKyAgICBQQUwKICkKIAog
aWYgKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmln
dXJhdGlvbnMvUEFMLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5YmEyZWQwNjJkZTk0MWI5NjkwMmNh
NDRjZWFhMWMwZTQ3MTc5NzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9QQUwueGNjb25maWcKQEAgLTAsMCArMSwzNiBAQAorLy8gQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
Ky8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVkZSAiV2ViQ29yZS54Y2NvbmZpZyIKKworSU5T
VEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfJChDT05GSUdVUkFUSU9OKSk7CitJTlNUQUxMX1BB
VEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwvbGliOworCitTS0lQX0lOU1RBTEwgPSAkKFNLSVBf
SU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFMTCkpOworU0tJUF9JTlNUQUxMXyA9IFlFUzsKK1NL
SVBfSU5TVEFMTF9OTyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9ZRVMgPSBOTzsKKworUFJPRFVDVF9O
QU1FID0gUEFMOworRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CitFWFBPUlRFRF9TWU1CT0xTX0ZJ
TEUgPSA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3Jl
LnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZp
ZwppbmRleCBjNDg4ZjgwNGZmYjAwNjc0YmJlOThhMWQyODU2YjM2MGRhYzBjOGEzLi41OWYzOGU1
MGNiODNlZjRjODk1ZDA1MTA0ODM4YmQ5NTQ3NmNjMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKQEAgLTQ2LDcgKzQ2LDcgQEAgT1RIRVJf
Q1BMVVNQTFVTRkxBR1MgPSAkKE9USEVSX0NGTEFHUyk7CiAKIFdFQktJVEFERElUSU9OU19IRUFE
RVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRl
L1dlYktpdEFkZGl0aW9ucyAkKFNES1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0
aW9uczsKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9IEZvcndhcmRpbmdIZWFkZXJzIGljdSAvdXNy
L2luY2x1ZGUvbGlieHNsdCAvdXNyL2luY2x1ZGUvbGlieG1sMiAiJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUiICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xv
Y2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoSEVB
REVSX1NFQVJDSF9QQVRIUyk7CitIRUFERVJfU0VBUkNIX1BBVEhTID0gRm9yd2FyZGluZ0hlYWRl
cnMgaWN1ICQoU1JDUk9PVCkgL3Vzci9pbmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnht
bDIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlM
VF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFE
RVJfU0VBUkNIX1BBVEhTKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUg
PSBJbmZvLnBsaXN0OwogSU5TVEFMTF9QQVRIID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZh
dGVGcmFtZXdvcmtzOwogSU5TVEFMTF9QQVRIW3Nkaz1tYWNvc3gqXSA9ICQoV0VCQ09SRV9GUkFN
RVdPUktTX0RJUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYwNzU3
M2JiYjQ4YTc2NWYzM2Q4ZTdhMDU1NDIzNDZlNzRlMTg5YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDM4IEBACitzZXQoUEFM
X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAiJHtQQUxfRElSfSIKKyAgICAiJHtQQUxfRElSfS9j
cnlwdG8iCispCisKK3NldChQQUxfU09VUkNFUworKQorCitzZXQoUEFMX0xJQlJBUklFUworICAg
IFdURgorKQorCitXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKworV0VC
S0lUX1dSQVBfU09VUkNFTElTVCgke1BBTF9TT1VSQ0VTfSkKK1dFQktJVF9GUkFNRVdPUksoUEFM
KQorCitpZiAoVU5JWCkKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAgIFRBUkdFVCBQ
QUwKKyAgICAgICAgUE9TVF9CVUlMRAorICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFC
TEV9ICR7V0VCQ09SRV9ESVJ9L1NjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5ICQ8VEFSR0VU
X0ZJTEU6UEFMPiAke1BBTF9ESVJ9CisgICAgICAgIFZFUkJBVElNKQorZW5kaWYgKCkKKworaWYg
KE1TVkMpCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAg
ICAgIFBSRV9CVUlMRAorICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJ
VF9MSUJSQVJJRVNfRElSfS90b29scy9zY3JpcHRzL2F1dG8tdmVyc2lvbi5wbCAke0RFUklWRURf
U09VUkNFU19ESVJ9CisgICAgICAgIFZFUkJBVElNKQorCisgICAgYWRkX2N1c3RvbV9jb21tYW5k
KAorICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBPU1RfQlVJTEQKKyAgICAgICAgQ09NTUFO
RCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVRfTElCUkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0
cy92ZXJzaW9uLXN0YW1wLnBsICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0gJDxUQVJHRVRfRklMRTpQ
QUw+CisgICAgICAgIFZFUkJBVElNKQorZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUVm
bC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NzVjMTg5ODRhZTg5YjljZWFhYjI1YjU3ZmRhMDZhMWExNWZj
NjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8v
Z2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybUdU
Sy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43NzVjMTg5ODRhZTg5YjljZWFhYjI1YjU3ZmRhMDZhMWExNWZj
NjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtR1RLLmNt
YWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8v
Z2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybU1h
Yy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZjk2OGVjNGQ5OGU0MWY3MzcyOTBmOGY0ZjI4Zjc0ZjZhMmU2
MWY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BsYXRmb3JtTWFjLmNt
YWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8v
Y29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKKykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9QbGF0Zm9ybVdpbi5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjY5MTlmNzZmMTA4ZjcyZWM4ODdhMWI3
MzUwNzgxNzIyYTI1OGE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1Bs
YXRmb3JtV2luLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMK
KyAgICBjcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9jb25maWcuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41NDg4YzgwYWRmNmMxMWY2YzMwODIwM2E4ZTcyZWE0ODM2ODZmM2Y0Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oCkBAIC0wLDAgKzEsNTggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWYgZGVmaW5lZChIQVZFX0NPTkZJR19IKSAm
JiBIQVZFX0NPTkZJR19IICYmIGRlZmluZWQoQlVJTERJTkdfV0lUSF9DTUFLRSkKKyNpbmNsdWRl
ICJjbWFrZWNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKwor
I2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKworI2lmZGVmIF9fQVBQTEVfXworI2RlZmlu
ZSBIQVZFX0ZVTkNfVVNMRUVQIDEKKyNlbmRpZiAvKiBfX0FQUExFX18gKi8KKworI2lmIE9TKFdJ
TkRPV1MpCisKKyNpZm5kZWYgX1dJTjMyX1dJTk5UCisjZGVmaW5lIF9XSU4zMl9XSU5OVCAweDYw
MQorI2VuZGlmCisKKyNpZm5kZWYgV0lOVkVSCisjZGVmaW5lIFdJTlZFUiAweDA2MDEKKyNlbmRp
ZgorCisjZW5kaWYgLyogT1MoV0lORE9XUykgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKy8v
IFRoZXNlIHVuZGVmcyBtYXRjaCB1cCB3aXRoIGRlZmluZXMgaW4gV2ViQ29yZVByZWZpeC5oIGZv
ciBNYWMgT1MgWC4KKy8vIEhlbHBzIHVzIGNhdGNoIGlmIGFueW9uZSB1c2VzIG5ldyBvciBkZWxl
dGUgYnkgYWNjaWRlbnQgaW4gY29kZSBhbmQgZG9lc24ndCBpbmNsdWRlICJjb25maWcuaCIuCisj
dW5kZWYgbmV3CisjdW5kZWYgZGVsZXRlCisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKwor
I2luY2x1ZGUgPGNpc282NDY+CisKKyNlbmRpZgorCisjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5
cGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjliMjA4NmE1ZWVlZmIxMTNkNWFkMjE5Y2VmOGI0MTk3N2Q3NGJmYWEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeyBuYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQ7CisKK2Ns
YXNzIENyeXB0b0RpZ2VzdCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvRGlnZXN0
KTsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7CisgICAgICAgIFNIQV8xLAor
ICAgICAgICBTSEFfMjI0LAorICAgICAgICBTSEFfMjU2LAorICAgICAgICBTSEFfMzg0LAorICAg
ICAgICBTSEFfNTEyLAorICAgIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9E
aWdlc3Q+IGNyZWF0ZShBbGdvcml0aG0pOworICAgIH5DcnlwdG9EaWdlc3QoKTsKKworICAgIHZv
aWQgYWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOworICAgIFZlY3Rv
cjx1aW50OF90PiBjb21wdXRlSGFzaCgpOworCitwcml2YXRlOgorICAgIENyeXB0b0RpZ2VzdCgp
OworCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+IG1fY29udGV4dDsK
K307CisKK30gfSAvLyBuYW1lc3BhY2UgV2ViQ29yZTo6UEFMCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0
by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdl
c3RDb21tb25DcnlwdG8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3ZTc2NmFhOGE1NjFiOTllNGU1N2RhOWUy
NjkxMmMzYmU4NWJlZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY3J5
cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCkBAIC0wLDAgKzEs
MTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0
b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0
Q29udGV4dCB7CisgICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOworICAgIHZv
aWQqIGNjQ29udGV4dDsKK307CisKK2lubGluZSBDQ19TSEExX0NUWCogdG9TSEExQ29udGV4dChD
cnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdv
cml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q0NfU0hBMV9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIEND
X1NIQTI1Nl9DVFgqIHRvU0hBMjI0Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0
KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4o
Y29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTI1NkNv
bnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4
dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9
CitpbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEEzODRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRl
eHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NI
QTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTUxMl9DVFgq
IHRvU0hBNTEyQ29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFT
U0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81
MTIpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2ND
b250ZXh0KTsKK30KKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250
ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5Dcnlw
dG9EaWdlc3QoKQoreworICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAgICAgICAgZGVsZXRlIHRvU0hB
MUNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIGRlbGV0ZSB0b1NIQTIyNENv
bnRleHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIGRlbGV0ZSB0b1NIQTI1NkNvbnRl
eHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIGRlbGV0ZSB0b1NIQTM4NENvbnRleHQo
bV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIGRlbGV0ZSB0b1NIQTUxMkNvbnRleHQobV9j
b250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworCitzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobSBhbGdvcml0aG0pCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4g
ZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0
aG0gPSBhbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIENDX1NIQTFfQ1RYKiBjb250
ZXh0ID0gbmV3IENDX1NIQTFfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250
ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMV9Jbml0KGNvbnRleHQpOworICAgICAgICBy
ZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjI0OiB7CisgICAgICAgIENDX1NIQTI1Nl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMjU2
X0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Cisg
ICAgICAgIENDX1NIQTIyNF9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0Owor
ICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAg
ICAgIENDX1NIQTI1Nl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMjU2X0NUWDsKKyAgICAgICAg
ZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTI1
Nl9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7CisgICAgICAgIENDX1NIQTUxMl9D
VFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEyX0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRl
eHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTM4NF9Jbml0KGNvbnRleHQp
OworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfNTEyOiB7CisgICAgICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBu
ZXcgQ0NfU0hBNTEyX0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9
IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTUxMl9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1
cm4gZGlnZXN0OworICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRl
cyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBzd2l0Y2ggKG1fY29u
dGV4dC0+YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzE6CisgICAgICAgIENDX1NIQTFfVXBkYXRlKHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgp
KSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAgICBDQ19TSEEyMjRfVXBkYXRlKHRvU0hBMjI0
Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIEND
X1NIQTI1Nl9VcGRhdGUodG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBs
ZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NDoKKyAgICAgICAgQ0NfU0hBMzg0X1VwZGF0ZSh0b1NIQTM4NENvbnRleHQobV9j
b250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgorICAgICAgICBDQ19TSEE1MTJfVXBk
YXRlKHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KK30KKworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6
Y29tcHV0ZUhhc2goKQoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CisgICAgc3dpdGNo
IChtX2NvbnRleHQtPmFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8xOgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTFfRElHRVNUX0xFTkdUSCk7
CisgICAgICAgIENDX1NIQTFfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEExQ29udGV4dChtX2Nv
bnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEyMjRfRElHRVNU
X0xFTkdUSCk7CisgICAgICAgIENDX1NIQTIyNF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTIy
NENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0Nf
U0hBMjU2X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEEyNTZfRmluYWwocmVzdWx0LmRh
dGEoKSwgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgorICAgICAgICByZXN1
bHQucmVzaXplKENDX1NIQTM4NF9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMzg0X0Zp
bmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoK
KyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEE1MTJfRElHRVNUX0xFTkdUSCk7CisgICAgICAg
IENDX1NIQTUxMl9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0
LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDM3ZmVmNGZmODJjN2RkZGFjNTkwMzhiNjRmNWViNGU2M2M5ZGFkYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5j
cHAKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5M
LgorICogQ29weXJpZ2h0IChDKSAyMDE2IFNvZnRBdEhvbWUKKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z2NyeXB0
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlw
dG9EaWdlc3RDb250ZXh0IHsKKyAgICBpbnQgYWxnb3JpdGhtOworICAgIGdjcnlfbWRfaGRfdCBt
ZDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChu
ZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGln
ZXN0KCkKK3sKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIGludCBn
Y3J5cHRBbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBH
Q1JZX01EX1NIQTE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQ6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjI0
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjU2OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTI1NjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAg
ICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEzODQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIGdjcnlwdEFs
Z29yaXRobSA9IEdDUllfTURfU0hBNTEyOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Cisg
ICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdjcnlwdEFsZ29yaXRobTsKKworICAg
IGdjcnlfbWRfb3BlbigmZGlnZXN0LT5tX2NvbnRleHQtPm1kLCBnY3J5cHRBbGdvcml0aG0sIDAp
OworICAgIGlmICghZGlnZXN0LT5tX2NvbnRleHQtPm1kKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBkaWdlc3Q7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRl
cyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBnY3J5X21kX3dyaXRl
KG1fY29udGV4dC0+bWQsIGlucHV0LCBsZW5ndGgpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5
cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgaW50IGRpZ2VzdExlbiA9IGdjcnlfbWRf
Z2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHJlc3VsdChkaWdlc3RMZW4pOworCisgICAgZ2NyeV9tZF9maW5hbChtX2NvbnRleHQtPm1kKTsK
KyAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSwgZ2NyeV9tZF9yZWFkKG1fY29udGV4dC0+bWQsIDAp
LCBkaWdlc3RMZW4pOworICAgIGdjcnlfbWRfY2xvc2UobV9jb250ZXh0LT5tZCk7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExT
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRM
Uy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVhN2JhMTkwMTQ0ZWY1OTFlNWE4MDNiM2NhZTIzMWJjNzYwYWFi
MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8vZ251dGxzL0Ny
eXB0b0RpZ2VzdEdudVRMUy5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8
Z251dGxzL2NyeXB0by5oPgorI2luY2x1ZGUgPGdudXRscy9nbnV0bHMuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQg
eworICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgYWxnb3JpdGhtOworICAgIGdudXRsc19o
YXNoX2hkX3QgaGFzaDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6
IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0
Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBnbnV0bHNfaGFzaF9kZWluaXQobV9jb250ZXh0LT5o
YXNoLCAwKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIGdudXRs
c19kaWdlc3RfYWxnb3JpdGhtX3QgZ251dGxzQWxnb3JpdGhtOworCisgICAgc3dpdGNoIChhbGdv
cml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAg
ICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTE7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7CisgICAg
ICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjI0OworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogeworICAg
ICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTI1NjsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAg
ICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEzODQ7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Cisg
ICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBNTEyOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGln
ZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0g
PSBnbnV0bHNBbGdvcml0aG07CisKKyAgICBpbnQgcmV0ID0gZ251dGxzX2hhc2hfaW5pdCgmZGln
ZXN0LT5tX2NvbnRleHQtPmhhc2gsIGdudXRsc0FsZ29yaXRobSk7CisgICAgaWYgKHJldCAhPSBH
TlVUTFNfRV9TVUNDRVNTKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBk
aWdlc3Q7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1
dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBnbnV0bHNfaGFzaChtX2NvbnRleHQtPmhhc2gsIGlu
cHV0LCBsZW5ndGgpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRl
SGFzaCgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBpbnQgZGlnZXN0TGVu
ID0gZ251dGxzX2hhc2hfZ2V0X2xlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7CisgICAgcmVzdWx0
LnJlc2l6ZShkaWdlc3RMZW4pOworCisgICAgZ251dGxzX2hhc2hfb3V0cHV0KG1fY29udGV4dC0+
aGFzaCwgcmVzdWx0LmRhdGEoKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmU6OlBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2Ny
eXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jcnlwdG8v
d2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2U3MTM0OTMwYWY5YTBlMzdlOTFj
ZmY2YTQwZjQyMmE1MzI4MWFhMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisK
KyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d2luY3J5cHQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeyBuYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQg
eworICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKKyAgICBIQ1JZUFRQUk9W
IGhDb250ZXh0IHsgMCB9OworICAgIEhDUllQVEhBU0ggaEhhc2ggeyAwIH07Cit9OworCitDcnlw
dG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCisgICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2Vz
dENvbnRleHQpCit7Cit9CisKK0NyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7CisgICAg
aWYgKEhDUllQVEhBU0ggaEhhc2ggPSBtX2NvbnRleHQtPmhIYXNoKQorICAgICAgICBDcnlwdERl
c3Ryb3lIYXNoKGhIYXNoKTsKKyAgICBpZiAoSENSWVBUUFJPViBoQ29udGV4dCA9IG1fY29udGV4
dC0+aENvbnRleHQpCisgICAgICAgIENyeXB0UmVsZWFzZUNvbnRleHQoaENvbnRleHQsIDApOwor
fQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShB
bGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+
IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3Jp
dGhtID0gYWxnb3JpdGhtOworICAgIGlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmZGlnZXN0LT5t
X2NvbnRleHQtPmhDb250ZXh0LCBudWxscHRyLCBudWxscHRyIC8qIHVzZSBkZWZhdWx0IHByb3Zp
ZGVyICovLCBQUk9WX1JTQV9BRVMsIENSWVBUX1ZFUklGWUNPTlRFWFQpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICBib29sIHN1Y2NlZWRlZCA9IGZhbHNlOworICAgIHN3aXRjaCAoYWxn
b3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKKyAg
ICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29u
dGV4dCwgQ0FMR19TSEExLCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTY6IHsKKyAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250
ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMjU2LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhI
YXNoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8zODQ6IHsKKyAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRp
Z2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMzg0LCAwLCAwLCAmZGlnZXN0LT5t
X2NvbnRleHQtPmhIYXNoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKKyAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRD
cmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfNTEyLCAwLCAw
LCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IH0KKyAgICBpZiAoc3VjY2VlZGVkKQorICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIHJldHVy
biBudWxscHRyOworfQorCit2b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCog
aW5wdXQsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKCFpbnB1dCB8fCAhbGVuZ3RoKQorICAg
ICAgICByZXR1cm47CisgICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRIYXNoRGF0YShtX2NvbnRleHQt
PmhIYXNoLCByZWludGVycHJldF9jYXN0PGNvbnN0IEJZVEUqPihpbnB1dCksIGxlbmd0aCwgMCkp
OworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXI7
CisgICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSA9IHNpemVvZihkaWdlc3RMZW5ndGhC
dWZmZXIpOworCisgICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0
LT5oSGFzaCwgSFBfSEFTSFNJWkUsIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+KCZkaWdlc3RMZW5n
dGhCdWZmZXIpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSwgMCkpOworICAgIHJlc3VsdC5yZXNp
emUoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFz
aFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hWQUwsIHJlc3VsdC5kYXRhKCksICZkaWdl
c3RMZW5ndGhCdWZmZXIsIDApKTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuc2l6ZSgpID09
IGRpZ2VzdExlbmd0aEJ1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlOjpQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
RWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZjNhZTg5
YjAwZTNkMzRiZDk0NThjNThmZmI0NGE4ZWEyNzk2YjNkZC4uMWYwZTEwMzVhZDRhZDJlMWUzZjBi
MTcyNWEyYWNlY2VlM2M4MGM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1F
ZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTY5LDgg
KzY5LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRp
by9lZmwvQXVkaW9CdXNFZmwuY3BwCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0RpZ2VzdEdDcnlwdC5jcHAKLQogICAgIHBsYXRmb3JtL2VmbC9DdXJzb3JFZmwuY3BwCiAgICAg
cGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9EcmFnSW1hZ2VF
ZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDYyNDIxNjI5YzVlZDUwN2E3NzM0
YTNlNmRmY2QzNGE3Mjg4MWViZGYuLmIxYzZlNmI4Y2UxMzM3ZTM4YzI4NDYzMTU0YjVmYWUxNzBj
ZDA0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02OCw4ICs2OCw2IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1
c0dMaWIuY3BwCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlw
dC5jcHAKLQogICAgIHBsYXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCiAKICAg
ICBwbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlMS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKaW5kZXggYjgxMmI5YzFhZTdmZDgzMTFhMGQwZTYzZWQ4MzNlOTAx
N2FkZGZhMi4uYzk0MzdlNzNkNzBiMmVlOGZjYWQyMzQwZGI3MmNiMzRkZjU0YTljZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMzMiw4ICszMzIsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCiAgICAgcGxhdGZv
cm0vY29jb2EvV2ViQ29yZU5TRXJyb3JFeHRyYXMubW0KIAotICAgIHBsYXRmb3JtL2NyeXB0by9j
b21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAotCiAgICAgcGxhdGZvcm0v
Z2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAKICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkUHJvdmlkZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
V2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggOGQ3ZjUw
OGExMjI5NTcxNzkwN2RlZjQxNGYyZjI2NGRmMTBjMTlhZC4uYTRhOTkwOWIxMjEzNDNjZWViYzY5
YmQwMWE4MzVjMThmMTg5MDFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1X
aW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTczLDgg
KzczLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9jZi93
aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRv
RGlnZXN0V2luLmNwcAotCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5
IGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9FbmZvcmNlUEFMTGF5ZXJpbmcucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYjlkMTdhYTkwNjAyYWZmZWM5MjMwNGEwNmFlZWQwZTMzYmFlMjg5ZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5CkBAIC0w
LDAgKzEsNDggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9y
dCBzeXMKK2ltcG9ydCBvcworCithcmNoaXZlRmlsZSA9IHN5cy5hcmd2WzFdCitzb3VyY2VEaXJl
Y3RvcnkgPSBzeXMuYXJndlsyXQorCitzeW1ib2xOYW1lc3BhY2VDb21tYW5kID0gIm5tIC1naiAi
ICsgYXJjaGl2ZUZpbGUgKyAiIHwgYysrZmlsdCB8IGdyZXAgXCJeV2ViQ29yZTo6XCIgfCBncmVw
IC12IFwiXldlYkNvcmU6OlBBTDo6XCIiCisKK3J2ID0gb3Muc3lzdGVtKHN5bWJvbE5hbWVzcGFj
ZUNvbW1hbmQgKyAiID4gL2Rldi9udWxsIikKKworaWYgcnYgPT0gMDoKKyAgICBwcmludCgiVGhl
IGZvbGxvd2luZyBzeW1ib2xzIGFyZSB1c2VkIG9yIGRlY2xhcmVkIGluIFBBTCBidXQgYXJlIGlu
IHRoZSBXZWJDb3JlIG5hbWVzcGFjZSAod2hpY2ggaXMgZm9yYmlkZGVuIHRvIHByZXNlcnZlIGxh
eWVyaW5nKToiKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgIG9zLnN5c3RlbShzeW1ib2xO
YW1lc3BhY2VDb21tYW5kKQorICAgIHN5cy5leGl0KDEpCisKK2luY2x1ZGVTZWFyY2hDb21tYW5k
ID0gImZpbmQgIiArIHNvdXJjZURpcmVjdG9yeSArICIgXCggLW5hbWUgXCIqLmNwcFwiIC1vciAt
bmFtZSBcIiouaFwiIC1vciAtbmFtZSBcIioubVwiIC1vciAtbmFtZSBcIioubW1cIiBcKSAtZXhl
YyBncmVwIC1xRSBcIl4jKGluY2x1ZGV8aW1wb3J0KSAuV2ViQ29yZS9cIiB7fSBcOyAtcHJpbnQi
CisKK3J2ID0gb3Muc3lzdGVtKCJleGl0ICQoIiArIGluY2x1ZGVTZWFyY2hDb21tYW5kICsgIiB8
IHdjIC1sICkiKQorCitpZiBydiAhPSAwOgorICAgIHByaW50KCJUaGUgZm9sbG93aW5nIGZpbGVz
IGluIFBBTCBpbmNsdWRlIGhlYWRlcnMgZnJvbSBXZWJDb3JlICh3aGljaCBpcyBmb3JiaWRkZW4g
dG8gcHJlc2VydmUgbGF5ZXJpbmcpOiIpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgb3Mu
c3lzdGVtKGluY2x1ZGVTZWFyY2hDb21tYW5kKQorICAgIHN5cy5leGl0KDEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmNiYzY1
NjM3ZDQ3NDYyMWY1NmI1YmI0ODVmZDQ5MGM1MmUyN2E3MC4uMDQ3YTNlOWJiODc3MDMwMDE3MTZj
ODY1ODkwY2Y4YzI4ODA3MWVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTYyMSw2ICs1NjIxLDEwIEBACiAJCUMyODA4MzNG
MUM2REMyNkYwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjgwODMzRTFDNkRDMjJDMDAxNDUxQjYgLyogSlNGb250
RmFjZS5oICovOyB9OwogCQlDMjgwODM0MDFDNkRDMjc1MDAxNDUxQjYgLyogSlNGb250RmFjZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjgwODMz
RDFDNkRDMjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5jcHAgKi87IH07CiAJCUMyODA4MzQyMUM2
REM5NkEwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODA4MzQxMUM2REM5NkEwMDE0NTFCNiAvKiBK
U0ZvbnRGYWNlQ3VzdG9tLmNwcCAqLzsgfTsKKwkJQzI5RTdDNjIxRTI0QkVDNDAwRkZFQzNEIC8q
IENyeXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzI5RTdDNjExRTI0QkVDNDAwRkZFQzNEIC8qIENyeXB0b0RpZ2VzdC5oICovOyB9Owor
CQlDMjlFN0M2NTFFMjRCRUU2MDBGRkVDM0QgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOUU3QzY0
MUUyNEJFRTYwMEZGRUMzRCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovOyB9Owor
CQlDMjlFN0M2QTFFMjRDMzkwMDBGRkVDM0QgLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjlFN0M2OTFFMjRDMzkwMDBGRkVDM0QgLyog
Y29uZmlnLmggKi87IH07CisJCUMyOUU3QzZDMUUyNENDMkIwMEZGRUMzRCAvKiBsaWJQQUwuYSBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOUU3QzVB
MUUyNEJDMUQwMEZGRUMzRCAvKiBsaWJQQUwuYSAqLzsgfTsKIAkJQzJFMUY0M0YxRDYyNTRFMTAw
OTQ2MjVDIC8qIEJyZWFrTGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDRUE0ODE2MDk3RDkzMDIwMDk0QzlFNCAvKiBCcmVha0xpbmVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzMzMEEyMjMx
M0VDMTk2QjAwMDBCNDVCIC8qIENvbG9yQ2hvb3Nlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzMzMEEyMjExM0VDMTk2QjAwMDBCNDVCIC8qIENvbG9y
Q2hvb3Nlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUMzM0VFNUM0MTRGQjQ5NjEwMDAyMDk1QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0
VHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MzNFRTVDMjE0RkI0OTYxMDAwMjA5NUEgLyogQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUu
Y3BwICovOyB9OwpAQCAtNjI2Miw4ICs2MjY2LDYgQEAKIAkJRTFGODBCODgxODMxNzI1MjAwNzg4
NUMzIC8qIENyeXB0b0tleVBhaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxRjgwQjg2MTgzMTcyNTIwMDc4ODVDMyAvKiBDcnlwdG9LZXlQYWlyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTFGODBC
OEQxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4MEI4QjE4MzE3MkI1MDA3ODg1QzMg
LyogSlNDcnlwdG9LZXlQYWlyLmNwcCAqLzsgfTsKIAkJRTFGODBCOEUxODMxNzJCNTAwNzg4NUMz
IC8qIEpTQ3J5cHRvS2V5UGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFGODBCOEMxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5o
ICovOyB9OwotCQlFMUZFMTM2NDE4MzQzNTExMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0Q29tbW9u
Q3J5cHRvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxRkUxMzYyMTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3Bw
ICovOyB9OwotCQlFMUZFMTM2NzE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2NjE4MzQz
QTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0LmggKi87IH07CiAJCUUxRkUxMzZBMTgzRkUxQUIw
MDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2ODE4M0ZFMUFCMDA4OTJGMTMgLyog
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwICovOyB9OwogCQlFMUZFMTM2QjE4M0ZFMUFCMDA4
OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzY5MTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlw
dG9BbGdvcml0aG1SU0FfT0FFUC5oICovOyB9OwogCQlFMUZFMTM3MDE4M0ZFQ0YwMDA4OTJGMTMg
LyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNkUxODNGRUNGMDAwODkyRjEzIC8qIENyeXB0
b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCAqLzsgfTsKQEAgLTY5MDUsNiArNjkwNywxMyBAQAog
CQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA0MTdEQTZDRjEzNzM0RTAyMDA3QzU3RkI7CiAJCQly
ZW1vdGVJbmZvID0gV2ViQ29yZVRlc3RTdXBwb3J0OwogCQl9OworCQlDMjlFN0M2NjFFMjRCRjI3
MDBGRkVDM0QgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29u
dGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMw
MkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90
ZUdsb2JhbElEU3RyaW5nID0gQzI5RTdDNTkxRTI0QkMxQzAwRkZFQzNEOworCQkJcmVtb3RlSW5m
byA9IFBBTDsKKwkJfTsKIAkJREQwNDFGRjAwOUQ5RTMyNTAwMTBBRjJBIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNv
bnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVj
dCAqLzsKQEAgLTEzNTQyLDYgKzEzNTUxLDEyIEBACiAJCUMyODA4MzNEMUM2REMyMkMwMDE0NTFC
NiAvKiBKU0ZvbnRGYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRm9udEZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjgwODMzRTFD
NkRDMjJDMDAxNDUxQjYgLyogSlNGb250RmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0ZvbnRGYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODA4
MzQxMUM2REM5NkEwMDE0NTFCNiAvKiBKU0ZvbnRGYWNlQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRm9udEZhY2VDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMjlFN0M1QTFFMjRCQzFEMDBGRkVDM0QgLyogbGliUEFMLmEg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUu
YXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYlBBTC5hOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OworCQlDMjlFN0M2MTFFMjRCRUM0MDBGRkVDM0QgLyogQ3J5cHRv
RGlnZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0RpZ2VzdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjlFN0M2NDFFMjRCRUU2MDBGRkVDM0Qg
LyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyOUU3QzY5MUUyNEMzOTAwMEZGRUMzRCAvKiBjb25maWcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyOUU3QzZCMUUyNEM3RDEwMEZGRUMzRCAvKiBQQUwueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gUEFMLnhjY29uZmlnOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMjlFN0M2RjFFMjU2RDgwMDBGRkVDM0QgLyogRW5mb3JjZVBBTExh
eWVyaW5nLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0gRW5mb3JjZVBB
TExheWVyaW5nLnB5OyBwYXRoID0gU2NyaXB0cy9FbmZvcmNlUEFMTGF5ZXJpbmcucHk7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzMzBBMjIxMTNFQzE5NkIwMDAwQjQ1QiAvKiBDb2xv
ckNob29zZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3JDaG9vc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzM0VFNUMyMTRGQjQ5NjEwMDAyMDk1
QSAvKiBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMzM0VFNUMzMTRGQjQ5NjEwMDAyMDk1QSAvKiBC
YXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCYXNlQ2xpY2thYmxlV2l0aEtleUlucHV0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQyNjcsOCArMTQyODIsNiBAQAogCQlFMUY4MEI4NjE4MzE3MjUyMDA3
ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcnlwdG9LZXlQYWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRjgwQjhC
MTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNDcnlwdG9LZXlQYWlyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTFGODBCOEMxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFp
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NyeXB0b0tleVBhaXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFGRTEzNjIxODM0MzUxMTAwODkyRjEzIC8q
IENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlFMUZFMTM2NjE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0RpZ2VzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2ODE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRTEzNkUxODNGRUNGMDAwODky
RjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0OTc4LDYgKzE0OTkxLDcgQEAKIAkJCWlzYSA9IFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
IAkJCWZpbGVzID0gKAorCQkJCUMyOUU3QzZDMUUyNENDMkIwMEZGRUMzRCAvKiBsaWJQQUwuYSBp
biBGcmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjEyMTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVy
YXRlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjEzMTJCMDQ4QTMwMEVE
OThDNiAvKiBBdWRpb1Rvb2xib3guZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMUFC
MzNEQTUxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
LApAQCAtMTQ5OTEsNiArMTUwMDUsMTMgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJQzI5RTdDNTcxRTI0QkMxQzAwRkZFQzNEIC8q
IEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJRTFCQTY3MEUx
NzQyQkRFMDAwQzIwMjUxIC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0xNTAy
MSw2ICsxNTA0Miw3IEBACiAJCQkJRTFCQTY3MTYxNzQyQkRFMDAwQzIwMjUxIC8qIGxpYldlYkNv
cmVUZXN0U2hpbS5keWxpYiAqLywKIAkJCQk0MTdEQTZEMDEzNzM0RTAyMDA3QzU3RkIgLyogbGli
V2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovLAogCQkJCTkzRjE5QjFBMDgyNDVFNUEwMDFFOUFC
QyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLywKKwkJCQlDMjlFN0M1QTFFMjRCQzFEMDBGRkVDM0Qg
LyogbGliUEFMLmEgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOwpAQCAtMTU0MjQsNiArMTU0NDYsNyBAQAogCQkJCTJFNDM0NjMxMEY1
NDZBNjgwMEIwRjFCQSAvKiB3b3JrZXJzICovLAogCQkJCUUxRjA0MjQzMDk4MzkzODkwMDY2OTRF
QSAvKiB4bWwgKi8sCiAJCQkJNjU2NTgwRUMwOUQxMkIyMDAwMEU2MUQ3IC8qIERlcml2ZWQgU291
cmNlcyAqLywKKwkJCQlDMjlFN0M1RjFFMjRCQ0EyMDBGRkVDM0QgLyogUEFMICovLAogCQkJCTA4
OUMxNjY1RkU4NDExNThDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJMzcxN0Q3RTQxN0VD
QzM2QzAwM0MyNzZEIC8qIFNjcmlwdHMgKi8sCiAJCQkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFBQzA3
IC8qIEZyYW1ld29ya3MgKi8sCkBAIC0xNjIwNCw2ICsxNjIyNyw3IEBACiAJCTFDREQ0NDY2MEJB
OUM4MDAwMEY5MDE0NyAvKiBDb25maWd1cmF0aW9ucyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzI5RTdDNkIxRTI0QzdEMTAwRkZFQzNEIC8qIFBBTC54
Y2NvbmZpZyAqLywKIAkJCQkxQ0RENDVFNjBCQTlDODQ2MDBGOTAxNDcgLyogQmFzZS54Y2NvbmZp
ZyAqLywKIAkJCQkxQ0RENDVFNDBCQTlDODQ2MDBGOTAxNDcgLyogRGVidWdSZWxlYXNlLnhjY29u
ZmlnICovLAogCQkJCTQ0OTA5OEIxMEY4RjgyNTIwMDc2QTMyNyAvKiBGZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZyAqLywKQEAgLTE2NTE2LDYgKzE2NTQwLDcgQEAKIAkJCQlGNDgzODk3OTFFMUREMjNB
MDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnkgKi8sCiAJCQkJMzcxN0Q3RTUxN0VDQzNBNjAwM0My
NzZEIC8qIGV4dHJhY3QtbG9jYWxpemFibGUtc3RyaW5ncy5wbCAqLywKIAkJCQkzN0Q0NTZGQjFB
OUE1MEI2MDAzMzMwQTEgLyogTG9jYWxpemFibGVTdHJpbmdzLnBtICovLAorCQkJCUMyOUU3QzZG
MUUyNTZEODAwMEZGRUMzRCAvKiBFbmZvcmNlUEFMTGF5ZXJpbmcucHkgKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IFNjcmlwdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjI0ODgsNyAr
MjI1MTMsNiBAQAogCQkJCUZEMzE2MDQwMTJCMDI2QTMwMEMxQTM1OSAvKiBhdWRpbyAqLywKIAkJ
CQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8sCiAJCQkJQTVDOTc0Q0UxMTQ4NUZE
QTAwNjZGMkFCIC8qIGNvY29hICovLAotCQkJCUNFNTBEOENFMUM4OTMyRUQwMDcyRUE1QSAvKiBj
cnlwdG8gKi8sCiAJCQkJNTE1QkUxODcxRDU0RjVEQjAwREQ3QzY4IC8qIGdhbWVwYWQgKi8sCiAJ
CQkJQjJBMDE1OTEwQUY2Q0Q1MzAwNkJDRTBFIC8qIGdyYXBoaWNzICovLAogCQkJCUE1OUUzQzFC
MTE1ODBGMzQwMDcyOTI4RSAvKiBpb3MgKi8sCkBAIC0yMjY4Miw2ICsyMjcwNiwzMiBAQAogCQkJ
dGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQlDMjlFN0M1RjFFMjRCQ0Ey
MDBGRkVDM0QgLyogUEFMICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlDMjlFN0M2OTFFMjRDMzkwMDBGRkVDM0QgLyogY29uZmlnLmggKi8sCisJCQkJQzI5
RTdDNjAxRTI0QkNERjAwRkZFQzNEIC8qIGNyeXB0byAqLywKKwkJCSk7CisJCQlwYXRoID0gUEFM
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzI5RTdDNjAxRTI0QkNERjAw
RkZFQzNEIC8qIGNyeXB0byAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQzI5RTdDNjMxRTI0QkVENDAwRkZFQzNEIC8qIGNvbW1vbmNyeXB0byAqLywKKwkJ
CQlDMjlFN0M2MTFFMjRCRUM0MDBGRkVDM0QgLyogQ3J5cHRvRGlnZXN0LmggKi8sCisJCQkpOwor
CQkJcGF0aCA9IGNyeXB0bzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUMy
OUU3QzYzMUUyNEJFRDQwMEZGRUMzRCAvKiBjb21tb25jcnlwdG8gKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMyOUU3QzY0MUUyNEJFRTYwMEZGRUMzRCAv
KiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovLAorCQkJKTsKKwkJCXBhdGggPSBjb21t
b25jcnlwdG87CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlDOTZGNUVCRjFC
NTg3MjI2MDA5MUVBOUQgLyogbWVkaWFzZXNzaW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIyOTI4LDIzICsyMjk3OCw2IEBACiAJCQlwYXRoID0gaW9z
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJQ0U1MEQ4Q0UxQzg5MzJFRDAw
NzJFQTVBIC8qIGNyeXB0byAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4g
PSAoCi0JCQkJQ0U1MEQ4Q0YxQzg5MzJGQjAwNzJFQTVBIC8qIGNvbW1vbmNyeXB0byAqLywKLQkJ
CQlFMUZFMTM2NjE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0LmggKi8sCi0JCQkpOwot
CQkJcGF0aCA9IGNyeXB0bzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCUNF
NTBEOENGMUM4OTMyRkIwMDcyRUE1QSAvKiBjb21tb25jcnlwdG8gKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUUxRkUxMzYyMTgzNDM1MTEwMDg5MkYxMyAv
KiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovLAotCQkJKTsKLQkJCXBhdGggPSBjb21t
b25jcnlwdG87Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQlERjlBRkQ2RjEz
RkMzMUIwMDAxNUZFQjcgLyogb2JqYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkBAIC0yNTIzNCw3ICsyNTI2Nyw2IEBACiAJCQkJRTE5QUMzRjExODI0REM3OTAw
MzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1Ni5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5
QUMzRjMxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4NC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTE5QUMzRjUxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNI
QTUxMi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTFGRTEzNjcxODM0M0ExMDAwODkyRjEzIC8qIENy
eXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE1N0E4RTUxODE3M0EzQTAwOUY4MjFE
IC8qIENyeXB0b0tleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNUY4NEUxODI0Mjg5RDAwRDg0
Q0Q5IC8qIENyeXB0b0tleUFFUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNUY4NUUxODJDMkRG
NjAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjg0MzQsNiAr
Mjg0NjYsMTUgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKKwkJQzI5RTdDNTgxRTI0QkMxQzAwRkZFQzNEIC8qIEhlYWRlcnMgKi8gPSB7
CisJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlDMjlFN0M2QTFFMjRDMzkwMDBGRkVDM0QgLyog
Y29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjlFN0M2MjFFMjRCRUM0MDBGRkVDM0QgLyog
Q3J5cHRvRGlnZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJRTFCQTY2RjYxNzQyQkRFMDAwQzIwMjUx
IC8qIEhlYWRlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0yODQ4Myw2ICsyODUyNCw3IEBACiAJCQli
dWlsZFJ1bGVzID0gKAogCQkJKTsKIAkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQlDMjlFN0M2NzFF
MjRCRjI3MDBGRkVDM0QgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCQlERDA0MUZGMTA5
RDlFMzI1MDAxMEFGMkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJCSk7CiAJCQluYW1l
ID0gV2ViQ29yZTsKQEAgLTI4NDkxLDYgKzI4NTMzLDI0IEBACiAJCQlwcm9kdWN0UmVmZXJlbmNl
ID0gOTNGMTlCMUEwODI0NUU1QTAwMUU5QUJDIC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOwogCQkJ
cHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5mcmFtZXdvcmsiOwogCQl9Owor
CQlDMjlFN0M1OTFFMjRCQzFDMDBGRkVDM0QgLyogUEFMICovID0geworCQkJaXNhID0gUEJYTmF0
aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEMyOUU3QzVFMUUyNEJDMUQw
MEZGRUMzRCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAi
UEFMIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCUMyOUU3QzU2MUUyNEJDMUMwMEZGRUMz
RCAvKiBTb3VyY2VzICovLAorCQkJCUMyOUU3QzU3MUUyNEJDMUMwMEZGRUMzRCAvKiBGcmFtZXdv
cmtzICovLAorCQkJCUMyOUU3QzU4MUUyNEJDMUMwMEZGRUMzRCAvKiBIZWFkZXJzICovLAorCQkJ
CUMyOUU3QzZFMUUyNTZDRkIwMEZGRUMzRCAvKiBFbmZvcmNlIFBBTCBMYXllcmluZyAqLywKKwkJ
CSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7
CisJCQluYW1lID0gUEFMOworCQkJcHJvZHVjdE5hbWUgPSBQQUw7CisJCQlwcm9kdWN0UmVmZXJl
bmNlID0gQzI5RTdDNUExRTI0QkMxRDAwRkZFQzNEIC8qIGxpYlBBTC5hICovOworCQkJcHJvZHVj
dFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyI7CisJCX07CiAJ
CUUxQkE2NkYzMTc0MkJERTAwMEMyMDI1MSAvKiBXZWJDb3JlVGVzdFNoaW0gKi8gPSB7CiAJCQlp
c2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gRTFCQTY3
MTIxNzQyQkRFMDAwQzIwMjUxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJXZWJDb3JlVGVzdFNoaW0iICovOwpAQCAtMjg1MTgsNiArMjg1NzgsMTIgQEAK
IAkJCQlCdWlsZEluZGVwZW5kZW50VGFyZ2V0c0luUGFyYWxsZWwgPSBZRVM7CiAJCQkJTGFzdFN3
aWZ0VXBkYXRlQ2hlY2sgPSAwNzAwOwogCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAwNzAwOworCQkJ
CVRhcmdldEF0dHJpYnV0ZXMgPSB7CisJCQkJCUMyOUU3QzU5MUUyNEJDMUMwMEZGRUMzRCA9IHsK
KwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDguMi4xOworCQkJCQkJUHJvdmlzaW9uaW5n
U3R5bGUgPSBBdXRvbWF0aWM7CisJCQkJCX07CisJCQkJfTsKIAkJCX07CiAJCQlidWlsZENvbmZp
Z3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQljb21wYXRpYmlsaXR5
VmVyc2lvbiA9ICJYY29kZSAzLjIiOwpAQCAtMjg1NDIsNiArMjg2MDgsNyBAQAogCQkJCUREMDQx
RkJFMDlEOUREQkUwMDEwQUYyQSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJNDE3REE2Q0Yx
MzczNEUwMjAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydCAqLywKIAkJCQlFMUJBNjZGMzE3
NDJCREUwMDBDMjAyNTEgLyogV2ViQ29yZVRlc3RTaGltICovLAorCQkJCUMyOUU3QzU5MUUyNEJD
MUMwMEZGRUMzRCAvKiBQQUwgKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2Vj
dGlvbiAqLwpAQCAtMjg2OTEsNiArMjg3NTgsMjAgQEAKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7
CiAJCQlzaGVsbFNjcmlwdCA9ICJTUkNfRElSPVwiJFNSQ1JPT1QvTW9kdWxlcy9tb2Rlcm4tbWVk
aWEtY29udHJvbHNcIlxuRFNUX0RJUj1cIiRCVUlMVF9QUk9EVUNUU19ESVIvJFVOTE9DQUxJWkVE
X1JFU09VUkNFU19GT0xERVJfUEFUSC9tb2Rlcm4tbWVkaWEtY29udHJvbHNcIlxuXG5ta2RpciAt
cCBcIiREU1RfRElSXCJcblxuaWYgWyBcIiR7UExBVEZPUk1fTkFNRX1cIiA9PSBcIm1hY29zeFwi
IF07IHRoZW5cbiAgICBJTUdfT1NfUFJFRklYPVwibWFjT1NcIlxuZmlcblxuaWYgWyBcIiR7UExB
VEZPUk1fTkFNRX1cIiA9PSBcImlwaG9uZW9zXCIgXSB8fCBbIFwiJHtQTEFURk9STV9OQU1FfVwi
ID09IFwiaXBob25lc2ltdWxhdG9yXCIgXTsgdGhlblxuICAgIElNR19PU19QUkVGSVg9XCJpT1Nc
IlxuZmlcblxuaWYgWyAtbiBcIiRJTUdfT1NfUFJFRklYXCIgXTsgdGhlblxuICAgIG1rZGlyIC1w
IFwiJERTVF9ESVIvaW1hZ2VzXCJcbiAgICByc3luYyAtYXEgLS1leGNsdWRlIFwiLnN2blwiIC0t
ZXhjbHVkZSBcIi5EU19TdG9yZVwiIFwiJFNSQ19ESVIvaW1hZ2VzLyRJTUdfT1NfUFJFRklYXCIg
XCIkRFNUX0RJUi9pbWFnZXNcIlxuZmlcblxuY2QgXCIkU1JDX0RJUlwiXG5jYXQgY29udHJvbHMv
Ki5jc3MgPiBcIiREU1RfRElSL21vZGVybi1tZWRpYS1jb250cm9scy5jc3NcIlxuY2F0IGBjYXQg
anMtZmlsZXNgID4gXCIkRFNUX0RJUi9tb2Rlcm4tbWVkaWEtY29udHJvbHMuanNcIiI7CiAJCX07
CisJCUMyOUU3QzZFMUUyNTZDRkIwMEZGRUMzRCAvKiBFbmZvcmNlIFBBTCBMYXllcmluZyAqLyA9
IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAor
CQkJKTsKKwkJCW5hbWUgPSAiRW5mb3JjZSBQQUwgTGF5ZXJpbmciOworCQkJb3V0cHV0UGF0aHMg
PSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJ
CQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAicHl0aG9uICR7U1JDUk9P
VH0vU2NyaXB0cy9FbmZvcmNlUEFMTGF5ZXJpbmcucHkgJHtCVUlMVF9QUk9EVUNUU19ESVJ9LyR7
RlVMTF9QUk9EVUNUX05BTUV9ICR7U1JDUk9PVH0vUEFMIjsKKwkJfTsKIAkJREQwNDFGQkQwOUQ5
RERCRTAwMTBBRjJBIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CkBAIC0yOTA3MSw3ICsyOTE1Miw2IEBACiAJCQkJRTE5QUMzRjAxODI0REM3OTAwMzQ5NDI2
IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTlBQzNG
MjE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxOUFDM0Y0MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1
MTIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTFGRTEzNjQxODM0MzUxMTAwODkyRjEzIC8qIENy
eXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTU3QThFNDE4
MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjVG
ODREMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9LZXlBRVMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTEyNUY4NjMxODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNl
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE4OTYsNiArMzE5NzYsMTQgQEAKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJQzI5RTdDNTYx
RTI0QkMxQzAwRkZFQzNEIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVp
bGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgK
KwkJCQlDMjlFN0M2NTFFMjRCRUU2MDBGRkVDM0QgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRv
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OwogCQlFMUJBNjcwMjE3NDJCREUwMDBDMjAyNTEgLyogU291cmNl
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMxOTIyLDYgKzMyMDEwLDExIEBACiAJCQl0YXJnZXQgPSA0
MTdEQTZDRjEzNzM0RTAyMDA3QzU3RkIgLyogV2ViQ29yZVRlc3RTdXBwb3J0ICovOwogCQkJdGFy
Z2V0UHJveHkgPSA0MTgxNkY4NDEzODU5QzdEMDA1N0FBQTQgLyogUEJYQ29udGFpbmVySXRlbVBy
b3h5ICovOwogCQl9OworCQlDMjlFN0M2NzFFMjRCRjI3MDBGRkVDM0QgLyogUEJYVGFyZ2V0RGVw
ZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQg
PSBDMjlFN0M1OTFFMjRCQzFDMDBGRkVDM0QgLyogUEFMICovOworCQkJdGFyZ2V0UHJveHkgPSBD
MjlFN0M2NjFFMjRCRjI3MDBGRkVDM0QgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9
OwogCQlERDA0MUZGMTA5RDlFMzI1MDAxMEFGMkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9
IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSBERDA0MUZCRTA5
RDlEREJFMDAxMEFGMkEgLyogRGVyaXZlZCBTb3VyY2VzICovOwpAQCAtMzIwNjUsNiArMzIxNTgs
MjcgQEAKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJQzI5RTdDNUIxRTI0
QkMxRDAwRkZFQzNEIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IEMyOUU3QzZCMUUyNEM3RDEwMEZG
RUMzRCAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJ
CW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJQzI5RTdDNUMxRTI0QkMxRDAwRkZFQzNEIC8qIFJlbGVh
c2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gQzI5RTdDNkIxRTI0QzdEMTAwRkZFQzNEIC8qIFBBTC54Y2NvbmZp
ZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJ
CX07CisJCUMyOUU3QzVEMUUyNEJDMUQwMEZGRUMzRCAvKiBQcm9kdWN0aW9uICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5j
ZSA9IEMyOUU3QzZCMUUyNEM3RDEwMEZGRUMzRCAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQlERDA0
MUZDMjA5RDlERERDMDAxMEFGMkEgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUNERDQ1RTUwQkE5
Qzg0NjAwRjkwMTQ3IC8qIFdlYkNvcmUueGNjb25maWcgKi87CkBAIC0zMjE1Myw2ICszMjI2Nywx
NiBAQAogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwogCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJQzI5RTdDNUUxRTI0QkMxRDAw
RkZFQzNEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJQ
QUwiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmln
dXJhdGlvbnMgPSAoCisJCQkJQzI5RTdDNUIxRTI0QkMxRDAwRkZFQzNEIC8qIERlYnVnICovLAor
CQkJCUMyOUU3QzVDMUUyNEJDMUQwMEZGRUMzRCAvKiBSZWxlYXNlICovLAorCQkJCUMyOUU3QzVE
MUUyNEJDMUQwMEZGRUMzRCAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFBy
b2R1Y3Rpb247CisJCX07CiAJCUREMDQxRkMxMDlEOUREREMwMDEwQUYyQSAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2VzIiAq
LyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRp
b25zID0gKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEExLmNwcAppbmRleCAwYzhkZmRkZDFlMGE3YWRiYWExOGVmOWM1MTJh
NzI4Yzk0MmFkZTI5Li4yMTBkOThmM2Q2MGY3YWZiM2VjOTdmMDJlMmIzNDhlN2M5MjJhZDMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1TSEExLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEExLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9D
UllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBB
TC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYs
NyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTE6
OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChW
ZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENy
eXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAg
YXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRp
b25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1
LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYg
bWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWwKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRv
QWxnb3JpdGhtU0hBMTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sm
JiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8g
ZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8xKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAg
ICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIy
NC5jcHAKaW5kZXggNmNhMWFlZTVhNmJiN2Q4M2NhMDU2NDE5ZGNiZWJkNTE3YjlkNjE4NS4uYmU0
NDE5NTc0MjI4Y2I1MTA5MWZlNjViNDhjYmYzMWMyMGZiZjg3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQu
Y3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2lu
Y2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9Dcnlw
dG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjppZGVudGlmaWVy
KCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWlu
dDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxs
YmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRvIGRp
Z2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzIyNCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2Fs
bGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBA
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVz
c2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29y
aXRobVNIQTIyNDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
MjQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAg
ICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEy
NTYuY3BwCmluZGV4IDczNjYwZjU5OWFmMzdjYTlkZTlhMjE5ZTNmNGYyMzQ4ZjQ2YWMyYjMuLjZm
ODE2Yzg5NGE3OWVlN2E2ZDNiZTdiZjY5NGQ0MTg5MDYwYjg2MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2
LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNp
bmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5
cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6aWRlbnRpZmll
cigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVp
bnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2Fs
bGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdl
c3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBk
aWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yNTYpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNh
bGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1l
c3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdv
cml0aG1TSEEyNTY6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVj
YXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRp
Z2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjU2KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAg
ICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
Mzg0LmNwcAppbmRleCBjOTc3NTJkODFjMDA1NDIzOWIwYjg4YzYwYWEzNDNlZmE2NWUxNDc3Li5k
ZTExNTg3NzAzOGI1MjExYjA3MDUxYzI2NGIzMGVhMDUwZDQ1OWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4
NC5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0j
aW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxQQUwvY3J5cHRvL0Ny
eXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAg
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmlkZW50aWZp
ZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rvcjx1
aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNh
bGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGln
ZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOworICAgIGF1dG8g
ZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMzg0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcg
QEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBt
ZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxn
b3JpdGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJl
Y2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYm
IGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBk
aWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzM4NCk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOwogICAgIGlmICghZGlnZXN0KSB7CiAg
ICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTUxMi5jcHAKaW5kZXggMzNlNDgzZGExNWQxMGNjZGI3M2VlMzhmOTNhMTNkNmQ3MTg3MDJlZi4u
MzY1ODkzMDI4NmI4ZjBkZDNmYzYyMjdiOGVjYjNlMTA0NjBiYzNjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1
MTIuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAot
I2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9D
cnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBA
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjppZGVudGlm
aWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0b3I8
dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25D
YWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICBhdXRv
IGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzUxMik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3
IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYg
bWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0Fs
Z29yaXRobVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXBy
ZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sm
JiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8g
ZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV81MTIpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6
OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKICAgICBpZiAoIWRpZ2VzdCkgewog
ICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1Mx
X3YxXzVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKaW5kZXggZjZhYjdhMjE1NTUzYjZjYmZiNDczMDM1NWNm
ZTUzNTJhOWQwMjM1NS4uN2ZjZjVlMjE2ODY1OGY5YTc0MTE5NjYxZmQwMDRjOGQ3MGFmYjg5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKQEAgLTMwLDI2ICszMCwyNiBAQAog
CiAjaW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5o
IgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8UEFML2NyeXB0
by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RkOjpv
cHRpb25hbDxDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQoraW5saW5lIHN0ZDo6b3B0aW9u
YWw8UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQogewogICAgIHN3aXRjaCAoaGFz
aEZ1bmN0aW9uKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToK
LSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsKKyAgICAgICAg
cmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOwogICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKLSAgICAgICAgcmV0dXJuIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzI1NjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTY7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgotICAgICAg
ICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVy
biBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzUxMjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gc2lnblJTQVNTQV9QS0NTMV92MV81KENyeXB0b0FsZ29yaXRobUlkZW50aWYK
ICAgICBhdXRvIGNyeXB0b0RpZ2VzdEFsZ29yaXRobSA9IFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFs
Z29yaXRobShoYXNoKTsKICAgICBpZiAoIWNyeXB0b0RpZ2VzdEFsZ29yaXRobSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0gICAgYXV0byBkaWdlc3QgPSBD
cnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKKyAgICBhdXRvIGRp
Z2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7
CiAgICAgaWYgKCFkaWdlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OwogICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YSwgZGF0YUxlbmd0aCk7CkBAIC05Myw3
ICs5Myw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiB2ZXJpZnlSU0FTU0FfUEtDUzFfdjFf
NShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsCiAgICAgYXV0byBjcnlwdG9EaWdlc3RB
bGdvcml0aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaCk7CiAgICAgaWYg
KCFjcnlwdG9EaWdlc3RBbGdvcml0aG0pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciB9OwotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNy
eXB0b0RpZ2VzdEFsZ29yaXRobSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOwogICAgIGlmICghZGlnZXN0KQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICBkaWdlc3QtPmFk
ZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggZGY5NjFlMDE4YWI3ZmEwM2NkYTU5NGI5MjQxOGY1
OTRlZjk0OGI4Yi4uMDNhOTljOWM0NzU5OGFmYTc3ZDNkOWNhZTQwNzI5ZDQwYTJlYjlkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00
NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkNvb2tp
ZS5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgog
I2luY2x1ZGUgIkRPTUVkaXRvci5oIgogI2luY2x1ZGUgIkRPTVBhdGNoU3VwcG9ydC5oIgogI2lu
Y2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAtOTQsNiArOTMsNyBAQAogI2luY2x1ZGUgIlhQYXRoUmVz
dWx0LmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKKyNp
bmNsdWRlIDxQQUwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9J
ZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CkBAIC0xMzE3
LDcgKzEzMTcsNyBAQCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lT
SEEyNTZIYXNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgVGV4dEVuY29kaW5nIGRvY3Vt
ZW50RW5jb2RpbmcgPSBlbGVtZW50LmRvY3VtZW50KCkudGV4dEVuY29kaW5nKCk7CiAgICAgY29u
c3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZ1RvVXNlID0gZG9jdW1lbnRFbmNvZGluZy5pc1ZhbGlk
KCkgPyBkb2N1bWVudEVuY29kaW5nIDogVVRGOEVuY29kaW5nKCk7CiAgICAgQ1N0cmluZyBjb250
ZW50ID0gZW5jb2RpbmdUb1VzZS5lbmNvZGUoVGV4dE5vZGVUcmF2ZXJzYWw6OmNvbnRlbnRzQXNT
dHJpbmcoZWxlbWVudCksIEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICBhdXRvIGNyeXB0
b0RpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjU2KTsKKyAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVh
dGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgY3J5cHRvRGln
ZXN0LT5hZGRCeXRlcyhjb250ZW50LmRhdGEoKSwgY29udGVudC5sZW5ndGgoKSk7CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRpZ2VzdCA9IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKICAgICBy
ZXR1cm4gbWFrZVN0cmluZygic2hhMjU2LSIsIGJhc2U2NEVuY29kZShkaWdlc3QuZGF0YSgpLCBk
aWdlc3Quc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250
ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcAppbmRleCBmMDU5YjYwMTRjODRiN2ZhNGE3MzZmOTU0YTg5MTMxNGFi
NzNhNWVkLi45Zjk1MjYxNmYxMTE1YWIwMzRhZjIwZDhlZWIwOTUxY2YzZmRjMGYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAg
LTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmgiCiAj
aW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmgiCiAjaW5jbHVkZSAiQ29udGVu
dFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgog
I2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC01NCw2ICs1Myw3IEBACiAjaW5jbHVkZSAiU2VjdXJp
dHlQb2xpY3lWaW9sYXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiVGV4dEVuY29kaW5nLmgiCisjaW5jbHVkZSA8UEFML2NyeXB0by9DcnlwdG9EaWdlc3QuaD4K
ICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5Lmg+CkBAIC0zMDEsMTggKzMwMSwxOCBAQCBib29sIENvbnRlbnRTZWN1cml0eVBv
bGljeTo6YWxsUG9saWNpZXNBbGxvdyhWaW9sYXRlZERpcmVjdGl2ZUNhbGxiYWNrJiYgY2FsbGJh
YwogICAgIHJldHVybiBpc0FsbG93ZWQ7CiB9CiAKLXN0YXRpYyBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobSB0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxn
b3JpdGhtIGFsZ29yaXRobSkKK3N0YXRpYyBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIHRv
Q3J5cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0g
YWxnb3JpdGhtKQogewogICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CiAgICAgY2FzZSBDb250ZW50
U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICByZXR1cm4gQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OwogICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9s
aWN5SGFzaEFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzM4NDsKICAgICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdv
cml0aG06OlNIQV81MTI6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzUxMjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV81MTI7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRl
PgpAQCAtMzMzLDcgKzMzMyw3IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGFzaEluRW5mb3Jj
ZWRBbmRSZXBvcnRPbmx5UG9saWNpZXNQYWlyIENvbnRlbnRTZWN1cml0eVBvCiAgICAgYm9vbCBm
b3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgPSBmYWxzZTsKICAgICBib29sIGZvdW5kSGFzaElu
UmVwb3J0T25seVBvbGljaWVzID0gZmFsc2U7CiAgICAgZm9yIChhdXRvIGFsZ29yaXRobSA6IGFs
Z29yaXRobXMpIHsKLSAgICAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKKyAgICAgICAgYXV0byBj
cnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxn
b3JpdGhtKGFsZ29yaXRobSkpOwogICAgICAgICBjcnlwdG9EaWdlc3QtPmFkZEJ5dGVzKGNvbnRl
bnRDU3RyaW5nLmRhdGEoKSwgY29udGVudENTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBDb250
ZW50U2VjdXJpdHlQb2xpY3lIYXNoIGhhc2ggPSB7IGFsZ29yaXRobSwgY3J5cHRvRGlnZXN0LT5j
b21wdXRlSGFzaCgpIH07CiAgICAgICAgIGlmICghZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVz
ICYmIGFsbFBvbGljaWVzV2l0aERpc3Bvc2l0aW9uQWxsb3coQ29udGVudFNlY3VyaXR5UG9saWN5
OjpEaXNwb3NpdGlvbjo6RW5mb3JjZSwgc3RkOjpmb3J3YXJkPFByZWRpY2F0ZT4ocHJlZGljYXRl
KSwgaGFzaCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5
cHRvRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxZjA3NWFhMzdjYjM0NjIwOTg0N2E1
OTllMWY1NDI4NGY5ZjM4MTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
Q3J5cHRvRGlnZXN0X2gKLSNkZWZpbmUgQ3J5cHRvRGlnZXN0X2gKLQotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dDsKLQotY2xhc3MgQ3J5cHRvRGlnZXN0
IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcnlwdG9EaWdlc3QpOwotcHVibGljOgotICAg
IGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKLSAgICAgICAgU0hBXzEsCi0gICAgICAgIFNIQV8yMjQs
Ci0gICAgICAgIFNIQV8yNTYsCi0gICAgICAgIFNIQV8zODQsCi0gICAgICAgIFNIQV81MTIsCi0g
ICAgfTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gY3JlYXRlKEFs
Z29yaXRobSk7Ci0gICAgfkNyeXB0b0RpZ2VzdCgpOwotCi0gICAgdm9pZCBhZGRCeXRlcyhjb25z
dCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbXB1
dGVIYXNoKCk7Ci0KLXByaXZhdGU6Ci0gICAgQ3J5cHRvRGlnZXN0KCk7Ci0KLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gbV9jb250ZXh0OwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ3J5cHRvRGlnZXN0X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlw
dG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTNmZmM1NjA1MjI2YjY0YjQ5MzczYmVhNjg1ZTkyM2YwMTk5YmI0ZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPENvbW1vbkNyeXB0
by9Db21tb25DcnlwdG8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRv
RGlnZXN0Q29udGV4dCB7Ci0gICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOwot
ICAgIHZvaWQqIGNjQ29udGV4dDsKLX07Ci0KLWlubGluZSBDQ19TSEExX0NUWCogdG9TSEExQ29u
dGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0
LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMV9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5s
aW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjI0Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBj
b250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yMjQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEyNTZf
Q1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NI
QTI1NkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQo
Y29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4
dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEEzODRDb250ZXh0KENyeXB0b0RpZ2Vz
dENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTUx
Ml9DVFgqIHRvU0hBNTEyQ29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewot
ICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV81MTIpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4
dC0+Y2NDb250ZXh0KTsKLX0KLQotQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDog
bV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6
On5DcnlwdG9EaWdlc3QoKQotewotICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsK
LSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKLSAgICAgICAgZGVsZXRl
IHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIGRlbGV0ZSB0b1NI
QTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTI1
NkNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTM4NENv
bnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTUxMkNvbnRl
eHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotCi1zdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Rp
Z2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5h
bGdvcml0aG0gPSBhbGdvcml0aG07Ci0KLSAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7Ci0gICAgICAgIENDX1NIQTFfQ1RY
KiBjb250ZXh0ID0gbmV3IENDX1NIQTFfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+
Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBMV9Jbml0KGNvbnRleHQpOwotICAg
ICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMjI0OiB7Ci0gICAgICAgIENDX1NIQTI1Nl9DVFgqIGNvbnRleHQgPSBuZXcgQ0Nf
U0hBMjU2X0NUWDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRl
eHQ7Ci0gICAgICAgIENDX1NIQTIyNF9Jbml0KGNvbnRleHQpOwotICAgICAgICByZXR1cm4gZGln
ZXN0OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7
Ci0gICAgICAgIENDX1NIQTI1Nl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMjU2X0NUWDsKLSAg
ICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIEND
X1NIQTI1Nl9Jbml0KGNvbnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7Ci0gICAgICAgIENDX1NI
QTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEyX0NUWDsKLSAgICAgICAgZGlnZXN0LT5t
X2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTM4NF9Jbml0KGNv
bnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAgIENDX1NIQTUxMl9DVFgqIGNvbnRl
eHQgPSBuZXcgQ0NfU0hBNTEyX0NUWDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29u
dGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTUxMl9Jbml0KGNvbnRleHQpOwotICAgICAg
ICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0Ojph
ZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBzd2l0Y2gg
KG1fY29udGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzE6Ci0gICAgICAgIENDX1NIQTFfVXBkYXRlKHRvU0hBMUNvbnRleHQobV9jb250ZXh0
LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAgICBDQ19TSEEyMjRfVXBkYXRlKHRv
U0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAg
ICAgIENDX1NIQTI1Nl9VcGRhdGUodG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlu
cHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgQ0NfU0hBMzg0X1VwZGF0ZSh0b1NIQTM4NENvbnRl
eHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICBDQ19TSEE1
MTJfVXBkYXRlKHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3Ro
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0Rp
Z2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAg
c3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8xOgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTFfRElHRVNUX0xF
TkdUSCk7Ci0gICAgICAgIENDX1NIQTFfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEExQ29udGV4
dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEyMjRf
RElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTIyNF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0
b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIHJlc3VsdC5yZXNp
emUoQ0NfU0hBMjU2X0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEEyNTZfRmluYWwocmVz
dWx0LmRhdGEoKSwgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAg
ICByZXN1bHQucmVzaXplKENDX1NIQTM4NF9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hB
Mzg0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzUxMjoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEE1MTJfRElHRVNUX0xFTkdUSCk7Ci0g
ICAgICAgIENDX1NIQTUxMl9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTUxMkNvbnRleHQobV9j
b250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhM2M4YmYyNDNkYzA3MmFiYmE4NDYxODk3MzNh
MGY1M2ZkNmMwNGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5
cHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAyMDE2IFNvZnRBdEhvbWUKLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgot
Ci0jaW5jbHVkZSA8Z2NyeXB0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENy
eXB0b0RpZ2VzdENvbnRleHQgewotICAgIGludCBhbGdvcml0aG07Ci0gICAgZ2NyeV9tZF9oZF90
IG1kOwotfTsKLQotQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0
KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9E
aWdlc3QoKQotewotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdl
c3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCi17Ci0gICAgaW50
IGdjcnlwdEFsZ29yaXRobTsKLQotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9
IEdDUllfTURfU0hBMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEy
MjQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8yNTY6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjU2OwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgotICAg
ICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTM4NDsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgZ2NyeXB0
QWxnb3JpdGhtID0gR0NSWV9NRF9TSEE1MTI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAg
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsK
LSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gZ2NyeXB0QWxnb3JpdGhtOwotCi0g
ICAgZ2NyeV9tZF9vcGVuKCZkaWdlc3QtPm1fY29udGV4dC0+bWQsIGdjcnlwdEFsZ29yaXRobSwg
MCk7Ci0gICAgaWYgKCFkaWdlc3QtPm1fY29udGV4dC0+bWQpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgcmV0dXJuIGRpZ2VzdDsKLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5
dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGdjcnlfbWRfd3Jp
dGUobV9jb250ZXh0LT5tZCwgaW5wdXQsIGxlbmd0aCk7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBD
cnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBpbnQgZGlnZXN0TGVuID0gZ2NyeV9t
ZF9nZXRfYWxnb19kbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKLSAgICBWZWN0b3I8dWludDhf
dD4gcmVzdWx0KGRpZ2VzdExlbik7Ci0KLSAgICBnY3J5X21kX2ZpbmFsKG1fY29udGV4dC0+bWQp
OwotICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBnY3J5X21kX3JlYWQobV9jb250ZXh0LT5tZCwg
MCksIGRpZ2VzdExlbik7Ci0gICAgZ2NyeV9tZF9jbG9zZShtX2NvbnRleHQtPm1kKTsKLQotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExT
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0
R251VExTLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODlhNWQ4MWYyYjRiZTI3
MzJjZWUzZTUyNjMzODZlZDU5Y2IyMTRkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ251dGxzL0Ny
eXB0b0RpZ2VzdEdudVRMUy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0Lmgi
Ci0KLSNpbmNsdWRlIDxnbnV0bHMvZ251dGxzLmg+Ci0jaW5jbHVkZSA8Z251dGxzL2NyeXB0by5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsK
LSAgICBnbnV0bHNfZGlnZXN0X2FsZ29yaXRobV90IGFsZ29yaXRobTsKLSAgICBnbnV0bHNfaGFz
aF9oZF90IGhhc2g7Ci19OwotCi1DcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBt
X2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6
fkNyeXB0b0RpZ2VzdCgpCi17Ci0gICAgZ251dGxzX2hhc2hfZGVpbml0KG1fY29udGV4dC0+aGFz
aCwgMCk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBnbnV0bHNf
ZGlnZXN0X2FsZ29yaXRobV90IGdudXRsc0FsZ29yaXRobTsKLQotICAgIHN3aXRjaCAoYWxnb3Jp
dGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKLSAgICAg
ICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEExOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDogewotICAgICAg
ICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTIyNDsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKLSAgICAg
ICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEyNTY7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7Ci0gICAg
ICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMzg0OwotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogewotICAg
ICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTUxMjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIH0KLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2Vz
dChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0g
Z251dGxzQWxnb3JpdGhtOwotCi0gICAgaW50IHJldCA9IGdudXRsc19oYXNoX2luaXQoJmRpZ2Vz
dC0+bV9jb250ZXh0LT5oYXNoLCBnbnV0bHNBbGdvcml0aG0pOwotICAgIGlmIChyZXQgIT0gR05V
VExTX0VfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZGln
ZXN0OwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQs
IHNpemVfdCBsZW5ndGgpCi17Ci0gICAgZ251dGxzX2hhc2gobV9jb250ZXh0LT5oYXNoLCBpbnB1
dCwgbGVuZ3RoKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhh
c2goKQotewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgaW50IGRpZ2VzdExlbiA9
IGdudXRsc19oYXNoX2dldF9sZW4obV9jb250ZXh0LT5hbGdvcml0aG0pOwotICAgIHJlc3VsdC5y
ZXNpemUoZGlnZXN0TGVuKTsKLQotICAgIGdudXRsc19oYXNoX291dHB1dChtX2NvbnRleHQtPmhh
c2gsIHJlc3VsdC5kYXRhKCkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRv
L3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRv
L3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
NmNjMTkyYzJiMzAzOTU5NDMwZjI0OWM3MzYzNGIxMzljN2E4YTQ0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Ny
eXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNyeXB0b0Rp
Z2VzdC5oIgotCi0jaW5jbHVkZSA8d2luY3J5cHQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG0gYWxnb3JpdGhtOwotICAgIEhDUllQVFBST1YgaENvbnRleHQgeyAwIH07Ci0gICAgSENSWVBU
SEFTSCBoSGFzaCB7IDAgfTsKLX07Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAg
ICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKLXsKLX0KLQotQ3J5cHRvRGln
ZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLSAgICBpZiAoSENSWVBUSEFTSCBoSGFzaCA9IG1fY29u
dGV4dC0+aEhhc2gpCi0gICAgICAgIENyeXB0RGVzdHJveUhhc2goaEhhc2gpOwotICAgIGlmIChI
Q1JZUFRQUk9WIGhDb250ZXh0ID0gbV9jb250ZXh0LT5oQ29udGV4dCkKLSAgICAgICAgQ3J5cHRS
ZWxlYXNlQ29udGV4dChoQ29udGV4dCwgMCk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9E
aWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKEFsZ29yaXRobSBhbGdvcml0aG0pCi17Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwot
ICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBhbGdvcml0aG07Ci0gICAgaWYgKCFD
cnlwdEFjcXVpcmVDb250ZXh0KCZkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIG51bGxwdHIs
IG51bGxwdHIgLyogdXNlIGRlZmF1bHQgcHJvdmlkZXIgKi8sIFBST1ZfUlNBX0FFUywgQ1JZUFRf
VkVSSUZZQ09OVEVYVCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGJvb2wgc3VjY2Vl
ZGVkID0gZmFsc2U7Ci0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewotICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0
ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQTEsIDAsIDAsICZkaWdl
c3QtPm1fY29udGV4dC0+aEhhc2gpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogewotICAgICAgICBzdWNjZWVkZWQgPSBD
cnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8yNTYs
IDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOwotICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogewotICAgICAgICBz
dWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBD
QUxHX1NIQV8zODQsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjog
ewotICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQt
PmhDb250ZXh0LCBDQUxHX1NIQV81MTIsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQotICAgIGlmIChzdWNjZWVkZWQpCi0gICAg
ICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgQ3J5cHRv
RGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAg
ICBpZiAoIWlucHV0IHx8ICFsZW5ndGgpCi0gICAgICAgIHJldHVybjsKLSAgICBSRUxFQVNFX0FT
U0VSVChDcnlwdEhhc2hEYXRhKG1fY29udGV4dC0+aEhhc2gsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgQllURSo+KGlucHV0KSwgbGVuZ3RoLCAwKSk7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlw
dG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0Owot
ICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlcjsKLSAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZm
ZXJTaXplID0gc2l6ZW9mKGRpZ2VzdExlbmd0aEJ1ZmZlcik7Ci0KLSAgICBSRUxFQVNFX0FTU0VS
VChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIU0laRSwgcmVpbnRl
cnByZXRfY2FzdDxCWVRFKj4oJmRpZ2VzdExlbmd0aEJ1ZmZlciksICZkaWdlc3RMZW5ndGhCdWZm
ZXJTaXplLCAwKSk7Ci0gICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RMZW5ndGhCdWZmZXIpOwotCi0g
ICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5oSGFzaCwgSFBf
SEFTSFZBTCwgcmVzdWx0LmRhdGEoKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlciwgMCkpOwotICAgIFJF
TEVBU0VfQVNTRVJUKHJlc3VsdC5zaXplKCkgPT0gZGlnZXN0TGVuZ3RoQnVmZmVyKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Np
b24uY3BwCmluZGV4IGMzNDU1N2Q5N2NjZTcwYTEyNzA2OGZiYjQwZjg2NGE0NDg2NTRhM2EuLjM2
OWJkZDViODQyMTZlNzA5M2RiNTNmN2I1MWVkYmIzYzAwOGQ2ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Np
b24uY3BwCkBAIC0zMSwxMSArMzEsMTEgQEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyU291cC5oIgotI2luY2x1ZGUgIkNyeXB0b0Rp
Z2VzdC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHVW5pcXVlUHRyU291
cC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgor
I2luY2x1ZGUgPFBBTC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8Z2xpYi9nc3Rk
aW8uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgpAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWNlcnRpZmljYXRlRGF0
YSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIGRpZ2VzdCA9
IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsK
KyAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVz
KGNlcnRpZmljYXRlRGF0YS0+ZGF0YSwgY2VydGlmaWNhdGVEYXRhLT5sZW4pOwogCiAgICAgICAg
IGF1dG8gaGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9j
bWFrZS9XZWJLaXRGUy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZQppbmRleCAy
OWEwOTY5MDM4ZmFhNzQ0ZTFhOGM1OGYzNTZhZDA3M2YwMDUyNWJkLi41MTMwZmZjYmNjN2M5Y2U3
NTE0YWY0ZDU1M2JkOGE0ZjA1MDE0NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0
RlMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlCkBAIC0xMCw2ICsxMCw5
IEBAIGVuZGlmICgpCiBpZiAoTk9UIFdFQkNPUkVfRElSKQogICAgIHNldChXRUJDT1JFX0RJUiAi
JHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViQ29yZSIpCiBlbmRpZiAoKQoraWYgKE5PVCBQ
QUxfRElSKQorICAgIHNldChQQUxfRElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJD
b3JlL1BBTCIpCitlbmRpZiAoKQogaWYgKE5PVCBXRUJLSVRfRElSKQogICAgIHNldChXRUJLSVRf
RElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJLaXQiKQogZW5kaWYgKCkKZGlmZiAt
LWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggNzlhMTdiYWNhMGRm
NTMyOGU3YjNkMTE5NzJiYjZiN2I0N2UyZTZmYS4uN2FjOWQ4YzBmMWJkOGMyMjMyOWQwMDBmOWM4
MDU5NTU1NjNlNTZlZSAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0
cy50eHQKQEAgLTExNSw2ICsxMTUsNyBAQCBlbHNlICgpCiAgICAgc2V0KFdlYkNvcmVfTElCUkFS
WV9UWVBFIFNUQVRJQykKIGVuZGlmICgpCiAKK3NldChQQUxfTElCUkFSWV9UWVBFIFNUQVRJQykK
IHNldChXZWJLaXRfTElCUkFSWV9UWVBFIFNIQVJFRCkKIHNldChXZWJLaXQyX0xJQlJBUllfVFlQ
RSBTSEFSRUQpCiBzZXQoV2ViQ29yZVRlc3RTdXBwb3J0X0xJQlJBUllfVFlQRSBTVEFUSUMpCmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggMTRmNjQ3MTYwOGU5NGVhOTRl
N2QyZGJmZmFiZDZmNGI4ZTVjZDczZS4uZjJiZjc1ZDVhOWE2NDU1NGFkNTk1OTFiYmIzZmJjOTAy
M2ZjYjNiZiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDE3LTAxLTEwICBEb24gT2xtc3RlYWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNv
bT4gYW5kIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogU291cmNlL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9j
bWFrZS9XZWJLaXRGUy5jbWFrZToKKwogMjAxNi0xMi0yMSAgS29uc3RhbnRpbiBUb2thcmV2ICA8
YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAgICAgc2V0IFBZVEhPTlBBVEggaW4gc2VwYXJhdGUg
Q09NTUFORCBkb2Vzbid0IHdvcmsgd2l0aCBhbGwgQ01ha2UgZ2VuZXJhdG9ycwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299298</attachid>
            <date>2017-01-19 18:34:40 -0800</date>
            <delta_ts>2017-01-19 18:52:02 -0800</delta_ts>
            <desc>PAL with suggested revisions</desc>
            <filename>bug-143358-pal.diff</filename>
            <type>text/plain</type>
            <size>71381</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggYmYzYzRl
Zi4uYmIzMzE4YyAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50
eHQKQEAgLTExNCw2ICsxMTQsNyBAQCBlbHNlICgpCiBlbmRpZiAoKQogCiBzZXQoSmF2YVNjcmlw
dENvcmVfTElCUkFSWV9UWVBFIFNIQVJFRCkKK3NldChQQUxfTElCUkFSWV9UWVBFIFNUQVRJQykK
IHNldChXZWJLaXRfTElCUkFSWV9UWVBFIFNIQVJFRCkKIHNldChXZWJLaXQyX0xJQlJBUllfVFlQ
RSBTSEFSRUQpCiBzZXQoV2ViQ29yZVRlc3RTdXBwb3J0X0xJQlJBUllfVFlQRSBTVEFUSUMpCmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNjQ5NDVhNC4uZWYzMTc2ZCAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDE3LTAxLTE5ICBEb24gT2xtc3RlYWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4gYW5kIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1
Y2luZyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogU291cmNlL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJL
aXRGUy5jbWFrZToKKwogMjAxNy0wMS0xNyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIEVOQUJMRShVU0VSX1RJTUlORykgTm90IERlZmluZWQgZm9yIEFw
cGxlIFdpbmRvd3Mgb3IgT1MgWCBQb3J0cwpkaWZmIC0tZ2l0IGEvU291cmNlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFiOGEyZGMuLjE1ZmRmMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvQ01ha2VMaXN0cy50eHQK
QEAgLTQ2LDYgKzQ2LDcgQEAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhXVEYgJHtB
RERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxB
R1MoSmF2YVNjcmlwdENvcmUgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKIAogaWYgKEVO
QUJMRV9XRUJDT1JFKQorICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoUEFMICR7
QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAgICAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxF
Ul9GTEFHUyhXZWJDb3JlVGVzdFN1cHBvcnQgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkK
ICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmUgJHtBRERJVElPTkFM
X0NPTVBJTEVSX0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdl
YkNvcmVEZXJpdmVkU291cmNlcyAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBiNTA0M2M1Li42OGE1OTczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTEsNiArMSw3IEBACiBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44LjEyKQog
aW5jbHVkZShXZWJLaXRDb21tb24pCiBzZXRfcHJvcGVydHkoRElSRUNUT1JZIC4gUFJPUEVSVFkg
Rk9MREVSICJXZWJDb3JlIikKK2FkZF9zdWJkaXJlY3RvcnkoUEFML3BhbCkKIAogc2V0KFdlYkNv
cmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpAQCAtMjk0
NSw2ICsyOTQ2LDcgQEAgc2V0KFdlYkNvcmVfUExVR19JTlNfUkVTT1VSQ0VTCiBzZXQoV2ViQ29y
ZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJSQVJJRVN9CiAgICAgSmF2YVNjcmlwdENvcmUke0RF
QlVHX1NVRkZJWH0KKyAgICBQQUwke0RFQlVHX1NVRkZJWH0KICkKIAogaWYgKEVOQUJMRV9MRUdB
Q1lfRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM2NzJhOTIuLjdkMzQ5NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw3NSBAQAorMjAxNy0wMS0xOSAgRG9uIE9sbXN0ZWFkIDxkb24ub2xt
c3RlYWRAYW0uc29ueS5jb20+IGFuZCBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExh
eWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9QQUwueGNj
b25maWc6IEFkZGVkLgorICAgICAgICAqIFBBTC9jb25maWcuaDogQWRkZWQuCisgICAgICAgICog
UEFML3BhbC9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogUEFML3BhbC9QbGF0Zm9y
bUVmbC5jbWFrZTogQWRkZWQuCisgICAgICAgICogUEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZTog
QWRkZWQuCisgICAgICAgICogUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQuCisgICAg
ICAgICogUEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZTogQWRkZWQuCisgICAgICAgICogUEFML3Bh
bC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmguCisgICAgICAgICogUEFML3BhbC9jcnlwdG8vY29t
bW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1v
bkNyeXB0by5jcHAuCisgICAgICAgIChQQUw6OnRvU0hBMUNvbnRleHQpOgorICAgICAgICAoUEFM
Ojp0b1NIQTIyNENvbnRleHQpOgorICAgICAgICAoUEFMOjp0b1NIQTI1NkNvbnRleHQpOgorICAg
ICAgICAoUEFMOjp0b1NIQTM4NENvbnRleHQpOgorICAgICAgICAoUEFMOjp0b1NIQTUxMkNvbnRl
eHQpOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAg
IChQQUw6OkNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChQQUw6OkNyeXB0
b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyk6
CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIFBB
TC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQu
Y3BwLgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAg
IChQQUw6OkNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChQQUw6OkNyeXB0
b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyk6
CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIFBB
TC9wYWwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMu
Y3BwLgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAg
IChQQUw6OkNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChQQUw6OkNyeXB0
b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyk6
CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIFBB
TC9wYWwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwLgorICAgICAg
ICAoUEFMOjpDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChQQUw6OkNyeXB0
b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyk6CisgICAgICAgIChQ
QUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFNjcmlwdHMv
RW5mb3JjZVBBTExheWVyaW5nLnB5OiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobVNIQTE6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTIy
NDo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEyNTYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdl
c3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdCk6Cisg
ICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KToKKyAgICAgICAg
KiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3Jl
OjpzaWduUlNBU1NBX1BLQ1MxX3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UlNBU1NB
X1BLQ1MxX3YxXzUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFz
aCk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVzKToKKwog
MjAxNy0wMS0xOSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U10gTW92ZSB0aGUgUERGIHBhc3N3b3JkIHZpZXcgaW50byBpdHMgb3duIGNsYXNzIGZvciByZXVz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmln
IGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YmEyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcKQEAgLTAsMCArMSwzNiBAQAor
Ly8gQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVkZSAiV2ViQ29yZS54
Y2NvbmZpZyIKKworSU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfJChDT05GSUdVUkFUSU9O
KSk7CitJTlNUQUxMX1BBVEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwvbGliOworCitTS0lQX0lO
U1RBTEwgPSAkKFNLSVBfSU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFMTCkpOworU0tJUF9JTlNU
QUxMXyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9OTyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9ZRVMgPSBO
TzsKKworUFJPRFVDVF9OQU1FID0gUEFMOworRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CitFWFBP
UlRFRF9TWU1CT0xTX0ZJTEUgPSA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY29u
ZmlnLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNTQ4OGM4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9jb25maWcuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8K
KworI2lmIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgJiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVk
KEJVSUxESU5HX1dJVEhfQ01BS0UpCisjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKKyNlbmRpZgor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9z
Lmg+CisKKyNpZmRlZiBfX0FQUExFX18KKyNkZWZpbmUgSEFWRV9GVU5DX1VTTEVFUCAxCisjZW5k
aWYgLyogX19BUFBMRV9fICovCisKKyNpZiBPUyhXSU5ET1dTKQorCisjaWZuZGVmIF9XSU4zMl9X
SU5OVAorI2RlZmluZSBfV0lOMzJfV0lOTlQgMHg2MDEKKyNlbmRpZgorCisjaWZuZGVmIFdJTlZF
UgorI2RlZmluZSBXSU5WRVIgMHgwNjAxCisjZW5kaWYKKworI2VuZGlmIC8qIE9TKFdJTkRPV1Mp
ICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisvLyBUaGVzZSB1bmRlZnMgbWF0Y2ggdXAgd2l0
aCBkZWZpbmVzIGluIFdlYkNvcmVQcmVmaXguaCBmb3IgTWFjIE9TIFguCisvLyBIZWxwcyB1cyBj
YXRjaCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5IGFjY2lkZW50IGluIGNvZGUgYW5k
IGRvZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgorI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQor
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKKyNpbmNsdWRlIDxjaXNvNjQ2PgorCisjZW5k
aWYKKworI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9D
TWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2E4MDc0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4
dApAQCAtMCwwICsxLDQzIEBACitzZXQoUEFMX0hFQURFUlMKKyAgICBjcnlwdG8vQ3J5cHRvRGln
ZXN0LmgKKykKKworc2V0KFBBTF9TT1VSQ0VTCispCisKK3NldChQQUxfSU5DTFVERV9ESVJFQ1RP
UklFUworICAgICIke1BBTF9ESVJ9IgorICAgICIke1BBTF9ESVJ9L3BhbCIKKyAgICAiJHtQQUxf
RElSfS9wYWwvY3J5cHRvIgorKQorCitzZXQoUEFMX0xJQlJBUklFUworICAgIFdURgorKQorCitX
RUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKworV0VCS0lUX1dSQVBfU09V
UkNFTElTVCgke1BBTF9TT1VSQ0VTfSkKK1dFQktJVF9GUkFNRVdPUksoUEFMKQorCitpZiAoVU5J
WCkKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAgIFRBUkdFVCBQQUwKKyAgICAgICAg
UE9TVF9CVUlMRAorICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7V0VCQ09S
RV9ESVJ9L3NjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5ICQ8VEFSR0VUX0ZJTEU6UEFMPiAk
e1BBTF9ESVJ9CisgICAgICAgIFZFUkJBVElNKQorZW5kaWYgKCkKKworaWYgKE1TVkMpCisgICAg
YWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBSRV9CVUlM
RAorICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVF9MSUJSQVJJRVNf
RElSfS90b29scy9zY3JpcHRzL2F1dG8tdmVyc2lvbi5wbCAke0RFUklWRURfU09VUkNFU19ESVJ9
CisgICAgICAgIFZFUkJBVElNKQorCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBU
QVJHRVQgUEFMCisgICAgICAgIFBPU1RfQlVJTEQKKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhF
Q1VUQUJMRX0gJHtXRUJLSVRfTElCUkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0cy92ZXJzaW9uLXN0
YW1wLnBsICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0gJDxUQVJHRVRfRklMRTpQQUw+CisgICAgICAg
IFZFUkJBVElNKQorZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNt
YWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NWMxODkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0w
LDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0Ny
eXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RL
LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NWMxODkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0
L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3Jt
TWFjLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmOTY4ZWM0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFr
ZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCisgICAgY3J5cHRvL2Nv
bW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCispCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42ZjY5MTlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Q
bGF0Zm9ybVdpbi5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VT
CisgICAgY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCispCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmUxMDk0MzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBDcnlwdG9EaWdlc3RfaAorI2RlZmluZSBDcnlwdG9EaWdlc3RfaAorCisj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQ7CisKK2NsYXNzIENy
eXB0b0RpZ2VzdCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvRGlnZXN0KTsKK3B1
YmxpYzoKKyAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7CisgICAgICAgIFNIQV8xLAorICAgICAg
ICBTSEFfMjI0LAorICAgICAgICBTSEFfMjU2LAorICAgICAgICBTSEFfMzg0LAorICAgICAgICBT
SEFfNTEyLAorICAgIH07CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+
IGNyZWF0ZShBbGdvcml0aG0pOworICAgIH5DcnlwdG9EaWdlc3QoKTsKKworICAgIHZvaWQgYWRk
Qnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOworICAgIFZlY3Rvcjx1aW50
OF90PiBjb21wdXRlSGFzaCgpOworCitwcml2YXRlOgorICAgIENyeXB0b0RpZ2VzdCgpOworCisg
ICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+IG1fY29udGV4dDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFBBTAorCisjZW5kaWYgLy8gQ3J5cHRvRGlnZXN0X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdl
c3RDb21tb25DcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vY29tbW9u
Y3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uODZhMjQxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3Bw
CkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNy
eXB0by5oPgorCituYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQg
eworICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKKyAgICB2b2lkKiBjY0Nv
bnRleHQ7Cit9OworCitpbmxpbmUgQ0NfU0hBMV9DVFgqIHRvU0hBMUNvbnRleHQoQ3J5cHRvRGln
ZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PENDX1NIQTFfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lubGluZSBDQ19TSEEyNTZf
Q1RYKiB0b1NIQTIyNENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAg
ICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjI0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQt
PmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyNTZDb250ZXh0KENy
eXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29y
aXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5l
IENDX1NIQTUxMl9DVFgqIHRvU0hBMzg0Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250
ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RY
Kj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTUx
MkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29u
dGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7
Cit9CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcg
Q3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0
KCkKK3sKKyAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6CisgICAgICAgIGRlbGV0ZSB0b1NIQTFDb250ZXh0
KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAgICBkZWxldGUgdG9TSEEyMjRDb250ZXh0KG1f
Y29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAgICBkZWxldGUgdG9TSEEyNTZDb250ZXh0KG1fY29u
dGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMzg0OgorICAgICAgICBkZWxldGUgdG9TSEEzODRDb250ZXh0KG1fY29udGV4
dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfNTEyOgorICAgICAgICBkZWxldGUgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5n
ZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKKworc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0g
YWxnb3JpdGhtKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChu
ZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxn
b3JpdGhtOworCisgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAgICAgICBDQ19TSEExX0NUWCogY29udGV4dCA9IG5l
dyBDQ19TSEExX0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNv
bnRleHQ7CisgICAgICAgIENDX1NIQTFfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRp
Z2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDog
eworICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7Cisg
ICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBD
Q19TSEEyMjRfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9Cisg
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogeworICAgICAgICBDQ19T
SEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7CisgICAgICAgIGRpZ2VzdC0+
bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEEyNTZfSW5pdChj
b250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250
ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0Nv
bnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEEzODRfSW5pdChjb250ZXh0KTsKKyAgICAg
ICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzUxMjogeworICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NI
QTUxMl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0
OworICAgICAgICBDQ19TSEE1MTJfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2Vz
dDsKKyAgICB9CisgICAgfQorfQorCit2b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qg
dm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCit7CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFs
Z29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAg
ICAgICBDQ19TSEExX1VwZGF0ZSh0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0
LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzIyNDoKKyAgICAgICAgQ0NfU0hBMjI0X1VwZGF0ZSh0b1NIQTIyNENvbnRleHQo
bV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAgICBDQ19TSEEyNTZf
VXBkYXRlKHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8z
ODQ6CisgICAgICAgIENDX1NIQTM4NF9VcGRhdGUodG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5n
ZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAgICAgICAgQ0NfU0hBNTEyX1VwZGF0ZSh0b1NI
QTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVI
YXNoKCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAgIHN3aXRjaCAobV9jb250
ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MToKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEExX0RJR0VTVF9MRU5HVEgpOworICAgICAg
ICBDQ19TSEExX0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMUNvbnRleHQobV9jb250ZXh0Lmdl
dCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yMjQ6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjI0X0RJR0VTVF9MRU5HVEgp
OworICAgICAgICBDQ19TSEEyMjRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyMjRDb250ZXh0
KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTI1Nl9E
SUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMjU2X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRv
U0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgcmVzdWx0LnJlc2l6
ZShDQ19TSEEzODRfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NIQTM4NF9GaW5hbChyZXN1
bHQuZGF0YSgpLCB0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAg
IHJlc3VsdC5yZXNpemUoQ0NfU0hBNTEyX0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEE1
MTJfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSkp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBu
YW1lc3BhY2UgUEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5
cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjBhNzhhZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApAQCAtMCwwICsxLDk3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgU29mdEF0SG9tZQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDxnY3J5cHQuaD4KKworbmFtZXNwYWNl
IFBBTCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKKyAgICBpbnQgYWxnb3JpdGht
OworICAgIGdjcnlfbWRfaGRfdCBtZDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0
KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5
cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxn
b3JpdGhtKQoreworICAgIGludCBnY3J5cHRBbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29y
aXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAg
ICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTE7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIGdjcnlwdEFsZ29y
aXRobSA9IEdDUllfTURfU0hBMjI0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZ
X01EX1NIQTI1NjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzM4NDoKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEzODQ7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81
MTI6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBNTEyOworICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3Qo
bmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdj
cnlwdEFsZ29yaXRobTsKKworICAgIGdjcnlfbWRfb3BlbigmZGlnZXN0LT5tX2NvbnRleHQtPm1k
LCBnY3J5cHRBbGdvcml0aG0sIDApOworICAgIGlmICghZGlnZXN0LT5tX2NvbnRleHQtPm1kKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBkaWdlc3Q7Cit9CisKK3ZvaWQg
Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkK
K3sKKyAgICBnY3J5X21kX3dyaXRlKG1fY29udGV4dC0+bWQsIGlucHV0LCBsZW5ndGgpOworfQor
CitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgaW50
IGRpZ2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW4pOworCisgICAgZ2NyeV9tZF9m
aW5hbChtX2NvbnRleHQtPm1kKTsKKyAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSwgZ2NyeV9tZF9y
ZWFkKG1fY29udGV4dC0+bWQsIDApLCBkaWdlc3RMZW4pOworICAgIGdjcnlfbWRfY2xvc2UobV9j
b250ZXh0LT5tZCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBQ
QUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2dudXRscy9Dcnlw
dG9EaWdlc3RHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ251dGxz
L0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNTU2YjhmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5
cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIK
KworI2luY2x1ZGUgPGdudXRscy9nbnV0bHMuaD4KKyNpbmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+
CisKK25hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAg
Z251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBhbGdvcml0aG07CisgICAgZ251dGxzX2hhc2hfaGRf
dCBoYXNoOworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250
ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5Dcnlw
dG9EaWdlc3QoKQoreworICAgIGdudXRsc19oYXNoX2RlaW5pdChtX2NvbnRleHQtPmhhc2gsIDAp
OworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0
ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgZ251dGxzX2RpZ2Vz
dF9hbGdvcml0aG1fdCBnbnV0bHNBbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkg
eworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIGdu
dXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6IHsKKyAgICAgICAgZ251
dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEyMjQ7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIGdu
dXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjU2OworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAgICBn
bnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTM4NDsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKKyAgICAgICAg
Z251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEE1MTI7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3
IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdudXRs
c0FsZ29yaXRobTsKKworICAgIGludCByZXQgPSBnbnV0bHNfaGFzaF9pbml0KCZkaWdlc3QtPm1f
Y29udGV4dC0+aGFzaCwgZ251dGxzQWxnb3JpdGhtKTsKKyAgICBpZiAocmV0ICE9IEdOVVRMU19F
X1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRpZ2VzdDsK
K30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXpl
X3QgbGVuZ3RoKQoreworICAgIGdudXRsc19oYXNoKG1fY29udGV4dC0+aGFzaCwgaW5wdXQsIGxl
bmd0aCk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkK
K3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAgIGludCBkaWdlc3RMZW4gPSBnbnV0
bHNfaGFzaF9nZXRfbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKKyAgICByZXN1bHQucmVzaXpl
KGRpZ2VzdExlbik7CisKKyAgICBnbnV0bHNfaGFzaF9vdXRwdXQobV9jb250ZXh0LT5oYXNoLCBy
ZXN1bHQuZGF0YSgpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vd2luL0NyeXB0
b0RpZ2VzdFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by93aW4vQ3J5cHRv
RGlnZXN0V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTgzODg0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vd2luL0Ny
eXB0b0RpZ2VzdFdpbi5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDx3aW5k
b3dzLmg+CisjaW5jbHVkZSA8d2luY3J5cHQuaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVj
dCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKKyAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdv
cml0aG07CisgICAgSENSWVBUUFJPViBoQ29udGV4dCB7IDAgfTsKKyAgICBIQ1JZUFRIQVNIIGhI
YXNoIHsgMCB9OworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9j
b250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5D
cnlwdG9EaWdlc3QoKQoreworICAgIGlmIChIQ1JZUFRIQVNIIGhIYXNoID0gbV9jb250ZXh0LT5o
SGFzaCkKKyAgICAgICAgQ3J5cHREZXN0cm95SGFzaChoSGFzaCk7CisgICAgaWYgKEhDUllQVFBS
T1YgaENvbnRleHQgPSBtX2NvbnRleHQtPmhDb250ZXh0KQorICAgICAgICBDcnlwdFJlbGVhc2VD
b250ZXh0KGhDb250ZXh0LCAwKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4g
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoQWxnb3JpdGhtIGFsZ29yaXRobSkKK3sKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGln
ZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRobTsKKyAgICBpZiAoIUNyeXB0QWNx
dWlyZUNvbnRleHQoJmRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgbnVsbHB0ciwgbnVsbHB0
ciAvKiB1c2UgZGVmYXVsdCBwcm92aWRlciAqLywgUFJPVl9SU0FfQUVTLCBDUllQVF9WRVJJRllD
T05URVhUKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYm9vbCBzdWNjZWVkZWQgPSBm
YWxzZTsKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChk
aWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBMSwgMCwgMCwgJmRpZ2VzdC0+bV9j
b250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3Jl
YXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzI1NiwgMCwgMCwg
JmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7CisgICAgICAgIHN1Y2NlZWRl
ZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hB
XzM4NCwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7CisgICAg
ICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRl
eHQsIENBTEdfU0hBXzUxMiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICB9CisgICAgaWYgKHN1Y2NlZWRlZCkKKyAgICAgICAgcmV0
dXJuIGRpZ2VzdDsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6
OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmICgh
aW5wdXQgfHwgIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworICAgIFJFTEVBU0VfQVNTRVJUKENy
eXB0SGFzaERhdGEobV9jb250ZXh0LT5oSGFzaCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBCWVRF
Kj4oaW5wdXQpLCBsZW5ndGgsIDApKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2Vz
dDo6Y29tcHV0ZUhhc2goKQoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CisgICAgRFdP
UkQgZGlnZXN0TGVuZ3RoQnVmZmVyOworICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlclNpemUg
PSBzaXplb2YoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0
R2V0SGFzaFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hTSVpFLCByZWludGVycHJldF9j
YXN0PEJZVEUqPigmZGlnZXN0TGVuZ3RoQnVmZmVyKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlclNpemUs
IDApKTsKKyAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbmd0aEJ1ZmZlcik7CisKKyAgICBSRUxF
QVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIVkFM
LCByZXN1bHQuZGF0YSgpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyLCAwKSk7CisgICAgUkVMRUFTRV9B
U1NFUlQocmVzdWx0LnNpemUoKSA9PSBkaWdlc3RMZW5ndGhCdWZmZXIpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpp
bmRleCBmM2FlODliLi4xZjBlMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNjks
OCArNjksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2F1
ZGlvL2VmbC9BdWRpb0J1c0VmbC5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5
cHRvRGlnZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZWZsL0N1cnNvckVmbC5jcHAKICAg
ICBwbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL0RyYWdJbWFn
ZUVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjI0MjE2Mi4uYjFjNmU2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTY4LDggKzY4LDYgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9nbGliL0F1ZGlvQnVzR0xpYi5j
cHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAot
CiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9nbGliL0dhbWVwYWRzR2xpYi5jcHAKIAogICAgIHBsYXRm
b3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUxLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bU1hYy5jbWFrZQppbmRleCA0YzUxZTJhLi43ZGMxZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5j
bWFrZQpAQCAtMzMzLDggKzMzMyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9XZWJDb3Jl
TlNFcnJvckV4dHJhcy5tbQogCi0gICAgcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9Dcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCi0KICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkLmNwcAogICAgIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5j
cHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA4ZDdmNTA4Li5hNGE5OTA5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtNzMsOCArNzMsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAog
Ci0gICAgcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCi0KICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCiAKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU2NyaXB0cy9FbmZvcmNlUEFMTGF5ZXJpbmcucHkgYi9Tb3VyY2UvV2ViQ29yZS9TY3JpcHRz
L0VuZm9yY2VQQUxMYXllcmluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lNWU2ZjNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9FbmZv
cmNlUEFMTGF5ZXJpbmcucHkKQEAgLTAsMCArMSw0OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHN5cworaW1wb3J0IG9zCisKK2FyY2hpdmVGaWxlID0g
c3lzLmFyZ3ZbMV0KK3NvdXJjZURpcmVjdG9yeSA9IHN5cy5hcmd2WzJdCisKK3N5bWJvbE5hbWVz
cGFjZUNvbW1hbmQgPSAibm0gLWdVaiAiICsgYXJjaGl2ZUZpbGUgKyAiIHwgYysrZmlsdCB8IGdy
ZXAgXCJeV2ViQ29yZTo6XCIgfCBncmVwIC12IFwiXldlYkNvcmU6OlBBTDo6XCIiCisKK3J2ID0g
b3Muc3lzdGVtKHN5bWJvbE5hbWVzcGFjZUNvbW1hbmQgKyAiID4gL2Rldi9udWxsIikKKworaWYg
cnYgPT0gMDoKKyAgICBwcmludCgiVGhlIGZvbGxvd2luZyBzeW1ib2xzIGFyZSBkZWNsYXJlZCBp
biBQQUwgYnV0IGFyZSBpbiB0aGUgV2ViQ29yZSBuYW1lc3BhY2UgKHdoaWNoIGlzIGZvcmJpZGRl
biB0byBwcmVzZXJ2ZSBsYXllcmluZyk6IikKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKyAgICBv
cy5zeXN0ZW0oc3ltYm9sTmFtZXNwYWNlQ29tbWFuZCkKKyAgICBzeXMuZXhpdCgxKQorCitpbmNs
dWRlU2VhcmNoQ29tbWFuZCA9ICJmaW5kICIgKyBzb3VyY2VEaXJlY3RvcnkgKyAiIFwoIC1uYW1l
IFwiKi5jcHBcIiAtb3IgLW5hbWUgXCIqLmhcIiAtb3IgLW5hbWUgXCIqLm1cIiAtb3IgLW5hbWUg
XCIqLm1tXCIgXCkgLWV4ZWMgZ3JlcCAtcUUgXCJeIyhpbmNsdWRlfGltcG9ydCkgLldlYkNvcmUv
XCIge30gXDsgLXByaW50IgorCitydiA9IG9zLnN5c3RlbSgiZXhpdCAkKCIgKyBpbmNsdWRlU2Vh
cmNoQ29tbWFuZCArICIgfCB3YyAtbCApIikKKworaWYgcnYgIT0gMDoKKyAgICBwcmludCgiVGhl
IGZvbGxvd2luZyBmaWxlcyBpbiBQQUwgaW5jbHVkZSBoZWFkZXJzIGZyb20gV2ViQ29yZSAod2hp
Y2ggaXMgZm9yYmlkZGVuIHRvIHByZXNlcnZlIGxheWVyaW5nKToiKQorICAgIHN5cy5zdGRvdXQu
Zmx1c2goKQorICAgIG9zLnN5c3RlbShpbmNsdWRlU2VhcmNoQ29tbWFuZCkKKyAgICBzeXMuZXhp
dCgxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEExLmNwcAppbmRleCAwYzhkZmRkLi5hZGRmODRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEx
LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNp
bmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5
cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTE6OmlkZW50aWZpZXIo
KSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChWZWN0b3I8dWludDhf
dD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFj
ayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
b3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgYXV0byBkaWdlc3Qg
PSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhP
cGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBD
cnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWwKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hB
MTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29u
c3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5
cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKKyAgICBh
dXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzEpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVD
YWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKaW5kZXgg
NmNhMWFlZS4uNjM0YzVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCkBAIC0yOCw5ICsyOCw5IEBA
CiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlw
dG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxi
YWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1
ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGln
ZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7CiAgICAg
aWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3Ip
OwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGht
U0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2sm
JiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KGNv
bnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0Ojpj
cmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOworICAgIGF1dG8gZGlnZXN0
ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjI0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2so
KTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCmluZGV4IDczNjYwZjUu
LjBlYTA1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYg
RU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0
b0FsZ29yaXRobVNIQTI1Njo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0g
ICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgIGlmICghZGln
ZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6
ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBF
eGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdChjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
Nik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAg
ICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAppbmRleCBjOTc3NTJkLi44OGYzMTM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEEzODQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShT
VUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNs
dWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0
aG1TSEEzODQ6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4
NDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8g
ZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8zODQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6
OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKICAgICBpZiAoIWRpZ2VzdCkgewog
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChW
ZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9u
T3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRh
LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2spCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOwogICAg
IGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1
cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKaW5kZXggMzNlNDgzZC4uMDEwM2YwOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
NTEyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEE1MTIuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NS
WVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFs
L2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3
ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2Vz
dChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBF
eGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9
IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsK
KyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAg
ZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02
NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVjdG9yPHVp
bnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+
IENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFt
ZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewot
ICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV81MTIpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKICAgICBpZiAoIWRp
Z2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNB
U1NBX1BLQ1MxX3YxXzVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKaW5kZXggZjZhYjdhMi4uMGYwYmY5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKQEAgLTMwLDI2ICszMCwyNiBAQAog
CiAjaW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5o
IgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0
by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RkOjpv
cHRpb25hbDxDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQoraW5saW5lIHN0ZDo6b3B0aW9u
YWw8UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQogewogICAgIHN3aXRjaCAoaGFz
aEZ1bmN0aW9uKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToK
LSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsKKyAgICAgICAg
cmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOwogICAgIGNhc2UgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKLSAgICAgICAgcmV0dXJuIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXI6OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzI1NjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTY7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgotICAgICAg
ICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVy
biBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzUxMjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rv
cjx1aW50OF90Pj4gc2lnblJTQVNTQV9QS0NTMV92MV81KENyeXB0b0FsZ29yaXRobUlkZW50aWYK
ICAgICBhdXRvIGNyeXB0b0RpZ2VzdEFsZ29yaXRobSA9IFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFs
Z29yaXRobShoYXNoKTsKICAgICBpZiAoIWNyeXB0b0RpZ2VzdEFsZ29yaXRobSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0gICAgYXV0byBkaWdlc3QgPSBD
cnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKKyAgICBhdXRvIGRp
Z2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7
CiAgICAgaWYgKCFkaWdlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OwogICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YSwgZGF0YUxlbmd0aCk7CkBAIC05Myw3
ICs5Myw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiB2ZXJpZnlSU0FTU0FfUEtDUzFfdjFf
NShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsCiAgICAgYXV0byBjcnlwdG9EaWdlc3RB
bGdvcml0aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaCk7CiAgICAgaWYg
KCFjcnlwdG9EaWdlc3RBbGdvcml0aG0pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciB9OwotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNy
eXB0b0RpZ2VzdEFsZ29yaXRobSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOwogICAgIGlmICghZGlnZXN0KQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICBkaWdlc3QtPmFk
ZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYTE1N2E4NC4uZGY3N2NiNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00NSw3ICs0NSw2
IEBACiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2lu
Y2x1ZGUgIkNvb2tpZUphci5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUg
IkRPTUVkaXRvci5oIgogI2luY2x1ZGUgIkRPTVBhdGNoU3VwcG9ydC5oIgogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgpAQCAtOTYsNiArOTUsNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JZGVudGlm
aWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaD4KICNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8cGFs
L2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVDb250ZW50U2Vj
dXJpdHlQb2xpY3lTSEEyNTZIYXNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgVGV4dEVu
Y29kaW5nIGRvY3VtZW50RW5jb2RpbmcgPSBlbGVtZW50LmRvY3VtZW50KCkudGV4dEVuY29kaW5n
KCk7CiAgICAgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZ1RvVXNlID0gZG9jdW1lbnRFbmNv
ZGluZy5pc1ZhbGlkKCkgPyBkb2N1bWVudEVuY29kaW5nIDogVVRGOEVuY29kaW5nKCk7CiAgICAg
Q1N0cmluZyBjb250ZW50ID0gZW5jb2RpbmdUb1VzZS5lbmNvZGUoVGV4dE5vZGVUcmF2ZXJzYWw6
OmNvbnRlbnRzQXNTdHJpbmcoZWxlbWVudCksIEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAg
ICBhdXRvIGNyeXB0b0RpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRv
RGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAg
ICAgY3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250ZW50LmRhdGEoKSwgY29udGVudC5sZW5ndGgo
KSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRpZ2VzdCA9IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhh
c2goKTsKICAgICByZXR1cm4gbWFrZVN0cmluZygic2hhMjU2LSIsIGJhc2U2NEVuY29kZShkaWdl
c3QuZGF0YSgpLCBkaWdlc3Quc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA1MzY3MWU1Li45NmZhN2EyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAK
QEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmgi
CiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmgiCiAjaW5jbHVkZSAiQ29u
dGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5o
IgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC01Nyw2ICs1Niw3IEBACiAjaW5jbHVkZSA8aW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxs
U3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgor
I2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZv
clNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAtMzAxLDE4ICszMDEsMTggQEAgYm9vbCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OmFsbFBvbGljaWVzQWxsb3coVmlvbGF0ZWREaXJlY3RpdmVDYWxs
YmFjayYmIGNhbGxiYWMKICAgICByZXR1cm4gaXNBbGxvd2VkOwogfQogCi1zdGF0aWMgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oQ29udGVudFNlY3VyaXR5
UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0aG0pCitzdGF0aWMgUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobSB0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShDb250ZW50U2VjdXJpdHlQb2xpY3lI
YXNoQWxnb3JpdGhtIGFsZ29yaXRobSkKIHsKICAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewogICAg
IGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAg
ICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OworICAgICAgICByZXR1
cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKICAgICBjYXNlIENvbnRl
bnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIHJldHVybiBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CiAgICAgY2FzZSBDb250ZW50U2VjdXJpdHlQ
b2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfNTEyOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgcmV0dXJuIFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIFByZWRpY2F0ZT4KQEAgLTMzMyw3ICszMzMsNyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
Okhhc2hJbkVuZm9yY2VkQW5kUmVwb3J0T25seVBvbGljaWVzUGFpciBDb250ZW50U2VjdXJpdHlQ
bwogICAgIGJvb2wgZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzID0gZmFsc2U7CiAgICAgYm9v
bCBmb3VuZEhhc2hJblJlcG9ydE9ubHlQb2xpY2llcyA9IGZhbHNlOwogICAgIGZvciAoYXV0byBh
bGdvcml0aG0gOiBhbGdvcml0aG1zKSB7Ci0gICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gQ3J5
cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7Cisg
ICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0b0Ny
eXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAgICAgICAgY3J5cHRvRGlnZXN0LT5h
ZGRCeXRlcyhjb250ZW50Q1N0cmluZy5kYXRhKCksIGNvbnRlbnRDU3RyaW5nLmxlbmd0aCgpKTsK
ICAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCBoYXNoID0geyBhbGdvcml0aG0sIGNy
eXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogICAgICAgICBpZiAoIWZvdW5kSGFzaEluRW5m
b3JjZWRQb2xpY2llcyAmJiBhbGxQb2xpY2llc1dpdGhEaXNwb3NpdGlvbkFsbG93KENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6RGlzcG9zaXRpb246OkVuZm9yY2UsIHN0ZDo6Zm9yd2FyZDxQcmVkaWNh
dGU+KHByZWRpY2F0ZSksIGhhc2gpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRv
L0NyeXB0b0RpZ2VzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWYwNzVhLi4w
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9DcnlwdG9EaWdlc3Qu
aAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIENyeXB0b0RpZ2VzdF9oCi0jZGVmaW5lIENyeXB0b0RpZ2VzdF9oCi0KLSNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQ7Ci0KLWNsYXNzIENyeXB0b0Rp
Z2VzdCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvRGlnZXN0KTsKLXB1YmxpYzoK
LSAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7Ci0gICAgICAgIFNIQV8xLAotICAgICAgICBTSEFf
MjI0LAotICAgICAgICBTSEFfMjU2LAotICAgICAgICBTSEFfMzg0LAotICAgICAgICBTSEFfNTEy
LAotICAgIH07Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGNyZWF0
ZShBbGdvcml0aG0pOwotICAgIH5DcnlwdG9EaWdlc3QoKTsKLQotICAgIHZvaWQgYWRkQnl0ZXMo
Y29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOwotICAgIFZlY3Rvcjx1aW50OF90PiBj
b21wdXRlSGFzaCgpOwotCi1wcml2YXRlOgotICAgIENyeXB0b0RpZ2VzdCgpOwotCi0gICAgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+IG1fY29udGV4dDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENyeXB0b0RpZ2VzdF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2Vz
dENvbW1vbkNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9u
Y3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGUzZmZjNTYuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29t
bW9uQ3J5cHRvLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2Vz
dENvbnRleHQgewotICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKLSAgICB2
b2lkKiBjY0NvbnRleHQ7Ci19OwotCi1pbmxpbmUgQ0NfU0hBMV9DVFgqIHRvU0hBMUNvbnRleHQo
Q3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxn
b3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PENDX1NIQTFfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlubGluZSBD
Q19TSEEyNTZfQ1RYKiB0b1NIQTIyNENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4
dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMjI0KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+
KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyNTZD
b250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRl
eHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwot
fQotaW5saW5lIENDX1NIQTUxMl9DVFgqIHRvU0hBMzg0Q29udGV4dChDcnlwdG9EaWdlc3RDb250
ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19T
SEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlubGluZSBDQ19TSEE1MTJfQ1RY
KiB0b1NIQTUxMkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBB
U1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
NTEyKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNj
Q29udGV4dCk7Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29u
dGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5
cHRvRGlnZXN0KCkKLXsKLSAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Ci0gICAgICAgIGRlbGV0ZSB0b1NI
QTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAgICBkZWxldGUgdG9TSEEyMjRD
b250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICBkZWxldGUgdG9TSEEyNTZDb250
ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICBkZWxldGUgdG9TSEEzODRDb250ZXh0
KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICBkZWxldGUgdG9TSEE1MTJDb250ZXh0KG1f
Y29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLQotc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG0gYWxnb3JpdGhtKQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+
IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3Jp
dGhtID0gYWxnb3JpdGhtOwotCi0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewotICAgICAgICBDQ19TSEExX0NUWCogY29u
dGV4dCA9IG5ldyBDQ19TSEExX0NUWDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29u
dGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTFfSW5pdChjb250ZXh0KTsKLSAgICAgICAg
cmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzIyNDogewotICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTI1
Nl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0Owot
ICAgICAgICBDQ19TSEEyMjRfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsK
LSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogewotICAg
ICAgICBDQ19TSEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7Ci0gICAgICAg
IGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEEy
NTZfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogewotICAgICAgICBDQ19TSEE1MTJf
Q1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250
ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEEzODRfSW5pdChjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzUxMjogewotICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0g
bmV3IENDX1NIQTUxMl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQg
PSBjb250ZXh0OwotICAgICAgICBDQ19TSEE1MTJfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0
dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgfQotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0
ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgc3dpdGNoIChtX2Nv
bnRleHQtPmFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8xOgotICAgICAgICBDQ19TSEExX1VwZGF0ZSh0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQo
KSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgQ0NfU0hBMjI0X1VwZGF0ZSh0b1NIQTIy
NENvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICBD
Q19TSEEyNTZfVXBkYXRlKHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwg
bGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8zODQ6Ci0gICAgICAgIENDX1NIQTM4NF9VcGRhdGUodG9TSEEzODRDb250ZXh0KG1f
Y29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgQ0NfU0hBNTEyX1Vw
ZGF0ZSh0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6
OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgIHN3aXRj
aCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMToKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEExX0RJR0VTVF9MRU5HVEgp
OwotICAgICAgICBDQ19TSEExX0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMUNvbnRleHQobV9j
b250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjI0X0RJR0VT
VF9MRU5HVEgpOwotICAgICAgICBDQ19TSEEyMjRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEy
MjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICByZXN1bHQucmVzaXplKEND
X1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBMjU2X0ZpbmFsKHJlc3VsdC5k
YXRhKCksIHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgcmVz
dWx0LnJlc2l6ZShDQ19TSEEzODRfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTM4NF9G
aW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6
Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBNTEyX0RJR0VTVF9MRU5HVEgpOwotICAgICAg
ICBDQ19TSEE1MTJfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4
dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTNjOGJmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlh
IFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBTb2Z0QXRIb21lCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPGdj
cnlwdC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250
ZXh0IHsKLSAgICBpbnQgYWxnb3JpdGhtOwotICAgIGdjcnlfbWRfaGRfdCBtZDsKLX07Ci0KLUNy
eXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGln
ZXN0Q29udGV4dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLX0K
LQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQotewotICAgIGludCBnY3J5cHRBbGdvcml0
aG07Ci0KLSAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8xOgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTE7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
MjQ6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjI0OwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAg
ICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTI1NjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgZ2NyeXB0QWxn
b3JpdGhtID0gR0NSWV9NRF9TSEEzODQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdD
UllfTURfU0hBNTEyOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5t
X2NvbnRleHQtPmFsZ29yaXRobSA9IGdjcnlwdEFsZ29yaXRobTsKLQotICAgIGdjcnlfbWRfb3Bl
bigmZGlnZXN0LT5tX2NvbnRleHQtPm1kLCBnY3J5cHRBbGdvcml0aG0sIDApOwotICAgIGlmICgh
ZGlnZXN0LT5tX2NvbnRleHQtPm1kKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJl
dHVybiBkaWdlc3Q7Ci19Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lk
KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBnY3J5X21kX3dyaXRlKG1fY29udGV4dC0+
bWQsIGlucHV0LCBsZW5ndGgpOwotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpj
b21wdXRlSGFzaCgpCi17Ci0gICAgaW50IGRpZ2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29fZGxl
bihtX2NvbnRleHQtPmFsZ29yaXRobSk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdl
c3RMZW4pOwotCi0gICAgZ2NyeV9tZF9maW5hbChtX2NvbnRleHQtPm1kKTsKLSAgICBtZW1jcHko
cmVzdWx0LmRhdGEoKSwgZ2NyeV9tZF9yZWFkKG1fY29udGV4dC0+bWQsIDApLCBkaWdlc3RMZW4p
OwotICAgIGdjcnlfbWRfY2xvc2UobV9jb250ZXh0LT5tZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5YTVkODEuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
SWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8Z251dGxzL2du
dXRscy5oPgotI2luY2x1ZGUgPGdudXRscy9jcnlwdG8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAgZ251dGxzX2RpZ2VzdF9hbGdv
cml0aG1fdCBhbGdvcml0aG07Ci0gICAgZ251dGxzX2hhc2hfaGRfdCBoYXNoOwotfTsKLQotQ3J5
cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdl
c3RDb250ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotICAg
IGdudXRsc19oYXNoX2RlaW5pdChtX2NvbnRleHQtPmhhc2gsIDApOwotfQotCi1zdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobSBhbGdvcml0aG0pCi17Ci0gICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBnbnV0
bHNBbGdvcml0aG07Ci0KLSAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdO
VVRMU19ESUdfU0hBMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05V
VExTX0RJR19TSEEyMjQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdO
VVRMU19ESUdfU0hBMjU2OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBH
TlVUTFNfRElHX1NIQTM4NDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0g
R05VVExTX0RJR19TSEE1MTI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0KLSAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0g
ICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdudXRsc0FsZ29yaXRobTsKLQotICAg
IGludCByZXQgPSBnbnV0bHNfaGFzaF9pbml0KCZkaWdlc3QtPm1fY29udGV4dC0+aGFzaCwgZ251
dGxzQWxnb3JpdGhtKTsKLSAgICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGRpZ2VzdDsKLX0KLQotdm9pZCBDcnlwdG9E
aWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAg
IGdudXRsc19oYXNoKG1fY29udGV4dC0+aGFzaCwgaW5wdXQsIGxlbmd0aCk7Ci19Ci0KLVZlY3Rv
cjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzdWx0OwotICAgIGludCBkaWdlc3RMZW4gPSBnbnV0bHNfaGFzaF9nZXRfbGVuKG1f
Y29udGV4dC0+YWxnb3JpdGhtKTsKLSAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbik7Ci0KLSAg
ICBnbnV0bHNfaGFzaF9vdXRwdXQobV9jb250ZXh0LT5oYXNoLCByZXN1bHQuZGF0YSgpKTsKLQot
ICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZjYzE5Mi4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPHdpbmNyeXB0Lmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewot
ICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKLSAgICBIQ1JZUFRQUk9WIGhD
b250ZXh0IHsgMCB9OwotICAgIEhDUllQVEhBU0ggaEhhc2ggeyAwIH07Ci19OwotCi1DcnlwdG9E
aWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENv
bnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci0gICAgaWYg
KEhDUllQVEhBU0ggaEhhc2ggPSBtX2NvbnRleHQtPmhIYXNoKQotICAgICAgICBDcnlwdERlc3Ry
b3lIYXNoKGhIYXNoKTsKLSAgICBpZiAoSENSWVBUUFJPViBoQ29udGV4dCA9IG1fY29udGV4dC0+
aENvbnRleHQpCi0gICAgICAgIENyeXB0UmVsZWFzZUNvbnRleHQoaENvbnRleHQsIDApOwotfQot
Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShBbGdv
cml0aG0gYWxnb3JpdGhtKQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRp
Z2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGht
ID0gYWxnb3JpdGhtOwotICAgIGlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmZGlnZXN0LT5tX2Nv
bnRleHQtPmhDb250ZXh0LCBudWxscHRyLCBudWxscHRyIC8qIHVzZSBkZWZhdWx0IHByb3ZpZGVy
ICovLCBQUk9WX1JTQV9BRVMsIENSWVBUX1ZFUklGWUNPTlRFWFQpKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBib29sIHN1Y2NlZWRlZCA9IGZhbHNlOwotICAgIHN3aXRjaCAoYWxnb3Jp
dGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKLSAgICAg
ICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4
dCwgQ0FMR19TSEExLCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6
IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0
LT5oQ29udGV4dCwgQ0FMR19TSEFfMjU2LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8zODQ6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2Vz
dC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMzg0LCAwLCAwLCAmZGlnZXN0LT5tX2Nv
bnRleHQtPmhIYXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVh
dGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfNTEyLCAwLCAwLCAm
ZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0K
LSAgICBpZiAoc3VjY2VlZGVkKQotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIHJldHVybiBu
dWxscHRyOwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5w
dXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgaWYgKCFpbnB1dCB8fCAhbGVuZ3RoKQotICAgICAg
ICByZXR1cm47Ci0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRIYXNoRGF0YShtX2NvbnRleHQtPmhI
YXNoLCByZWludGVycHJldF9jYXN0PGNvbnN0IEJZVEUqPihpbnB1dCksIGxlbmd0aCwgMCkpOwot
fQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXI7Ci0g
ICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSA9IHNpemVvZihkaWdlc3RMZW5ndGhCdWZm
ZXIpOwotCi0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5o
SGFzaCwgSFBfSEFTSFNJWkUsIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+KCZkaWdlc3RMZW5ndGhC
dWZmZXIpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSwgMCkpOwotICAgIHJlc3VsdC5yZXNpemUo
ZGlnZXN0TGVuZ3RoQnVmZmVyKTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFzaFBh
cmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hWQUwsIHJlc3VsdC5kYXRhKCksICZkaWdlc3RM
ZW5ndGhCdWZmZXIsIDApKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuc2l6ZSgpID09IGRp
Z2VzdExlbmd0aEJ1ZmZlcik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlIGIvU291
cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlCmluZGV4IDI5YTA5NjkuLjUxMzBmZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0
RlMuY21ha2UKQEAgLTEwLDYgKzEwLDkgQEAgZW5kaWYgKCkKIGlmIChOT1QgV0VCQ09SRV9ESVIp
CiAgICAgc2V0KFdFQkNPUkVfRElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJDb3Jl
IikKIGVuZGlmICgpCitpZiAoTk9UIFBBTF9ESVIpCisgICAgc2V0KFBBTF9ESVIgIiR7Q01BS0Vf
U09VUkNFX0RJUn0vU291cmNlL1dlYkNvcmUvUEFMIikKK2VuZGlmICgpCiBpZiAoTk9UIFdFQktJ
VF9ESVIpCiAgICAgc2V0KFdFQktJVF9ESVIgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlL1dl
YktpdCIpCiBlbmRpZiAoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299299</attachid>
            <date>2017-01-19 18:52:02 -0800</date>
            <delta_ts>2017-01-19 19:15:43 -0800</delta_ts>
            <desc>PAL with suggested revisions</desc>
            <filename>bug-143358-pal.diff</filename>
            <type>text/plain</type>
            <size>71319</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggYmYzYzRl
Zi4uYmIzMzE4YyAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50
eHQKQEAgLTExNCw2ICsxMTQsNyBAQCBlbHNlICgpCiBlbmRpZiAoKQogCiBzZXQoSmF2YVNjcmlw
dENvcmVfTElCUkFSWV9UWVBFIFNIQVJFRCkKK3NldChQQUxfTElCUkFSWV9UWVBFIFNUQVRJQykK
IHNldChXZWJLaXRfTElCUkFSWV9UWVBFIFNIQVJFRCkKIHNldChXZWJLaXQyX0xJQlJBUllfVFlQ
RSBTSEFSRUQpCiBzZXQoV2ViQ29yZVRlc3RTdXBwb3J0X0xJQlJBUllfVFlQRSBTVEFUSUMpCmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNjQ5NDVhNC4uZWYzMTc2ZCAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDE3LTAxLTE5ICBEb24gT2xtc3RlYWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4gYW5kIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1
Y2luZyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogU291cmNlL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJL
aXRGUy5jbWFrZToKKwogMjAxNy0wMS0xNyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBw
bGUuY29tPgogCiAgICAgICAgIEVOQUJMRShVU0VSX1RJTUlORykgTm90IERlZmluZWQgZm9yIEFw
cGxlIFdpbmRvd3Mgb3IgT1MgWCBQb3J0cwpkaWZmIC0tZ2l0IGEvU291cmNlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFiOGEyZGMuLjE1ZmRmMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvQ01ha2VMaXN0cy50eHQK
QEAgLTQ2LDYgKzQ2LDcgQEAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhXVEYgJHtB
RERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxB
R1MoSmF2YVNjcmlwdENvcmUgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKIAogaWYgKEVO
QUJMRV9XRUJDT1JFKQorICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoUEFMICR7
QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAgICAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxF
Ul9GTEFHUyhXZWJDb3JlVGVzdFN1cHBvcnQgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkK
ICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmUgJHtBRERJVElPTkFM
X0NPTVBJTEVSX0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdl
YkNvcmVEZXJpdmVkU291cmNlcyAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBiNTA0M2M1Li42OGE1OTczOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTEsNiArMSw3IEBACiBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44LjEyKQog
aW5jbHVkZShXZWJLaXRDb21tb24pCiBzZXRfcHJvcGVydHkoRElSRUNUT1JZIC4gUFJPUEVSVFkg
Rk9MREVSICJXZWJDb3JlIikKK2FkZF9zdWJkaXJlY3RvcnkoUEFML3BhbCkKIAogc2V0KFdlYkNv
cmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpAQCAtMjk0
NSw2ICsyOTQ2LDcgQEAgc2V0KFdlYkNvcmVfUExVR19JTlNfUkVTT1VSQ0VTCiBzZXQoV2ViQ29y
ZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJSQVJJRVN9CiAgICAgSmF2YVNjcmlwdENvcmUke0RF
QlVHX1NVRkZJWH0KKyAgICBQQUwke0RFQlVHX1NVRkZJWH0KICkKIAogaWYgKEVOQUJMRV9MRUdB
Q1lfRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM2NzJhOTIuLjdkMzQ5NWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw3NSBAQAorMjAxNy0wMS0xOSAgRG9uIE9sbXN0ZWFkIDxkb24ub2xt
c3RlYWRAYW0uc29ueS5jb20+IGFuZCBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExh
eWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGVyZSBpcyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9QQUwueGNj
b25maWc6IEFkZGVkLgorICAgICAgICAqIFBBTC9jb25maWcuaDogQWRkZWQuCisgICAgICAgICog
UEFML3BhbC9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogUEFML3BhbC9QbGF0Zm9y
bUVmbC5jbWFrZTogQWRkZWQuCisgICAgICAgICogUEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZTog
QWRkZWQuCisgICAgICAgICogUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQuCisgICAg
ICAgICogUEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZTogQWRkZWQuCisgICAgICAgICogUEFML3Bh
bC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmguCisgICAgICAgICogUEFML3BhbC9jcnlwdG8vY29t
bW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1v
bkNyeXB0by5jcHAuCisgICAgICAgIChQQUw6OnRvU0hBMUNvbnRleHQpOgorICAgICAgICAoUEFM
Ojp0b1NIQTIyNENvbnRleHQpOgorICAgICAgICAoUEFMOjp0b1NIQTI1NkNvbnRleHQpOgorICAg
ICAgICAoUEFMOjp0b1NIQTM4NENvbnRleHQpOgorICAgICAgICAoUEFMOjp0b1NIQTUxMkNvbnRl
eHQpOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAg
IChQQUw6OkNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChQQUw6OkNyeXB0
b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyk6
CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIFBB
TC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQu
Y3BwLgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAg
IChQQUw6OkNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChQQUw6OkNyeXB0
b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyk6
CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIFBB
TC9wYWwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMu
Y3BwLgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAg
IChQQUw6OkNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChQQUw6OkNyeXB0
b0RpZ2VzdDo6Y3JlYXRlKToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyk6
CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIFBB
TC9wYWwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwLgorICAgICAg
ICAoUEFMOjpDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChQQUw6OkNyeXB0
b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCk6CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyk6CisgICAgICAgIChQ
QUw6OkNyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2gpOgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFNjcmlwdHMv
RW5mb3JjZVBBTExheWVyaW5nLnB5OiBBZGRlZC4KKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29y
aXRobVNIQTE6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTIy
NDo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEyNTYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdl
c3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdCk6Cisg
ICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KToKKyAgICAgICAg
KiBjcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3Jl
OjpzaWduUlNBU1NBX1BLQ1MxX3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UlNBU1NB
X1BLQ1MxX3YxXzUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFz
aCk6CisgICAgICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnRlbnRTZWN1cml0eVBvbGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVzKToKKwog
MjAxNy0wMS0xOSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lP
U10gTW92ZSB0aGUgUERGIHBhc3N3b3JkIHZpZXcgaW50byBpdHMgb3duIGNsYXNzIGZvciByZXVz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmln
IGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YmEyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcKQEAgLTAsMCArMSwzNiBAQAor
Ly8gQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVkZSAiV2ViQ29yZS54
Y2NvbmZpZyIKKworSU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfJChDT05GSUdVUkFUSU9O
KSk7CitJTlNUQUxMX1BBVEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwvbGliOworCitTS0lQX0lO
U1RBTEwgPSAkKFNLSVBfSU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFMTCkpOworU0tJUF9JTlNU
QUxMXyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9OTyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9ZRVMgPSBO
TzsKKworUFJPRFVDVF9OQU1FID0gUEFMOworRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CitFWFBP
UlRFRF9TWU1CT0xTX0ZJTEUgPSA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY29u
ZmlnLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNTQ4OGM4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9jb25maWcuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8K
KworI2lmIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgJiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVk
KEJVSUxESU5HX1dJVEhfQ01BS0UpCisjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKKyNlbmRpZgor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9z
Lmg+CisKKyNpZmRlZiBfX0FQUExFX18KKyNkZWZpbmUgSEFWRV9GVU5DX1VTTEVFUCAxCisjZW5k
aWYgLyogX19BUFBMRV9fICovCisKKyNpZiBPUyhXSU5ET1dTKQorCisjaWZuZGVmIF9XSU4zMl9X
SU5OVAorI2RlZmluZSBfV0lOMzJfV0lOTlQgMHg2MDEKKyNlbmRpZgorCisjaWZuZGVmIFdJTlZF
UgorI2RlZmluZSBXSU5WRVIgMHgwNjAxCisjZW5kaWYKKworI2VuZGlmIC8qIE9TKFdJTkRPV1Mp
ICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisvLyBUaGVzZSB1bmRlZnMgbWF0Y2ggdXAgd2l0
aCBkZWZpbmVzIGluIFdlYkNvcmVQcmVmaXguaCBmb3IgTWFjIE9TIFguCisvLyBIZWxwcyB1cyBj
YXRjaCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5IGFjY2lkZW50IGluIGNvZGUgYW5k
IGRvZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgorI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQor
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKKyNpbmNsdWRlIDxjaXNvNjQ2PgorCisjZW5k
aWYKKworI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9D
TWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmY2MzA0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4
dApAQCAtMCwwICsxLDQzIEBACitzZXQoUEFMX0hFQURFUlMKKyAgICBjcnlwdG8vQ3J5cHRvRGln
ZXN0LmgKKykKKworc2V0KFBBTF9TT1VSQ0VTCispCisKK3NldChQQUxfSU5DTFVERV9ESVJFQ1RP
UklFUworICAgICIke1BBTF9ESVJ9IgorICAgICIke1BBTF9ESVJ9L3BhbCIKKyAgICAiJHtQQUxf
RElSfS9wYWwvY3J5cHRvIgorKQorCitzZXQoUEFMX0xJQlJBUklFUworICAgIFdURgorKQorCitX
RUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKworV0VCS0lUX1dSQVBfU09V
UkNFTElTVCgke1BBTF9TT1VSQ0VTfSkKK1dFQktJVF9GUkFNRVdPUksoUEFMKQorCitpZiAoVU5J
WCkKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAgIFRBUkdFVCBQQUwKKyAgICAgICAg
UE9TVF9CVUlMRAorICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7V0VCQ09S
RV9ESVJ9L1NjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5ICQ8VEFSR0VUX0ZJTEU6UEFMPiAk
e1BBTF9ESVJ9CisgICAgICAgIFZFUkJBVElNKQorZW5kaWYgKCkKKworaWYgKE1TVkMpCisgICAg
YWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBSRV9CVUlM
RAorICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVF9MSUJSQVJJRVNf
RElSfS90b29scy9zY3JpcHRzL2F1dG8tdmVyc2lvbi5wbCAke0RFUklWRURfU09VUkNFU19ESVJ9
CisgICAgICAgIFZFUkJBVElNKQorCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBU
QVJHRVQgUEFMCisgICAgICAgIFBPU1RfQlVJTEQKKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhF
Q1VUQUJMRX0gJHtXRUJLSVRfTElCUkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0cy92ZXJzaW9uLXN0
YW1wLnBsICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0gJDxUQVJHRVRfRklMRTpQQUw+CisgICAgICAg
IFZFUkJBVElNKQorZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNt
YWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NWMxODkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0w
LDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0Ny
eXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RL
LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NWMxODkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0
L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3Jt
TWFjLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmOTY4ZWM0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFr
ZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCisgICAgY3J5cHRvL2Nv
bW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCispCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42ZjY5MTlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Q
bGF0Zm9ybVdpbi5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VT
CisgICAgY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCispCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjU4OGUxMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGln
ZXN0Q29udGV4dDsKKworY2xhc3MgQ3J5cHRvRGlnZXN0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShDcnlwdG9EaWdlc3QpOworcHVibGljOgorICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsK
KyAgICAgICAgU0hBXzEsCisgICAgICAgIFNIQV8yMjQsCisgICAgICAgIFNIQV8yNTYsCisgICAg
ICAgIFNIQV8zODQsCisgICAgICAgIFNIQV81MTIsCisgICAgfTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gY3JlYXRlKEFsZ29yaXRobSk7CisgICAgfkNyeXB0b0Rp
Z2VzdCgpOworCisgICAgdm9pZCBhZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxl
bmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVIYXNoKCk7CisKK3ByaXZhdGU6Cisg
ICAgQ3J5cHRvRGlnZXN0KCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0Q29u
dGV4dD4gbV9jb250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgUEFMCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0
by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjg2YTI0MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcApAQCAt
MCwwICsxLDE3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDcnlwdG9EaWdlc3QuaCIKKworI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8u
aD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKKyAg
ICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07CisgICAgdm9pZCogY2NDb250ZXh0
OworfTsKKworaW5saW5lIENDX1NIQTFfQ1RYKiB0b1NIQTFDb250ZXh0KENyeXB0b0RpZ2VzdENv
bnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19T
SEExX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBMjU2X0NUWCog
dG9TSEEyMjRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNT
RVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIy
NCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250ZXh0LT5jY0Nv
bnRleHQpOworfQoraW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjU2Q29udGV4dChDcnlwdG9E
aWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0g
PT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lubGluZSBDQ19T
SEE1MTJfQ1RYKiB0b1NIQTM4NENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkK
K3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMzg0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNv
bnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEE1MTJDb250
ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQt
PmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQor
CitDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCisgICAgOiBtX2NvbnRleHQobmV3IENyeXB0
b0RpZ2VzdENvbnRleHQpCit7Cit9CisKK0NyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7
CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBkZWxldGUgdG9TSEExQ29udGV4dChtX2Nv
bnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAgZGVsZXRlIHRvU0hBMjI0Q29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzI1NjoKKyAgICAgICAgZGVsZXRlIHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQu
Z2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NDoKKyAgICAgICAgZGVsZXRlIHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0
KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzUxMjoKKyAgICAgICAgZGVsZXRlIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkp
OworICAgICAgICByZXR1cm47CisgICAgfQorfQorCisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9E
aWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29y
aXRobSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENy
eXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRo
bTsKKworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzE6IHsKKyAgICAgICAgQ0NfU0hBMV9DVFgqIGNvbnRleHQgPSBuZXcgQ0Nf
U0hBMV9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0
OworICAgICAgICBDQ19TSEExX0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7
CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6IHsKKyAg
ICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOworICAgICAg
ICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hB
MjI0X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKKyAgICAgICAgQ0NfU0hBMjU2
X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29u
dGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMjU2X0luaXQoY29udGV4
dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9
IG5ldyBDQ19TSEE1MTJfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0
ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMzg0X0luaXQoY29udGV4dCk7CisgICAgICAgIHJl
dHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV81MTI6IHsKKyAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1MTJf
Q1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAg
ICAgICAgQ0NfU0hBNTEyX0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7Cisg
ICAgfQorICAgIH0KK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQq
IGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0
aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAgICAgICAg
Q0NfU0hBMV9VcGRhdGUodG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVu
Z3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yMjQ6CisgICAgICAgIENDX1NIQTIyNF9VcGRhdGUodG9TSEEyMjRDb250ZXh0KG1fY29u
dGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgQ0NfU0hBMjU2X1VwZGF0
ZSh0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0Ogor
ICAgICAgICBDQ19TSEEzODRfVXBkYXRlKHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkp
LCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIENDX1NIQTUxMl9VcGRhdGUodG9TSEE1MTJD
b250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47
CisgICAgfQorfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgp
Cit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBzd2l0Y2ggKG1fY29udGV4dC0+
YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Cisg
ICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMV9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0Nf
U0hBMV9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjI0OgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTIyNF9ESUdFU1RfTEVOR1RIKTsKKyAg
ICAgICAgQ0NfU0hBMjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjI0Q29udGV4dChtX2Nv
bnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEyNTZfRElHRVNU
X0xFTkdUSCk7CisgICAgICAgIENDX1NIQTI1Nl9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTI1
NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0Nf
U0hBMzg0X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEEzODRfRmluYWwocmVzdWx0LmRh
dGEoKSwgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgorICAgICAgICByZXN1
bHQucmVzaXplKENDX1NIQTUxMl9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBNTEyX0Zp
bmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4wYTc4YWUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKQEAgLTAsMCArMSw5NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAy
MDE2IFNvZnRBdEhvbWUKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z2NyeXB0Lmg+CisKK25hbWVzcGFjZSBQQUwg
eworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgaW50IGFsZ29yaXRobTsKKyAg
ICBnY3J5X21kX2hkX3QgbWQ7Cit9OworCitDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCisg
ICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCit7Cit9CisKK0NyeXB0b0Rp
Z2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdl
c3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRo
bSkKK3sKKyAgICBpbnQgZ2NyeXB0QWxnb3JpdGhtOworCisgICAgc3dpdGNoIChhbGdvcml0aG0p
IHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAgICAgICAgZ2Ny
eXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEExOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0g
PSBHQ1JZX01EX1NIQTIyNDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9T
SEEyNTY7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8zODQ6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMzg0OworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgor
ICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTUxMjsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBD
cnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnY3J5cHRB
bGdvcml0aG07CisKKyAgICBnY3J5X21kX29wZW4oJmRpZ2VzdC0+bV9jb250ZXh0LT5tZCwgZ2Ny
eXB0QWxnb3JpdGhtLCAwKTsKKyAgICBpZiAoIWRpZ2VzdC0+bV9jb250ZXh0LT5tZCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gZGlnZXN0OworfQorCit2b2lkIENyeXB0
b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCit7Cisg
ICAgZ2NyeV9tZF93cml0ZShtX2NvbnRleHQtPm1kLCBpbnB1dCwgbGVuZ3RoKTsKK30KKworVmVj
dG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQoreworICAgIGludCBkaWdl
c3RMZW4gPSBnY3J5X21kX2dldF9hbGdvX2RsZW4obV9jb250ZXh0LT5hbGdvcml0aG0pOworICAg
IFZlY3Rvcjx1aW50OF90PiByZXN1bHQoZGlnZXN0TGVuKTsKKworICAgIGdjcnlfbWRfZmluYWwo
bV9jb250ZXh0LT5tZCk7CisgICAgbWVtY3B5KHJlc3VsdC5kYXRhKCksIGdjcnlfbWRfcmVhZCht
X2NvbnRleHQtPm1kLCAwKSwgZGlnZXN0TGVuKTsKKyAgICBnY3J5X21kX2Nsb3NlKG1fY29udGV4
dC0+bWQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgUEFMCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGln
ZXN0R251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2dudXRscy9Dcnlw
dG9EaWdlc3RHbnVUTFMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1
NmI4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9n
bnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNp
bmNsdWRlIDxnbnV0bHMvZ251dGxzLmg+CisjaW5jbHVkZSA8Z251dGxzL2NyeXB0by5oPgorCitu
YW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIGdudXRs
c19kaWdlc3RfYWxnb3JpdGhtX3QgYWxnb3JpdGhtOworICAgIGdudXRsc19oYXNoX2hkX3QgaGFz
aDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChu
ZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGln
ZXN0KCkKK3sKKyAgICBnbnV0bHNfaGFzaF9kZWluaXQobV9jb250ZXh0LT5oYXNoLCAwKTsKK30K
Kworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIGdudXRsc19kaWdlc3RfYWxn
b3JpdGhtX3QgZ251dGxzQWxnb3JpdGhtOworCisgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAgICAgICBnbnV0bHNB
bGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTE7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7CisgICAgICAgIGdudXRsc0Fs
Z29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjI0OworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogeworICAgICAgICBnbnV0bHNB
bGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTI1NjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAgICAgICAgZ251dGxz
QWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEzODQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7CisgICAgICAgIGdudXRs
c0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBNTEyOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlw
dG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnbnV0bHNBbGdv
cml0aG07CisKKyAgICBpbnQgcmV0ID0gZ251dGxzX2hhc2hfaW5pdCgmZGlnZXN0LT5tX2NvbnRl
eHQtPmhhc2gsIGdudXRsc0FsZ29yaXRobSk7CisgICAgaWYgKHJldCAhPSBHTlVUTFNfRV9TVUND
RVNTKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBkaWdlc3Q7Cit9CisK
K3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxl
bmd0aCkKK3sKKyAgICBnbnV0bHNfaGFzaChtX2NvbnRleHQtPmhhc2gsIGlucHV0LCBsZW5ndGgp
OworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBpbnQgZGlnZXN0TGVuID0gZ251dGxzX2hh
c2hfZ2V0X2xlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7CisgICAgcmVzdWx0LnJlc2l6ZShkaWdl
c3RMZW4pOworCisgICAgZ251dGxzX2hhc2hfb3V0cHV0KG1fY29udGV4dC0+aGFzaCwgcmVzdWx0
LmRhdGEoKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBQQUwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3dpbi9DcnlwdG9EaWdl
c3RXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vd2luL0NyeXB0b0RpZ2Vz
dFdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE4Mzg4NAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3dpbi9DcnlwdG9E
aWdlc3RXaW4uY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8d2luZG93cy5o
PgorI2luY2x1ZGUgPHdpbmNyeXB0Lmg+CisKK25hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5
cHRvRGlnZXN0Q29udGV4dCB7CisgICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGht
OworICAgIEhDUllQVFBST1YgaENvbnRleHQgeyAwIH07CisgICAgSENSWVBUSEFTSCBoSGFzaCB7
IDAgfTsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4
dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRv
RGlnZXN0KCkKK3sKKyAgICBpZiAoSENSWVBUSEFTSCBoSGFzaCA9IG1fY29udGV4dC0+aEhhc2gp
CisgICAgICAgIENyeXB0RGVzdHJveUhhc2goaEhhc2gpOworICAgIGlmIChIQ1JZUFRQUk9WIGhD
b250ZXh0ID0gbV9jb250ZXh0LT5oQ29udGV4dCkKKyAgICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4
dChoQ29udGV4dCwgMCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0
b0RpZ2VzdDo6Y3JlYXRlKEFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+
bV9jb250ZXh0LT5hbGdvcml0aG0gPSBhbGdvcml0aG07CisgICAgaWYgKCFDcnlwdEFjcXVpcmVD
b250ZXh0KCZkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIG51bGxwdHIsIG51bGxwdHIgLyog
dXNlIGRlZmF1bHQgcHJvdmlkZXIgKi8sIFBST1ZfUlNBX0FFUywgQ1JZUFRfVkVSSUZZQ09OVEVY
VCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7
CisgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMTogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0
LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQTEsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4
dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzI1NjogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhh
c2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8yNTYsIDAsIDAsICZkaWdl
c3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAgICBzdWNjZWVkZWQgPSBD
cnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8zODQs
IDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogeworICAgICAgICBz
dWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBD
QUxHX1NIQV81MTIsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgfQorICAgIGlmIChzdWNjZWVkZWQpCisgICAgICAgIHJldHVybiBk
aWdlc3Q7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRC
eXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoIWlucHV0
IHx8ICFsZW5ndGgpCisgICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEhh
c2hEYXRhKG1fY29udGV4dC0+aEhhc2gsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQllURSo+KGlu
cHV0KSwgbGVuZ3RoLCAwKSk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNv
bXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAgIERXT1JEIGRp
Z2VzdExlbmd0aEJ1ZmZlcjsKKyAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXJTaXplID0gc2l6
ZW9mKGRpZ2VzdExlbmd0aEJ1ZmZlcik7CisKKyAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEdldEhh
c2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIU0laRSwgcmVpbnRlcnByZXRfY2FzdDxC
WVRFKj4oJmRpZ2VzdExlbmd0aEJ1ZmZlciksICZkaWdlc3RMZW5ndGhCdWZmZXJTaXplLCAwKSk7
CisgICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RMZW5ndGhCdWZmZXIpOworCisgICAgUkVMRUFTRV9B
U1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5oSGFzaCwgSFBfSEFTSFZBTCwgcmVz
dWx0LmRhdGEoKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlciwgMCkpOworICAgIFJFTEVBU0VfQVNTRVJU
KHJlc3VsdC5zaXplKCkgPT0gZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXgg
ZjNhZTg5Yi4uMWYwZTEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTY5LDggKzY5
LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9l
ZmwvQXVkaW9CdXNFZmwuY3BwCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Rp
Z2VzdEdDcnlwdC5jcHAKLQogICAgIHBsYXRmb3JtL2VmbC9DdXJzb3JFZmwuY3BwCiAgICAgcGxh
dGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9EcmFnSW1hZ2VFZmwu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDYyNDIxNjIuLmIxYzZlNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02OCw4ICs2OCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1c0dMaWIuY3BwCiAK
LSAgICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKLQogICAg
IHBsYXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCiAKICAgICBwbGF0Zm9ybS9n
ZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlMS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKaW5kZXggNGM1MWUyYS4uN2RjMWU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UK
QEAgLTMzMyw4ICszMzMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0
Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvV2ViQ29yZU5TRXJy
b3JFeHRyYXMubW0KIAotICAgIHBsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGln
ZXN0Q29tbW9uQ3J5cHRvLmNwcAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBh
ZC5jcHAKICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggOGQ3ZjUwOC4uYTRhOTkwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UKQEAgLTczLDggKzczLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9T
T1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKIAotICAg
IHBsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAotCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAogCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nj
cmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5IGIvU291cmNlL1dlYkNvcmUvU2NyaXB0cy9FbmZv
cmNlUEFMTGF5ZXJpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVl
NmYzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1NjcmlwdHMvRW5mb3JjZVBB
TExheWVyaW5nLnB5CkBAIC0wLDAgKzEsNDggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworCithcmNoaXZlRmlsZSA9IHN5cy5h
cmd2WzFdCitzb3VyY2VEaXJlY3RvcnkgPSBzeXMuYXJndlsyXQorCitzeW1ib2xOYW1lc3BhY2VD
b21tYW5kID0gIm5tIC1nVWogIiArIGFyY2hpdmVGaWxlICsgIiB8IGMrK2ZpbHQgfCBncmVwIFwi
XldlYkNvcmU6OlwiIHwgZ3JlcCAtdiBcIl5XZWJDb3JlOjpQQUw6OlwiIgorCitydiA9IG9zLnN5
c3RlbShzeW1ib2xOYW1lc3BhY2VDb21tYW5kICsgIiA+IC9kZXYvbnVsbCIpCisKK2lmIHJ2ID09
IDA6CisgICAgcHJpbnQoIlRoZSBmb2xsb3dpbmcgc3ltYm9scyBhcmUgZGVjbGFyZWQgaW4gUEFM
IGJ1dCBhcmUgaW4gdGhlIFdlYkNvcmUgbmFtZXNwYWNlICh3aGljaCBpcyBmb3JiaWRkZW4gdG8g
cHJlc2VydmUgbGF5ZXJpbmcpOiIpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgb3Muc3lz
dGVtKHN5bWJvbE5hbWVzcGFjZUNvbW1hbmQpCisgICAgc3lzLmV4aXQoMSkKKworaW5jbHVkZVNl
YXJjaENvbW1hbmQgPSAiZmluZCAiICsgc291cmNlRGlyZWN0b3J5ICsgIiBcKCAtbmFtZSBcIiou
Y3BwXCIgLW9yIC1uYW1lIFwiKi5oXCIgLW9yIC1uYW1lIFwiKi5tXCIgLW9yIC1uYW1lIFwiKi5t
bVwiIFwpIC1leGVjIGdyZXAgLXFFIFwiXiMoaW5jbHVkZXxpbXBvcnQpIC5XZWJDb3JlL1wiIHt9
IFw7IC1wcmludCIKKworcnYgPSBvcy5zeXN0ZW0oImV4aXQgJCgiICsgaW5jbHVkZVNlYXJjaENv
bW1hbmQgKyAiIHwgd2MgLWwgKSIpCisKK2lmIHJ2ICE9IDA6CisgICAgcHJpbnQoIlRoZSBmb2xs
b3dpbmcgZmlsZXMgaW4gUEFMIGluY2x1ZGUgaGVhZGVycyBmcm9tIFdlYkNvcmUgKHdoaWNoIGlz
IGZvcmJpZGRlbiB0byBwcmVzZXJ2ZSBsYXllcmluZyk6IikKKyAgICBzeXMuc3Rkb3V0LmZsdXNo
KCkKKyAgICBvcy5zeXN0ZW0oaW5jbHVkZVNlYXJjaENvbW1hbmQpCisgICAgc3lzLmV4aXQoMSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMS5jcHAKaW5kZXggMGM4ZGZkZC4uYWRkZjg0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAK
QEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVk
ZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0Rp
Z2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEExOjppZGVudGlmaWVyKCkgY29u
c3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYg
bWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBl
eGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1
ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0
ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIGF1dG8gZGlnZXN0ID0gUEFM
OjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MSk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0
aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRv
QWxnb3JpdGhtU0hBMTo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNh
bGxiYWNrJiYgY2FsCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTE6OmRp
Z2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgYXV0byBk
aWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJh
Y2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCmluZGV4IDZjYTFh
ZWUuLjYzNGM1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAj
aWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENy
eXB0b0FsZ29yaXRobVNIQTIyNDo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7
Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzIyNCk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6
Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwogICAgIGlmICgh
ZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTIy
NDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwog
CiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRl
KENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBB
TDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzIyNCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAg
ICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAppbmRleCA3MzY2MGY1Li4wZWEw
NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEyNTYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJM
RShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdv
cml0aG1TSEEyNTY6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNI
QTI1Njo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1
dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yNTYpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICBpZiAoIWRpZ2VzdCkg
ewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJl
dHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2Vz
dChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0
aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBk
YXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0
b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwog
ICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICBy
ZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKaW5kZXggYzk3NzUyZC4uODhmMzEzNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMzg0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEzODQuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExF
X0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8
cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hB
Mzg0OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRp
Z2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBA
IC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoVmVjdG9y
PHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQog
ewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKICAgICBpZiAo
IWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTUxMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEE1MTIuY3BwCmluZGV4IDMzZTQ4M2QuLjAxMDNmMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBNTEyLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8p
CiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlw
dG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYs
NyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6aWRl
bnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVj
dG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0
aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CisgICAg
YXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTIpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyAr
NjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90
PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlw
dG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
RGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBh
dXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfNTEyKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUo
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CiAgICAgaWYgKCFkaWdlc3Qp
IHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IGY2YWI3YTIuLjBmMGJmOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxn
b3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC0zMCwyNiArMzAsMjYgQEAKIAogI2lu
Y2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRo
bVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNp
bmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5
cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIHN0ZDo6b3B0aW9u
YWw8Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKIHsKICAgICBzd2l0Y2ggKGhhc2hGdW5j
dGlvbikgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6Ci0gICAg
ICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7CisgICAgICAgIHJldHVy
biBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzIyNDsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yMjQ7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpT
SEFfMjU2OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7
CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2Owog
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoKLSAgICAgICAgcmV0
dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OworICAgICAgICByZXR1cm4gUEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlNIQV81MTI6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzUxMjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV81MTI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IHNpZ25SU0FTU0FfUEtDUzFfdjFfNShDcnlwdG9BbGdvcml0aG1JZGVudGlmCiAgICAg
YXV0byBjcnlwdG9EaWdlc3RBbGdvcml0aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0
aG0oaGFzaCk7CiAgICAgaWYgKCFjcnlwdG9EaWdlc3RBbGdvcml0aG0pCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRv
RGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CisgICAgYXV0byBkaWdlc3Qg
PSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOwogICAg
IGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3Ig
fTsKICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGgpOwpAQCAtOTMsNyArOTMs
NyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gdmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUoQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLAogICAgIGF1dG8gY3J5cHRvRGlnZXN0QWxnb3Jp
dGhtID0gV2ViQ29yZTo6Y3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2gpOwogICAgIGlmICghY3J5
cHRvRGlnZXN0QWxnb3JpdGhtKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9u
RXJyb3IgfTsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9E
aWdlc3RBbGdvcml0aG0pOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKICAgICBpZiAoIWRpZ2VzdCkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAgICAgZGlnZXN0LT5hZGRCeXRl
cyhkYXRhLCBkYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCmluZGV4IGExNTdhODQuLmRmNzdjYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNDUsNyArNDUsNiBAQAog
I2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRl
ICJDb29raWVKYXIuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJET01F
ZGl0b3IuaCIKICNpbmNsdWRlICJET01QYXRjaFN1cHBvcnQuaCIKICNpbmNsdWRlICJET01XaW5k
b3cuaCIKQEAgLTk2LDYgKzk1LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSWRlbnRpZmllcnNG
YWN0b3J5Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgorI2luY2x1ZGUgPHBhbC9jcnlw
dG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpA
QCAtMTMxNiw3ICsxMzE2LDcgQEAgc3RhdGljIFN0cmluZyBjb21wdXRlQ29udGVudFNlY3VyaXR5
UG9saWN5U0hBMjU2SGFzaChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgIFRleHRFbmNvZGlu
ZyBkb2N1bWVudEVuY29kaW5nID0gZWxlbWVudC5kb2N1bWVudCgpLnRleHRFbmNvZGluZygpOwog
ICAgIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmdUb1VzZSA9IGRvY3VtZW50RW5jb2Rpbmcu
aXNWYWxpZCgpID8gZG9jdW1lbnRFbmNvZGluZyA6IFVURjhFbmNvZGluZygpOwogICAgIENTdHJp
bmcgY29udGVudCA9IGVuY29kaW5nVG9Vc2UuZW5jb2RlKFRleHROb2RlVHJhdmVyc2FsOjpjb250
ZW50c0FzU3RyaW5nKGVsZW1lbnQpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgYXV0
byBjcnlwdG9EaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgIGNy
eXB0b0RpZ2VzdC0+YWRkQnl0ZXMoY29udGVudC5kYXRhKCksIGNvbnRlbnQubGVuZ3RoKCkpOwog
ICAgIFZlY3Rvcjx1aW50OF90PiBkaWdlc3QgPSBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCk7
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInNoYTI1Ni0iLCBiYXNlNjRFbmNvZGUoZGlnZXN0LmRh
dGEoKSwgZGlnZXN0LnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
c3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0Nv
bnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNTM2NzFlNS4uOTZmYTdhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0z
Myw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNp
bmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJEb2N1bWVudExvYWRlci5oIgpAQCAtNTcsNiArNTYsNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNr
Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KKyNpbmNs
dWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29w
ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0UG9zaXRpb24uaD4KQEAgLTMwMSwxOCArMzAxLDE4IEBAIGJvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjphbGxQb2xpY2llc0FsbG93KFZpb2xhdGVkRGlyZWN0aXZlQ2FsbGJhY2sm
JiBjYWxsYmFjCiAgICAgcmV0dXJuIGlzQWxsb3dlZDsKIH0KIAotc3RhdGljIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRlbnRTZWN1cml0eVBvbGlj
eUhhc2hBbGdvcml0aG0gYWxnb3JpdGhtKQorc3RhdGljIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFs
Z29yaXRobSBhbGdvcml0aG0pCiB7CiAgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKICAgICBjYXNl
IENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIHJl
dHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKKyAgICAgICAgcmV0dXJuIFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CiAgICAgY2FzZSBDb250ZW50U2Vj
dXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICByZXR1cm4gQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5
SGFzaEFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfNTEyOworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzUxMjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAgIHJldHVybiBQQUw6OkNy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQ
cmVkaWNhdGU+CkBAIC0zMzMsNyArMzMzLDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIYXNo
SW5FbmZvcmNlZEFuZFJlcG9ydE9ubHlQb2xpY2llc1BhaXIgQ29udGVudFNlY3VyaXR5UG8KICAg
ICBib29sIGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyA9IGZhbHNlOwogICAgIGJvb2wgZm91
bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8gYWxnb3Jp
dGhtIDogYWxnb3JpdGhtcykgewotICAgICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IENyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOworICAgICAg
ICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9E
aWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7CiAgICAgICAgIGNyeXB0b0RpZ2VzdC0+YWRkQnl0
ZXMoY29udGVudENTdHJpbmcuZGF0YSgpLCBjb250ZW50Q1N0cmluZy5sZW5ndGgoKSk7CiAgICAg
ICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2ggaGFzaCA9IHsgYWxnb3JpdGhtLCBjcnlwdG9E
aWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKICAgICAgICAgaWYgKCFmb3VuZEhhc2hJbkVuZm9yY2Vk
UG9saWNpZXMgJiYgYWxsUG9saWNpZXNXaXRoRGlzcG9zaXRpb25BbGxvdyhDb250ZW50U2VjdXJp
dHlQb2xpY3k6OkRpc3Bvc2l0aW9uOjpFbmZvcmNlLCBzdGQ6OmZvcndhcmQ8UHJlZGljYXRlPihw
cmVkaWNhdGUpLCBoYXNoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Ny
eXB0by9DcnlwdG9EaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9Dcnlw
dG9EaWdlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFmMDc1YS4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKKysr
IC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBD
cnlwdG9EaWdlc3RfaAotI2RlZmluZSBDcnlwdG9EaWdlc3RfaAotCi0jaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0OwotCi1jbGFzcyBDcnlwdG9EaWdlc3Qg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0RpZ2VzdCk7Ci1wdWJsaWM6Ci0gICAg
ZW51bSBjbGFzcyBBbGdvcml0aG0gewotICAgICAgICBTSEFfMSwKLSAgICAgICAgU0hBXzIyNCwK
LSAgICAgICAgU0hBXzI1NiwKLSAgICAgICAgU0hBXzM4NCwKLSAgICAgICAgU0hBXzUxMiwKLSAg
ICB9OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBjcmVhdGUoQWxn
b3JpdGhtKTsKLSAgICB+Q3J5cHRvRGlnZXN0KCk7Ci0KLSAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0
IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKLSAgICBWZWN0b3I8dWludDhfdD4gY29tcHV0
ZUhhc2goKTsKLQotcHJpdmF0ZToKLSAgICBDcnlwdG9EaWdlc3QoKTsKLQotICAgIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBtX2NvbnRleHQ7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDcnlwdG9EaWdlc3RfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21t
b25DcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0
by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlM2ZmYzU2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0
by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNy
eXB0by5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250
ZXh0IHsKLSAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07Ci0gICAgdm9pZCog
Y2NDb250ZXh0OwotfTsKLQotaW5saW5lIENDX1NIQTFfQ1RYKiB0b1NIQTFDb250ZXh0KENyeXB0
b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRo
bSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxDQ19TSEExX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hB
MjU2X0NUWCogdG9TSEEyMjRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17
Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzIyNCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250
ZXh0LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjU2Q29udGV4
dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5h
bGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlu
bGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTM4NENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCog
Y29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEy
X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9T
SEE1MTJDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJU
KGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRl
eHQpOwotfQotCi1DcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQo
bmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0Rp
Z2VzdCgpCi17Ci0gICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewotICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICBkZWxldGUgdG9TSEExQ29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgZGVsZXRlIHRvU0hBMjI0Q29udGV4
dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgZGVsZXRlIHRvU0hBMjU2Q29udGV4dCht
X2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgZGVsZXRlIHRvU0hBMzg0Q29udGV4dChtX2Nv
bnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgZGVsZXRlIHRvU0hBNTEyQ29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi0KLXN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtIGFsZ29yaXRobSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdl
c3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9
IGFsZ29yaXRobTsKLQotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKLSAgICAgICAgQ0NfU0hBMV9DVFgqIGNvbnRleHQg
PSBuZXcgQ0NfU0hBMV9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQg
PSBjb250ZXh0OwotICAgICAgICBDQ19TSEExX0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVy
biBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
MjQ6IHsKLSAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RY
OwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAg
ICAgQ0NfU0hBMjI0X0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAg
fQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKLSAgICAgICAg
Q0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOwotICAgICAgICBkaWdl
c3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBMjU2X0lu
aXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAgQ0NfU0hBNTEyX0NUWCog
Y29udGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+
Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBMzg0X0luaXQoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV81MTI6IHsKLSAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBD
Q19TSEE1MTJfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29u
dGV4dDsKLSAgICAgICAgQ0NfU0hBNTEyX0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBk
aWdlc3Q7Ci0gICAgfQotICAgIH0KLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNv
bnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIHN3aXRjaCAobV9jb250ZXh0
LT5hbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToK
LSAgICAgICAgQ0NfU0hBMV9VcGRhdGUodG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBp
bnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIENDX1NIQTIyNF9VcGRhdGUodG9TSEEyMjRDb250
ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgQ0NfU0hB
MjU2X1VwZGF0ZSh0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0
aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMzg0OgotICAgICAgICBDQ19TSEEzODRfVXBkYXRlKHRvU0hBMzg0Q29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIENDX1NIQTUxMl9VcGRhdGUo
dG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21w
dXRlSGFzaCgpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBzd2l0Y2ggKG1f
Y29udGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzE6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMV9ESUdFU1RfTEVOR1RIKTsKLSAg
ICAgICAgQ0NfU0hBMV9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250ZXh0KG1fY29udGV4
dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMjI0OgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTIyNF9ESUdFU1RfTEVO
R1RIKTsKLSAgICAgICAgQ0NfU0hBMjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjI0Q29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEy
NTZfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTI1Nl9GaW5hbChyZXN1bHQuZGF0YSgp
LCB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIHJlc3VsdC5y
ZXNpemUoQ0NfU0hBMzg0X0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEEzODRfRmluYWwo
cmVzdWx0LmRhdGEoKSwgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAg
ICAgICByZXN1bHQucmVzaXplKENDX1NIQTUxMl9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0Nf
U0hBNTEyX0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0
KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMGEzYzhiZi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwu
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0SG9tZQotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNsdWRlIDxnY3J5cHQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7
Ci0gICAgaW50IGFsZ29yaXRobTsKLSAgICBnY3J5X21kX2hkX3QgbWQ7Ci19OwotCi1DcnlwdG9E
aWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENv
bnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci19Ci0KLXN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBpbnQgZ2NyeXB0QWxnb3JpdGhtOwot
Ci0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMToKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEExOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0Ogot
ICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTIyNDsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgZ2Ny
eXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEyNTY7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRo
bSA9IEdDUllfTURfU0hBMzg0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01E
X1NIQTUxMjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRpZ2VzdC0+bV9jb250
ZXh0LT5hbGdvcml0aG0gPSBnY3J5cHRBbGdvcml0aG07Ci0KLSAgICBnY3J5X21kX29wZW4oJmRp
Z2VzdC0+bV9jb250ZXh0LT5tZCwgZ2NyeXB0QWxnb3JpdGhtLCAwKTsKLSAgICBpZiAoIWRpZ2Vz
dC0+bV9jb250ZXh0LT5tZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4g
ZGlnZXN0OwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5w
dXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgZ2NyeV9tZF93cml0ZShtX2NvbnRleHQtPm1kLCBp
bnB1dCwgbGVuZ3RoKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0
ZUhhc2goKQotewotICAgIGludCBkaWdlc3RMZW4gPSBnY3J5X21kX2dldF9hbGdvX2RsZW4obV9j
b250ZXh0LT5hbGdvcml0aG0pOwotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoZGlnZXN0TGVu
KTsKLQotICAgIGdjcnlfbWRfZmluYWwobV9jb250ZXh0LT5tZCk7Ci0gICAgbWVtY3B5KHJlc3Vs
dC5kYXRhKCksIGdjcnlfbWRfcmVhZChtX2NvbnRleHQtPm1kLCAwKSwgZGlnZXN0TGVuKTsKLSAg
ICBnY3J5X21kX2Nsb3NlKG1fY29udGV4dC0+bWQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWE1ZDgxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPGdudXRscy9nbnV0bHMu
aD4KLSNpbmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
c3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGht
X3QgYWxnb3JpdGhtOwotICAgIGdudXRsc19oYXNoX2hkX3QgaGFzaDsKLX07Ci0KLUNyeXB0b0Rp
Z2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29u
dGV4dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLSAgICBnbnV0
bHNfaGFzaF9kZWluaXQobV9jb250ZXh0LT5oYXNoLCAwKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG0gYWxnb3JpdGhtKQotewotICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgZ251dGxzQWxn
b3JpdGhtOwotCi0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMTogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNf
RElHX1NIQTE7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjI0OiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19E
SUdfU0hBMjI0OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzI1NjogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNf
RElHX1NIQTI1NjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExT
X0RJR19TSEEzODQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRM
U19ESUdfU0hBNTEyOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRp
Z2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnbnV0bHNBbGdvcml0aG07Ci0KLSAgICBpbnQg
cmV0ID0gZ251dGxzX2hhc2hfaW5pdCgmZGlnZXN0LT5tX2NvbnRleHQtPmhhc2gsIGdudXRsc0Fs
Z29yaXRobSk7Ci0gICAgaWYgKHJldCAhPSBHTlVUTFNfRV9TVUNDRVNTKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBkaWdlc3Q7Ci19Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0
OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBnbnV0
bHNfaGFzaChtX2NvbnRleHQtPmhhc2gsIGlucHV0LCBsZW5ndGgpOwotfQotCi1WZWN0b3I8dWlu
dDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+
IHJlc3VsdDsKLSAgICBpbnQgZGlnZXN0TGVuID0gZ251dGxzX2hhc2hfZ2V0X2xlbihtX2NvbnRl
eHQtPmFsZ29yaXRobSk7Ci0gICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RMZW4pOwotCi0gICAgZ251
dGxzX2hhc2hfb3V0cHV0KG1fY29udGV4dC0+aGFzaCwgcmVzdWx0LmRhdGEoKSk7Ci0KLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2Y2MxOTIuLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNsdWRlIDx3aW5jcnlwdC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKLSAgICBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07Ci0gICAgSENSWVBUUFJPViBoQ29udGV4
dCB7IDAgfTsKLSAgICBIQ1JZUFRIQVNIIGhIYXNoIHsgMCB9OwotfTsKLQotQ3J5cHRvRGlnZXN0
OjpDcnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0
KQotewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotICAgIGlmIChIQ1JZ
UFRIQVNIIGhIYXNoID0gbV9jb250ZXh0LT5oSGFzaCkKLSAgICAgICAgQ3J5cHREZXN0cm95SGFz
aChoSGFzaCk7Ci0gICAgaWYgKEhDUllQVFBST1YgaENvbnRleHQgPSBtX2NvbnRleHQtPmhDb250
ZXh0KQotICAgICAgICBDcnlwdFJlbGVhc2VDb250ZXh0KGhDb250ZXh0LCAwKTsKLX0KLQotc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQWxnb3JpdGht
IGFsZ29yaXRobSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3Qo
bmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFs
Z29yaXRobTsKLSAgICBpZiAoIUNyeXB0QWNxdWlyZUNvbnRleHQoJmRpZ2VzdC0+bV9jb250ZXh0
LT5oQ29udGV4dCwgbnVsbHB0ciwgbnVsbHB0ciAvKiB1c2UgZGVmYXVsdCBwcm92aWRlciAqLywg
UFJPVl9SU0FfQUVTLCBDUllQVF9WRVJJRllDT05URVhUKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0gICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxzZTsKLSAgICBzd2l0Y2ggKGFsZ29yaXRobSkg
ewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7Ci0gICAgICAgIHN1
Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENB
TEdfU0hBMSwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7Ci0g
ICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENv
bnRleHQsIENBTEdfU0hBXzI1NiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMzg0OiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1f
Y29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzM4NCwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0
LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFz
aChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzUxMiwgMCwgMCwgJmRpZ2Vz
dC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0gICAg
aWYgKHN1Y2NlZWRlZCkKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICByZXR1cm4gbnVsbHB0
cjsKLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBz
aXplX3QgbGVuZ3RoKQotewotICAgIGlmICghaW5wdXQgfHwgIWxlbmd0aCkKLSAgICAgICAgcmV0
dXJuOwotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0SGFzaERhdGEobV9jb250ZXh0LT5oSGFzaCwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBCWVRFKj4oaW5wdXQpLCBsZW5ndGgsIDApKTsKLX0KLQot
VmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIFZlY3Rv
cjx1aW50OF90PiByZXN1bHQ7Ci0gICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyOwotICAgIERX
T1JEIGRpZ2VzdExlbmd0aEJ1ZmZlclNpemUgPSBzaXplb2YoZGlnZXN0TGVuZ3RoQnVmZmVyKTsK
LQotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFzaFBhcmFtKG1fY29udGV4dC0+aEhhc2gs
IEhQX0hBU0hTSVpFLCByZWludGVycHJldF9jYXN0PEJZVEUqPigmZGlnZXN0TGVuZ3RoQnVmZmVy
KSwgJmRpZ2VzdExlbmd0aEJ1ZmZlclNpemUsIDApKTsKLSAgICByZXN1bHQucmVzaXplKGRpZ2Vz
dExlbmd0aEJ1ZmZlcik7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbSht
X2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIVkFMLCByZXN1bHQuZGF0YSgpLCAmZGlnZXN0TGVuZ3Ro
QnVmZmVyLCAwKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LnNpemUoKSA9PSBkaWdlc3RM
ZW5ndGhCdWZmZXIpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZSBiL1NvdXJjZS9j
bWFrZS9XZWJLaXRGUy5jbWFrZQppbmRleCAyOWEwOTY5Li41MTMwZmZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZTLmNt
YWtlCkBAIC0xMCw2ICsxMCw5IEBAIGVuZGlmICgpCiBpZiAoTk9UIFdFQkNPUkVfRElSKQogICAg
IHNldChXRUJDT1JFX0RJUiAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViQ29yZSIpCiBl
bmRpZiAoKQoraWYgKE5PVCBQQUxfRElSKQorICAgIHNldChQQUxfRElSICIke0NNQUtFX1NPVVJD
RV9ESVJ9L1NvdXJjZS9XZWJDb3JlL1BBTCIpCitlbmRpZiAoKQogaWYgKE5PVCBXRUJLSVRfRElS
KQogICAgIHNldChXRUJLSVRfRElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJLaXQi
KQogZW5kaWYgKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299302</attachid>
            <date>2017-01-19 19:15:43 -0800</date>
            <delta_ts>2017-01-19 23:41:09 -0800</delta_ts>
            <desc>PAL with suggested revisions</desc>
            <filename>bug-143358-pal.diff</filename>
            <type>text/plain</type>
            <size>72549</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggYmYzYzRl
Zi4uYmIzMzE4YyAxMDA2NDQKLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50
eHQKQEAgLTExNCw2ICsxMTQsNyBAQCBlbHNlICgpCiBlbmRpZiAoKQogCiBzZXQoSmF2YVNjcmlw
dENvcmVfTElCUkFSWV9UWVBFIFNIQVJFRCkKK3NldChQQUxfTElCUkFSWV9UWVBFIFNUQVRJQykK
IHNldChXZWJLaXRfTElCUkFSWV9UWVBFIFNIQVJFRCkKIHNldChXZWJLaXQyX0xJQlJBUllfVFlQ
RSBTSEFSRUQpCiBzZXQoV2ViQ29yZVRlc3RTdXBwb3J0X0xJQlJBUllfVFlQRSBTVEFUSUMpCmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNjQ5NDVhNC4uZWYzMTc2ZCAx
MDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDE3LTAxLTE5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAYW0uc29ueS5jb20+IGFuZCBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9k
dWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIFNvdXJjZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvV2Vi
S2l0RlMuY21ha2U6CisKIDIwMTctMDEtMTcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFw
cGxlLmNvbT4KIAogICAgICAgICBFTkFCTEUoVVNFUl9USU1JTkcpIE5vdCBEZWZpbmVkIGZvciBB
cHBsZSBXaW5kb3dzIG9yIE9TIFggUG9ydHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9DTWFrZUxpc3Rz
LnR4dCBiL1NvdXJjZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxYjhhMmRjLi4xNWZkZjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0NNYWtlTGlzdHMudHh0
CkBAIC00Niw2ICs0Niw3IEBAIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV1RGICR7
QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZM
QUdTKEphdmFTY3JpcHRDb3JlICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAKIGlmIChF
TkFCTEVfV0VCQ09SRSkKKyAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFBBTCAk
e0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElM
RVJfRkxBR1MoV2ViQ29yZVRlc3RTdXBwb3J0ICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30p
CiAgICAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhXZWJDb3JlICR7QURESVRJT05B
TF9DT01QSUxFUl9GTEFHU30pCiAgICAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhX
ZWJDb3JlRGVyaXZlZFNvdXJjZXMgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggYjUwNDNjNS4uNjhhNTk3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0xLDYgKzEsNyBAQAogY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDIuOC4xMikK
IGluY2x1ZGUoV2ViS2l0Q29tbW9uKQogc2V0X3Byb3BlcnR5KERJUkVDVE9SWSAuIFBST1BFUlRZ
IEZPTERFUiAiV2ViQ29yZSIpCithZGRfc3ViZGlyZWN0b3J5KFBBTC9wYWwpCiAKIHNldChXZWJD
b3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtDTUFLRV9CSU5BUllfRElSfSIKQEAgLTI5
NDUsNiArMjk0Niw3IEBAIHNldChXZWJDb3JlX1BMVUdfSU5TX1JFU09VUkNFUwogc2V0KFdlYkNv
cmVfTElCUkFSSUVTCiAgICAgJHtJQ1VfTElCUkFSSUVTfQogICAgIEphdmFTY3JpcHRDb3JlJHtE
RUJVR19TVUZGSVh9CisgICAgUEFMJHtERUJVR19TVUZGSVh9CiApCiAKIGlmIChFTkFCTEVfTEVH
QUNZX0VOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNjcyYTkyLi5mZmVmNDc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMTctMDEtMTkgIERvbiBPbG1zdGVhZCAgPGRvbi5v
bG1zdGVhZEBhbS5zb255LmNvbT4gYW5kIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0gQWJzdHJhY3Rpb24g
TGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1BBTC54
Y2NvbmZpZzogQWRkZWQuCisgICAgICAgICogUEFML2NvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAg
KiBQQUwvcGFsL0NNYWtlTGlzdHMudHh0OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFsL1BsYXRm
b3JtRWZsLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtl
OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlOiBBZGRlZC4KKyAg
ICAgICAgKiBQQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwv
cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaC4KKyAgICAgICAgKiBQQUwvcGFsL2NyeXB0by9j
b21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcC4KKyAgICAgICAgKFBBTDo6dG9TSEExQ29udGV4dCk6CisgICAgICAgIChQ
QUw6OnRvU0hBMjI0Q29udGV4dCk6CisgICAgICAgIChQQUw6OnRvU0hBMjU2Q29udGV4dCk6Cisg
ICAgICAgIChQQUw6OnRvU0hBMzg0Q29udGV4dCk6CisgICAgICAgIChQQUw6OnRvU0hBNTEyQ29u
dGV4dCk6CisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KToKKyAgICAg
ICAgKFBBTDo6Q3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFBBTDo6Q3J5
cHRvRGlnZXN0OjpjcmVhdGUpOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVz
KToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCk6CisgICAgICAgICog
UEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlw
dC5jcHAuCisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KToKKyAgICAg
ICAgKFBBTDo6Q3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFBBTDo6Q3J5
cHRvRGlnZXN0OjpjcmVhdGUpOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVz
KToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCk6CisgICAgICAgICog
UEFML3BhbC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRM
Uy5jcHAuCisgICAgICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KToKKyAgICAg
ICAgKFBBTDo6Q3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFBBTDo6Q3J5
cHRvRGlnZXN0OjpjcmVhdGUpOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVz
KToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCk6CisgICAgICAgICog
UEFML3BhbC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAuCisgICAg
ICAgIChQQUw6OkNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFBBTDo6Q3J5
cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KToKKyAgICAgICAgKFBBTDo6Q3J5cHRvRGlnZXN0Ojpj
cmVhdGUpOgorICAgICAgICAoUEFMOjpDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKToKKyAgICAgICAg
KFBBTDo6Q3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCk6CisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1N
YWMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogU2NyaXB0
cy9FbmZvcmNlUEFMTGF5ZXJpbmcucHk6IEFkZGVkLgorICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtU0hBMTo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEyMjQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hB
MjI0OjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTI1Ni5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRp
Z2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KToK
KyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QpOgorICAgICAg
ICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNv
cmU6OnNpZ25SU0FTU0FfUEtDUzFfdjFfNSk6CisgICAgICAgIChXZWJDb3JlOjp2ZXJpZnlSU0FT
U0FfUEtDUzFfdjFfNSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZI
YXNoKToKKyAgICAgICAgKiBwYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9DcnlwdG9EaWdlc3RBbGdvcml0aG0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpmaW5kSGFzaE9mQ29udGVudEluUG9saWNpZXMpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SG9zdFRMU0NlcnRpZmljYXRlU2V0Ojpjb21wdXRlQ2VydGlmaWNh
dGVIYXNoKToKKwogMjAxNy0wMS0xOSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW2lPU10gTW92ZSB0aGUgUERGIHBhc3N3b3JkIHZpZXcgaW50byBpdHMgb3duIGNs
YXNzIGZvciByZXVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMv
UEFMLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmln
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YmEyZWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcKQEAgLTAs
MCArMSwzNiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8v
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
Ly8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8v
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVk
ZSAiV2ViQ29yZS54Y2NvbmZpZyIKKworSU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfJChD
T05GSUdVUkFUSU9OKSk7CitJTlNUQUxMX1BBVEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwvbGli
OworCitTS0lQX0lOU1RBTEwgPSAkKFNLSVBfSU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFMTCkp
OworU0tJUF9JTlNUQUxMXyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9OTyA9IFlFUzsKK1NLSVBfSU5T
VEFMTF9ZRVMgPSBOTzsKKworUFJPRFVDVF9OQU1FID0gUEFMOworRVhFQ1VUQUJMRV9QUkVGSVgg
PSBsaWI7CitFWFBPUlRFRF9TWU1CT0xTX0ZJTEUgPSA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvY29uZmlnLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ4OGM4MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqCisgKi8KKworI2lmIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgJiYgSEFWRV9DT05GSUdf
SCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCisjaW5jbHVkZSAiY21ha2Vjb25maWcu
aCIKKyNlbmRpZgorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpbmNsdWRlIDx3dGYv
RXhwb3J0TWFjcm9zLmg+CisKKyNpZmRlZiBfX0FQUExFX18KKyNkZWZpbmUgSEFWRV9GVU5DX1VT
TEVFUCAxCisjZW5kaWYgLyogX19BUFBMRV9fICovCisKKyNpZiBPUyhXSU5ET1dTKQorCisjaWZu
ZGVmIF9XSU4zMl9XSU5OVAorI2RlZmluZSBfV0lOMzJfV0lOTlQgMHg2MDEKKyNlbmRpZgorCisj
aWZuZGVmIFdJTlZFUgorI2RlZmluZSBXSU5WRVIgMHgwNjAxCisjZW5kaWYKKworI2VuZGlmIC8q
IE9TKFdJTkRPV1MpICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisvLyBUaGVzZSB1bmRlZnMg
bWF0Y2ggdXAgd2l0aCBkZWZpbmVzIGluIFdlYkNvcmVQcmVmaXguaCBmb3IgTWFjIE9TIFguCisv
LyBIZWxwcyB1cyBjYXRjaCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5IGFjY2lkZW50
IGluIGNvZGUgYW5kIGRvZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgorI3VuZGVmIG5ldworI3Vu
ZGVmIGRlbGV0ZQorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKKyNpbmNsdWRlIDxjaXNv
NjQ2PgorCisjZW5kaWYKKworI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5hZmY2MzA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9D
TWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDQzIEBACitzZXQoUEFMX0hFQURFUlMKKyAgICBjcnlw
dG8vQ3J5cHRvRGlnZXN0LmgKKykKKworc2V0KFBBTF9TT1VSQ0VTCispCisKK3NldChQQUxfSU5D
TFVERV9ESVJFQ1RPUklFUworICAgICIke1BBTF9ESVJ9IgorICAgICIke1BBTF9ESVJ9L3BhbCIK
KyAgICAiJHtQQUxfRElSfS9wYWwvY3J5cHRvIgorKQorCitzZXQoUEFMX0xJQlJBUklFUworICAg
IFdURgorKQorCitXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKworV0VC
S0lUX1dSQVBfU09VUkNFTElTVCgke1BBTF9TT1VSQ0VTfSkKK1dFQktJVF9GUkFNRVdPUksoUEFM
KQorCitpZiAoVU5JWCkKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAgIFRBUkdFVCBQ
QUwKKyAgICAgICAgUE9TVF9CVUlMRAorICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFC
TEV9ICR7V0VCQ09SRV9ESVJ9L1NjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5ICQ8VEFSR0VU
X0ZJTEU6UEFMPiAke1BBTF9ESVJ9CisgICAgICAgIFZFUkJBVElNKQorZW5kaWYgKCkKKworaWYg
KE1TVkMpCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAg
ICAgIFBSRV9CVUlMRAorICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJ
VF9MSUJSQVJJRVNfRElSfS90b29scy9zY3JpcHRzL2F1dG8tdmVyc2lvbi5wbCAke0RFUklWRURf
U09VUkNFU19ESVJ9CisgICAgICAgIFZFUkJBVElNKQorCisgICAgYWRkX2N1c3RvbV9jb21tYW5k
KAorICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBPU1RfQlVJTEQKKyAgICAgICAgQ09NTUFO
RCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVRfTElCUkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0
cy92ZXJzaW9uLXN0YW1wLnBsICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0gJDxUQVJHRVRfRklMRTpQ
QUw+CisgICAgICAgIFZFUkJBVElNKQorZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1Bs
YXRmb3JtRWZsLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NWMx
ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRWZs
LmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlw
dG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L1BsYXRmb3JtR1RLLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3
NWMxODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3Jt
R1RLLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBj
cnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL1BsYXRmb3JtTWFjLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjJmOTY4ZWM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0
Zm9ybU1hYy5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCisg
ICAgY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCispCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi42ZjY5MTlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5E
IFBBTF9TT1VSQ0VTCisgICAgY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCispCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4OGUxMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBQQUwgeworCitzdHJ1
Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dDsKKworY2xhc3MgQ3J5cHRvRGlnZXN0IHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShDcnlwdG9EaWdlc3QpOworcHVibGljOgorICAgIGVudW0gY2xhc3Mg
QWxnb3JpdGhtIHsKKyAgICAgICAgU0hBXzEsCisgICAgICAgIFNIQV8yMjQsCisgICAgICAgIFNI
QV8yNTYsCisgICAgICAgIFNIQV8zODQsCisgICAgICAgIFNIQV81MTIsCisgICAgfTsKKyAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gY3JlYXRlKEFsZ29yaXRobSk7Cisg
ICAgfkNyeXB0b0RpZ2VzdCgpOworCisgICAgdm9pZCBhZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1
dCwgc2l6ZV90IGxlbmd0aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVIYXNoKCk7CisK
K3ByaXZhdGU6CisgICAgQ3J5cHRvRGlnZXN0KCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvRGlnZXN0Q29udGV4dD4gbV9jb250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgUEFMCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5
cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YTI0MWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5
cHRvLmNwcApAQCAtMCwwICsxLDE3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKKworI2luY2x1ZGUgPENvbW1vbkNyeXB0by9D
b21tb25DcnlwdG8uaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RD
b250ZXh0IHsKKyAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07CisgICAgdm9p
ZCogY2NDb250ZXh0OworfTsKKworaW5saW5lIENDX1NIQTFfQ1RYKiB0b1NIQTFDb250ZXh0KENy
eXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29y
aXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxDQ19TSEExX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0Nf
U0hBMjU2X0NUWCogdG9TSEEyMjRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQp
Cit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzIyNCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihj
b250ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjU2Q29u
dGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0
LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30K
K2lubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTM4NENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4
dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hB
NTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBNTEyX0NUWCog
dG9TSEE1MTJDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNT
RVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
Mik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0Nv
bnRleHQpOworfQorCitDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCisgICAgOiBtX2NvbnRl
eHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCit7Cit9CisKK0NyeXB0b0RpZ2VzdDo6fkNyeXB0
b0RpZ2VzdCgpCit7CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgeworICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBkZWxldGUgdG9TSEEx
Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAgZGVsZXRlIHRvU0hBMjI0Q29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgZGVsZXRlIHRvU0hBMjU2Q29udGV4
dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgZGVsZXRlIHRvU0hBMzg0Q29udGV4dCht
X2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAgICAgICAgZGVsZXRlIHRvU0hBNTEyQ29udGV4dChtX2Nv
bnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCisKK3N0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtIGFsZ29yaXRobSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBk
aWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRo
bSA9IGFsZ29yaXRobTsKKworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKKyAgICAgICAgQ0NfU0hBMV9DVFgqIGNvbnRl
eHQgPSBuZXcgQ0NfU0hBMV9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRl
eHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEExX0luaXQoY29udGV4dCk7CisgICAgICAgIHJl
dHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8yMjQ6IHsKKyAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZf
Q1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAg
ICAgICAgQ0NfU0hBMjI0X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7Cisg
ICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKKyAgICAg
ICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOworICAgICAgICBk
aWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMjU2
X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAgICAgICAgQ0NfU0hBNTEyX0NU
WCogY29udGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4
dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMzg0X0luaXQoY29udGV4dCk7
CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV81MTI6IHsKKyAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5l
dyBDQ19TSEE1MTJfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0g
Y29udGV4dDsKKyAgICAgICAgQ0NfU0hBNTEyX0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVy
biBkaWdlc3Q7CisgICAgfQorICAgIH0KK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVz
KGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIHN3aXRjaCAobV9jb250
ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MToKKyAgICAgICAgQ0NfU0hBMV9VcGRhdGUodG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkp
LCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIENDX1NIQTIyNF9VcGRhdGUodG9TSEEyMjRD
b250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgQ0Nf
U0hBMjU2X1VwZGF0ZSh0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxl
bmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMzg0OgorICAgICAgICBDQ19TSEEzODRfVXBkYXRlKHRvU0hBMzg0Q29udGV4dChtX2Nv
bnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIENDX1NIQTUxMl9VcGRh
dGUodG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpj
b21wdXRlSGFzaCgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBzd2l0Y2gg
KG1fY29udGV4dC0+YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzE6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMV9ESUdFU1RfTEVOR1RIKTsK
KyAgICAgICAgQ0NfU0hBMV9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250ZXh0KG1fY29u
dGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMjI0OgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTIyNF9ESUdFU1Rf
TEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjI0
Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19T
SEEyNTZfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NIQTI1Nl9GaW5hbChyZXN1bHQuZGF0
YSgpLCB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIHJlc3Vs
dC5yZXNpemUoQ0NfU0hBMzg0X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEEzODRfRmlu
YWwocmVzdWx0LmRhdGEoKSwgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgor
ICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTUxMl9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAg
Q0NfU0hBNTEyX0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQu
Z2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4wYTc4YWUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKQEAgLTAs
MCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IFNvZnRBdEhvbWUKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z2NyeXB0Lmg+CisKK25h
bWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgaW50IGFs
Z29yaXRobTsKKyAgICBnY3J5X21kX2hkX3QgbWQ7Cit9OworCitDcnlwdG9EaWdlc3Q6OkNyeXB0
b0RpZ2VzdCgpCisgICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCit7Cit9
CisKK0NyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7Cit9CisKK3N0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtIGFsZ29yaXRobSkKK3sKKyAgICBpbnQgZ2NyeXB0QWxnb3JpdGhtOworCisgICAgc3dpdGNo
IChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToK
KyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEExOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAgICBnY3J5
cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTIyNDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGht
ID0gR0NSWV9NRF9TSEEyNTY7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURf
U0hBMzg0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfNTEyOgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTUxMjsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4g
ZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0
aG0gPSBnY3J5cHRBbGdvcml0aG07CisKKyAgICBnY3J5X21kX29wZW4oJmRpZ2VzdC0+bV9jb250
ZXh0LT5tZCwgZ2NyeXB0QWxnb3JpdGhtLCAwKTsKKyAgICBpZiAoIWRpZ2VzdC0+bV9jb250ZXh0
LT5tZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gZGlnZXN0OworfQor
Cit2b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBs
ZW5ndGgpCit7CisgICAgZ2NyeV9tZF93cml0ZShtX2NvbnRleHQtPm1kLCBpbnB1dCwgbGVuZ3Ro
KTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQorewor
ICAgIGludCBkaWdlc3RMZW4gPSBnY3J5X21kX2dldF9hbGdvX2RsZW4obV9jb250ZXh0LT5hbGdv
cml0aG0pOworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoZGlnZXN0TGVuKTsKKworICAgIGdj
cnlfbWRfZmluYWwobV9jb250ZXh0LT5tZCk7CisgICAgbWVtY3B5KHJlc3VsdC5kYXRhKCksIGdj
cnlfbWRfcmVhZChtX2NvbnRleHQtPm1kLCAwKSwgZGlnZXN0TGVuKTsKKyAgICBnY3J5X21kX2Ns
b3NlKG1fY29udGV4dC0+bWQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1l
c3BhY2UgUEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nbnV0
bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjU1NmI4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcApAQCAtMCwwICsxLDEwMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGln
ZXN0LmgiCisKKyNpbmNsdWRlIDxnbnV0bHMvZ251dGxzLmg+CisjaW5jbHVkZSA8Z251dGxzL2Ny
eXB0by5oPgorCituYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQg
eworICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgYWxnb3JpdGhtOworICAgIGdudXRsc19o
YXNoX2hkX3QgaGFzaDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6
IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0
Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBnbnV0bHNfaGFzaF9kZWluaXQobV9jb250ZXh0LT5o
YXNoLCAwKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIGdudXRs
c19kaWdlc3RfYWxnb3JpdGhtX3QgZ251dGxzQWxnb3JpdGhtOworCisgICAgc3dpdGNoIChhbGdv
cml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAg
ICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTE7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7CisgICAg
ICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjI0OworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogeworICAg
ICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTI1NjsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAg
ICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEzODQ7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Cisg
ICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBNTEyOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGln
ZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0g
PSBnbnV0bHNBbGdvcml0aG07CisKKyAgICBpbnQgcmV0ID0gZ251dGxzX2hhc2hfaW5pdCgmZGln
ZXN0LT5tX2NvbnRleHQtPmhhc2gsIGdudXRsc0FsZ29yaXRobSk7CisgICAgaWYgKHJldCAhPSBH
TlVUTFNfRV9TVUNDRVNTKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBk
aWdlc3Q7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1
dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBnbnV0bHNfaGFzaChtX2NvbnRleHQtPmhhc2gsIGlu
cHV0LCBsZW5ndGgpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRl
SGFzaCgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBpbnQgZGlnZXN0TGVu
ID0gZ251dGxzX2hhc2hfZ2V0X2xlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7CisgICAgcmVzdWx0
LnJlc2l6ZShkaWdlc3RMZW4pOworCisgICAgZ251dGxzX2hhc2hfb3V0cHV0KG1fY29udGV4dC0+
aGFzaCwgcmVzdWx0LmRhdGEoKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5h
bWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3dp
bi9DcnlwdG9EaWdlc3RXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vd2lu
L0NyeXB0b0RpZ2VzdFdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MzE4Mzg4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVk
ZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHdpbmNyeXB0Lmg+CisKK25hbWVzcGFjZSBQQUwgewor
CitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG0gYWxnb3JpdGhtOworICAgIEhDUllQVFBST1YgaENvbnRleHQgeyAwIH07CisgICAgSENSWVBU
SEFTSCBoSGFzaCB7IDAgfTsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAg
ICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGln
ZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBpZiAoSENSWVBUSEFTSCBoSGFzaCA9IG1fY29u
dGV4dC0+aEhhc2gpCisgICAgICAgIENyeXB0RGVzdHJveUhhc2goaEhhc2gpOworICAgIGlmIChI
Q1JZUFRQUk9WIGhDb250ZXh0ID0gbV9jb250ZXh0LT5oQ29udGV4dCkKKyAgICAgICAgQ3J5cHRS
ZWxlYXNlQ29udGV4dChoQ29udGV4dCwgMCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9E
aWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKEFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwor
ICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBhbGdvcml0aG07CisgICAgaWYgKCFD
cnlwdEFjcXVpcmVDb250ZXh0KCZkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIG51bGxwdHIs
IG51bGxwdHIgLyogdXNlIGRlZmF1bHQgcHJvdmlkZXIgKi8sIFBST1ZfUlNBX0FFUywgQ1JZUFRf
VkVSSUZZQ09OVEVYVCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGJvb2wgc3VjY2Vl
ZGVkID0gZmFsc2U7CisgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0
ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQTEsIDAsIDAsICZkaWdl
c3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogeworICAgICAgICBzdWNjZWVkZWQgPSBD
cnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8yNTYs
IDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAgICBz
dWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBD
QUxHX1NIQV8zODQsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjog
eworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQt
PmhDb250ZXh0LCBDQUxHX1NIQV81MTIsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorICAgIGlmIChzdWNjZWVkZWQpCisgICAg
ICAgIHJldHVybiBkaWdlc3Q7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgQ3J5cHRv
RGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAg
ICBpZiAoIWlucHV0IHx8ICFsZW5ndGgpCisgICAgICAgIHJldHVybjsKKyAgICBSRUxFQVNFX0FT
U0VSVChDcnlwdEhhc2hEYXRhKG1fY29udGV4dC0+aEhhc2gsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgQllURSo+KGlucHV0KSwgbGVuZ3RoLCAwKSk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlw
dG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0Owor
ICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlcjsKKyAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZm
ZXJTaXplID0gc2l6ZW9mKGRpZ2VzdExlbmd0aEJ1ZmZlcik7CisKKyAgICBSRUxFQVNFX0FTU0VS
VChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIU0laRSwgcmVpbnRl
cnByZXRfY2FzdDxCWVRFKj4oJmRpZ2VzdExlbmd0aEJ1ZmZlciksICZkaWdlc3RMZW5ndGhCdWZm
ZXJTaXplLCAwKSk7CisgICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RMZW5ndGhCdWZmZXIpOworCisg
ICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5oSGFzaCwgSFBf
SEFTSFZBTCwgcmVzdWx0LmRhdGEoKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlciwgMCkpOworICAgIFJF
TEVBU0VfQVNTRVJUKHJlc3VsdC5zaXplKCkgPT0gZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwu
Y21ha2UKaW5kZXggZjNhZTg5Yi4uMWYwZTEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UK
QEAgLTY5LDggKzY5LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0
Zm9ybS9hdWRpby9lZmwvQXVkaW9CdXNFZmwuY3BwCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKLQogICAgIHBsYXRmb3JtL2VmbC9DdXJzb3JFZmwu
Y3BwCiAgICAgcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9E
cmFnSW1hZ2VFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IDYyNDIxNjIuLmIx
YzZlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC02OCw4ICs2OCw2IEBAIGxpc3Qo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1
c0dMaWIuY3BwCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlw
dC5jcHAKLQogICAgIHBsYXRmb3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCiAKICAg
ICBwbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlMS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKaW5kZXggNGM1MWUyYS4uN2RjMWU2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKQEAgLTMzMyw4ICszMzMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKICAgICBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2Ev
V2ViQ29yZU5TRXJyb3JFeHRyYXMubW0KIAotICAgIHBsYXRmb3JtL2NyeXB0by9jb21tb25jcnlw
dG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9t
YWMvSElER2FtZXBhZC5jcHAKICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJv
dmlkZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtl
IGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggOGQ3ZjUwOC4uYTRhOTkw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTczLDggKzczLDYgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldp
bi5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAotCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAogCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5IGIvU291cmNlL1dlYkNvcmUv
U2NyaXB0cy9FbmZvcmNlUEFMTGF5ZXJpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZTVlNmYzZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Njcmlw
dHMvRW5mb3JjZVBBTExheWVyaW5nLnB5CkBAIC0wLDAgKzEsNDggQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworCithcmNoaXZl
RmlsZSA9IHN5cy5hcmd2WzFdCitzb3VyY2VEaXJlY3RvcnkgPSBzeXMuYXJndlsyXQorCitzeW1i
b2xOYW1lc3BhY2VDb21tYW5kID0gIm5tIC1nVWogIiArIGFyY2hpdmVGaWxlICsgIiB8IGMrK2Zp
bHQgfCBncmVwIFwiXldlYkNvcmU6OlwiIHwgZ3JlcCAtdiBcIl5XZWJDb3JlOjpQQUw6OlwiIgor
CitydiA9IG9zLnN5c3RlbShzeW1ib2xOYW1lc3BhY2VDb21tYW5kICsgIiA+IC9kZXYvbnVsbCIp
CisKK2lmIHJ2ID09IDA6CisgICAgcHJpbnQoIlRoZSBmb2xsb3dpbmcgc3ltYm9scyBhcmUgZGVj
bGFyZWQgaW4gUEFMIGJ1dCBhcmUgaW4gdGhlIFdlYkNvcmUgbmFtZXNwYWNlICh3aGljaCBpcyBm
b3JiaWRkZW4gdG8gcHJlc2VydmUgbGF5ZXJpbmcpOiIpCisgICAgc3lzLnN0ZG91dC5mbHVzaCgp
CisgICAgb3Muc3lzdGVtKHN5bWJvbE5hbWVzcGFjZUNvbW1hbmQpCisgICAgc3lzLmV4aXQoMSkK
KworaW5jbHVkZVNlYXJjaENvbW1hbmQgPSAiZmluZCAiICsgc291cmNlRGlyZWN0b3J5ICsgIiBc
KCAtbmFtZSBcIiouY3BwXCIgLW9yIC1uYW1lIFwiKi5oXCIgLW9yIC1uYW1lIFwiKi5tXCIgLW9y
IC1uYW1lIFwiKi5tbVwiIFwpIC1leGVjIGdyZXAgLXFFIFwiXiMoaW5jbHVkZXxpbXBvcnQpIC5X
ZWJDb3JlL1wiIHt9IFw7IC1wcmludCIKKworcnYgPSBvcy5zeXN0ZW0oImV4aXQgJCgiICsgaW5j
bHVkZVNlYXJjaENvbW1hbmQgKyAiIHwgd2MgLWwgKSIpCisKK2lmIHJ2ICE9IDA6CisgICAgcHJp
bnQoIlRoZSBmb2xsb3dpbmcgZmlsZXMgaW4gUEFMIGluY2x1ZGUgaGVhZGVycyBmcm9tIFdlYkNv
cmUgKHdoaWNoIGlzIGZvcmJpZGRlbiB0byBwcmVzZXJ2ZSBsYXllcmluZyk6IikKKyAgICBzeXMu
c3Rkb3V0LmZsdXNoKCkKKyAgICBvcy5zeXN0ZW0oaW5jbHVkZVNlYXJjaENvbW1hbmQpCisgICAg
c3lzLmV4aXQoMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKaW5kZXggMGM4ZGZkZC4uYWRkZjg0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
MS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMS5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRP
KQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxwYWwvY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2
LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEExOjppZGVu
dGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVjdG9y
PHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9E
aWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIGF1dG8g
ZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMSk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2Fs
bGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBA
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3Nh
Z2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29y
aXRobVNIQTE6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7
CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBm
YWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3Bw
CmluZGV4IDZjYTFhZWUuLjYzNGM1YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcApAQCAtMjgsOSAr
MjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9E
aWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2Fn
ZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRp
b25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3
b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNy
eXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQp
OwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlv
bkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0Fs
Z29yaXRobVNIQTIyNDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNh
bGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRp
Z2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRv
IGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzIyNCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNh
bGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAppbmRleCA3
MzY2MGY1Li4wZWEwNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKQEAgLTI4LDkgKzI4LDkgQEAK
IAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0Lmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmll
ciBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0
b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3Rv
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJh
Y2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVl
KQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdl
c3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICBp
ZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7
CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1T
SEEyNTY6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYm
IGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdlc3Qg
PSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yNTYpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygp
OwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKaW5kZXggYzk3NzUyZC4u
ODhmMzEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBF
TkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRv
QWxnb3JpdGhtU0hBMzg0OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0
aG1TSEEzODQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAg
ICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMzg0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVh
dGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CiAgICAgaWYgKCFkaWdl
c3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAg
ICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0Ojpk
aWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpD
cnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCmluZGV4IDMzZTQ4M2QuLjAxMDNmMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTUxMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNV
QlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRo
bVNIQTUxMjo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBk
aWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzUxMik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOwogICAgIGlmICghZGlnZXN0KSB7CiAg
ICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KFZl
Y3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25P
cjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEs
IFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFj
aykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGln
ZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CiAgICAg
aWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVy
biB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMv
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IGY2YWI3YTIuLjBm
MGJmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC0zMCwyNiArMzAs
MjYgQEAKIAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNy
eXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQuaCIKLSNpbmNsdWRlICJDcnlwdG9E
aWdlc3QuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBh
bC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5l
IHN0ZDo6b3B0aW9uYWw8Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29y
aXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKK2lubGluZSBzdGQ6
Om9wdGlvbmFsPFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2VzdEFsZ29y
aXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKIHsKICAgICBzd2l0
Y2ggKGhhc2hGdW5jdGlvbikgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzE6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7Cisg
ICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsKICAgICBj
YXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6Ci0gICAgICAgIHJldHVybiBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyOjpTSEFfMjU2OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yNTY7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjU2OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzM4NDoK
LSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OworICAgICAg
ICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKICAgICBjYXNl
IENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6Ci0gICAgICAgIHJldHVybiBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBFeGNlcHRpb25P
cjxWZWN0b3I8dWludDhfdD4+IHNpZ25SU0FTU0FfUEtDUzFfdjFfNShDcnlwdG9BbGdvcml0aG1J
ZGVudGlmCiAgICAgYXV0byBjcnlwdG9EaWdlc3RBbGdvcml0aG0gPSBXZWJDb3JlOjpjcnlwdG9E
aWdlc3RBbGdvcml0aG0oaGFzaCk7CiAgICAgaWYgKCFjcnlwdG9EaWdlc3RBbGdvcml0aG0pCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotICAgIGF1dG8gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CisgICAg
YXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdv
cml0aG0pOwogICAgIGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3Bl
cmF0aW9uRXJyb3IgfTsKICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGgpOwpA
QCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gdmVyaWZ5UlNBU1NBX1BL
Q1MxX3YxXzUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLAogICAgIGF1dG8gY3J5cHRv
RGlnZXN0QWxnb3JpdGhtID0gV2ViQ29yZTo6Y3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2gpOwog
ICAgIGlmICghY3J5cHRvRGlnZXN0QWxnb3JpdGhtKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgT3BlcmF0aW9uRXJyb3IgfTsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlw
dG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKICAgICBpZiAoIWRpZ2Vz
dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAgICAgZGln
ZXN0LT5hZGRCeXRlcyhkYXRhLCBkYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGExNTdhODQuLmRmNzdjYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNDUs
NyArNDUsNiBAQAogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJDb29raWUu
aCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNp
bmNsdWRlICJET01FZGl0b3IuaCIKICNpbmNsdWRlICJET01QYXRjaFN1cHBvcnQuaCIKICNpbmNs
dWRlICJET01XaW5kb3cuaCIKQEAgLTk2LDYgKzk1LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3Iv
SWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgorI2luY2x1
ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
Q1N0cmluZy5oPgpAQCAtMTMxNiw3ICsxMzE2LDcgQEAgc3RhdGljIFN0cmluZyBjb21wdXRlQ29u
dGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFzaChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAg
IFRleHRFbmNvZGluZyBkb2N1bWVudEVuY29kaW5nID0gZWxlbWVudC5kb2N1bWVudCgpLnRleHRF
bmNvZGluZygpOwogICAgIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2RpbmdUb1VzZSA9IGRvY3Vt
ZW50RW5jb2RpbmcuaXNWYWxpZCgpID8gZG9jdW1lbnRFbmNvZGluZyA6IFVURjhFbmNvZGluZygp
OwogICAgIENTdHJpbmcgY29udGVudCA9IGVuY29kaW5nVG9Vc2UuZW5jb2RlKFRleHROb2RlVHJh
dmVyc2FsOjpjb250ZW50c0FzU3RyaW5nKGVsZW1lbnQpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxl
cyk7Ci0gICAgYXV0byBjcnlwdG9EaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6
OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTYpOwogICAgIGNyeXB0b0RpZ2VzdC0+YWRkQnl0ZXMoY29udGVudC5kYXRhKCksIGNvbnRlbnQu
bGVuZ3RoKCkpOwogICAgIFZlY3Rvcjx1aW50OF90PiBkaWdlc3QgPSBjcnlwdG9EaWdlc3QtPmNv
bXB1dGVIYXNoKCk7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInNoYTI1Ni0iLCBiYXNlNjRFbmNv
ZGUoZGlnZXN0LmRhdGEoKSwgZGlnZXN0LnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNTM2NzFlNS4uOTZmYTdh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5
SGFzaC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oIgogI2luY2x1
ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxpc3QuaCIKLSNpbmNsdWRlICJDcnlwdG9E
aWdlc3QuaCIKICNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgpAQCAtNTcsNiArNTYsNyBAQAogI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2Ny
aXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuaD4KKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0
Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KQEAgLTMwMSwxOCArMzAxLDE4IEBAIGJv
b2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxQb2xpY2llc0FsbG93KFZpb2xhdGVkRGlyZWN0
aXZlQ2FsbGJhY2smJiBjYWxsYmFjCiAgICAgcmV0dXJuIGlzQWxsb3dlZDsKIH0KIAotc3RhdGlj
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRlbnRT
ZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0gYWxnb3JpdGhtKQorc3RhdGljIFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oQ29udGVudFNlY3VyaXR5
UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0aG0pCiB7CiAgICAgc3dpdGNoIChhbGdvcml0aG0p
IHsKICAgICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8yNTY6
Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKKyAgICAg
ICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CiAgICAgY2Fz
ZSBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICBy
ZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVybiBQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ29udGVudFNl
Y3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAgIHJl
dHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBQcmVkaWNhdGU+CkBAIC0zMzMsNyArMzMzLDcgQEAgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpIYXNoSW5FbmZvcmNlZEFuZFJlcG9ydE9ubHlQb2xpY2llc1BhaXIgQ29udGVudFNl
Y3VyaXR5UG8KICAgICBib29sIGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyA9IGZhbHNlOwog
ICAgIGJvb2wgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMgPSBmYWxzZTsKICAgICBmb3Ig
KGF1dG8gYWxnb3JpdGhtIDogYWxnb3JpdGhtcykgewotICAgICAgICBhdXRvIGNyeXB0b0RpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRo
bSkpOworICAgICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVh
dGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7CiAgICAgICAgIGNyeXB0b0Rp
Z2VzdC0+YWRkQnl0ZXMoY29udGVudENTdHJpbmcuZGF0YSgpLCBjb250ZW50Q1N0cmluZy5sZW5n
dGgoKSk7CiAgICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2ggaGFzaCA9IHsgYWxnb3Jp
dGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKICAgICAgICAgaWYgKCFmb3VuZEhh
c2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgYWxsUG9saWNpZXNXaXRoRGlzcG9zaXRpb25BbGxvdyhD
b250ZW50U2VjdXJpdHlQb2xpY3k6OkRpc3Bvc2l0aW9uOjpFbmZvcmNlLCBzdGQ6OmZvcndhcmQ8
UHJlZGljYXRlPihwcmVkaWNhdGUpLCBoYXNoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NyeXB0by9DcnlwdG9EaWdlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFm
MDc1YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRv
RGlnZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBDcnlwdG9EaWdlc3RfaAotI2RlZmluZSBDcnlwdG9EaWdlc3RfaAotCi0jaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0OwotCi1jbGFzcyBD
cnlwdG9EaWdlc3QgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0RpZ2VzdCk7Ci1w
dWJsaWM6Ci0gICAgZW51bSBjbGFzcyBBbGdvcml0aG0gewotICAgICAgICBTSEFfMSwKLSAgICAg
ICAgU0hBXzIyNCwKLSAgICAgICAgU0hBXzI1NiwKLSAgICAgICAgU0hBXzM4NCwKLSAgICAgICAg
U0hBXzUxMiwKLSAgICB9OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0
PiBjcmVhdGUoQWxnb3JpdGhtKTsKLSAgICB+Q3J5cHRvRGlnZXN0KCk7Ci0KLSAgICB2b2lkIGFk
ZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKLSAgICBWZWN0b3I8dWlu
dDhfdD4gY29tcHV0ZUhhc2goKTsKLQotcHJpdmF0ZToKLSAgICBDcnlwdG9EaWdlc3QoKTsKLQot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBtX2NvbnRleHQ7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDcnlwdG9EaWdlc3RfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9Dcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRv
L2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBlM2ZmYzU2Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8Q29tbW9uQ3J5
cHRvL0NvbW1vbkNyeXB0by5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlw
dG9EaWdlc3RDb250ZXh0IHsKLSAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07
Ci0gICAgdm9pZCogY2NDb250ZXh0OwotfTsKLQotaW5saW5lIENDX1NIQTFfQ1RYKiB0b1NIQTFD
b250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRl
eHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDQ19TSEExX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1p
bmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyMjRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQq
IGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1
Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTI1Nl9DVFgqIHRv
U0hBMjU2Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VS
VChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250
ZXh0KTsKLX0KLWlubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTM4NENvbnRleHQoQ3J5cHRvRGln
ZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hB
NTEyX0NUWCogdG9TSEE1MTJDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17
Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzUxMik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250
ZXh0LT5jY0NvbnRleHQpOwotfQotCi1DcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAg
OiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2Vz
dDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci0gICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkg
ewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICBkZWxl
dGUgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgZGVsZXRlIHRv
U0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgZGVsZXRlIHRvU0hB
MjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgZGVsZXRlIHRvU0hBMzg0
Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgZGVsZXRlIHRvU0hBNTEyQ29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi0KLXN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
RGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQt
PmFsZ29yaXRobSA9IGFsZ29yaXRobTsKLQotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKLSAgICAgICAgQ0NfU0hBMV9D
VFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMV9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0
LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEExX0luaXQoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQ6IHsKLSAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBD
Q19TSEEyNTZfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29u
dGV4dDsKLSAgICAgICAgQ0NfU0hBMjI0X0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBk
aWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6
IHsKLSAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOwot
ICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAg
Q0NfU0hBMjU2X0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQot
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAgQ0Nf
U0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOwotICAgICAgICBkaWdlc3Qt
Pm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBMzg0X0luaXQo
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKLSAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29u
dGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2ND
b250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBNTEyX0luaXQoY29udGV4dCk7Ci0gICAg
ICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIH0KLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6
OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIHN3aXRj
aCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMToKLSAgICAgICAgQ0NfU0hBMV9VcGRhdGUodG9TSEExQ29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIENDX1NIQTIyNF9VcGRhdGUo
dG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAg
ICAgICAgQ0NfU0hBMjU2X1VwZGF0ZSh0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwg
aW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICBDQ19TSEEzODRfVXBkYXRlKHRvU0hBMzg0Q29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIENDX1NI
QTUxMl9VcGRhdGUodG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5n
dGgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRv
RGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAg
ICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzE6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMV9ESUdFU1Rf
TEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBMV9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250
ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTIy
NF9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBMjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCks
IHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgcmVzdWx0LnJl
c2l6ZShDQ19TSEEyNTZfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTI1Nl9GaW5hbChy
ZXN1bHQuZGF0YSgpLCB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAg
ICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMzg0X0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19T
SEEzODRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQo
KSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfNTEyOgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTUxMl9ESUdFU1RfTEVOR1RIKTsK
LSAgICAgICAgQ0NfU0hBNTEyX0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBNTEyQ29udGV4dCht
X2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEzYzhiZi4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0SG9tZQotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNs
dWRlIDxnY3J5cHQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGln
ZXN0Q29udGV4dCB7Ci0gICAgaW50IGFsZ29yaXRobTsKLSAgICBnY3J5X21kX2hkX3QgbWQ7Ci19
OwotCi1DcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENy
eXB0b0RpZ2VzdENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgp
Ci17Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBpbnQgZ2NyeXB0
QWxnb3JpdGhtOwotCi0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9N
RF9TSEExOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjI0OgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTIyNDsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoK
LSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEyNTY7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIGdj
cnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMzg0OwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICBnY3J5cHRBbGdvcml0
aG0gPSBHQ1JZX01EX1NIQTUxMjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRp
Z2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnY3J5cHRBbGdvcml0aG07Ci0KLSAgICBnY3J5
X21kX29wZW4oJmRpZ2VzdC0+bV9jb250ZXh0LT5tZCwgZ2NyeXB0QWxnb3JpdGhtLCAwKTsKLSAg
ICBpZiAoIWRpZ2VzdC0+bV9jb250ZXh0LT5tZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByZXR1cm4gZGlnZXN0OwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29u
c3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgZ2NyeV9tZF93cml0ZShtX2Nv
bnRleHQtPm1kLCBpbnB1dCwgbGVuZ3RoKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0Rp
Z2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIGludCBkaWdlc3RMZW4gPSBnY3J5X21kX2dldF9h
bGdvX2RsZW4obV9jb250ZXh0LT5hbGdvcml0aG0pOwotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1
bHQoZGlnZXN0TGVuKTsKLQotICAgIGdjcnlfbWRfZmluYWwobV9jb250ZXh0LT5tZCk7Ci0gICAg
bWVtY3B5KHJlc3VsdC5kYXRhKCksIGdjcnlfbWRfcmVhZChtX2NvbnRleHQtPm1kLCAwKSwgZGln
ZXN0TGVuKTsKLSAgICBnY3J5X21kX2Nsb3NlKG1fY29udGV4dC0+bWQpOwotCi0gICAgcmV0dXJu
IHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWE1ZDgxLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExT
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPGdu
dXRscy9nbnV0bHMuaD4KLSNpbmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIGdudXRsc19kaWdl
c3RfYWxnb3JpdGhtX3QgYWxnb3JpdGhtOwotICAgIGdudXRsc19oYXNoX2hkX3QgaGFzaDsKLX07
Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5
cHRvRGlnZXN0Q29udGV4dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkK
LXsKLSAgICBnbnV0bHNfaGFzaF9kZWluaXQobV9jb250ZXh0LT5oYXNoLCAwKTsKLX0KLQotc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQotewotICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGht
X3QgZ251dGxzQWxnb3JpdGhtOwotCi0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewotICAgICAgICBnbnV0bHNBbGdvcml0
aG0gPSBHTlVUTFNfRElHX1NIQTE7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRo
bSA9IEdOVVRMU19ESUdfU0hBMjI0OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogewotICAgICAgICBnbnV0bHNBbGdvcml0
aG0gPSBHTlVUTFNfRElHX1NIQTI1NjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAgZ251dGxzQWxnb3Jp
dGhtID0gR05VVExTX0RJR19TSEEzODQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAgIGdudXRsc0FsZ29y
aXRobSA9IEdOVVRMU19ESUdfU0hBNTEyOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQot
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdl
c3QpOwotICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnbnV0bHNBbGdvcml0aG07
Ci0KLSAgICBpbnQgcmV0ID0gZ251dGxzX2hhc2hfaW5pdCgmZGlnZXN0LT5tX2NvbnRleHQtPmhh
c2gsIGdudXRsc0FsZ29yaXRobSk7Ci0gICAgaWYgKHJldCAhPSBHTlVUTFNfRV9TVUNDRVNTKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBkaWdlc3Q7Ci19Ci0KLXZvaWQg
Q3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkK
LXsKLSAgICBnbnV0bHNfaGFzaChtX2NvbnRleHQtPmhhc2gsIGlucHV0LCBsZW5ndGgpOwotfQot
Ci1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBpbnQgZGlnZXN0TGVuID0gZ251dGxzX2hhc2hfZ2V0
X2xlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7Ci0gICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RMZW4p
OwotCi0gICAgZ251dGxzX2hhc2hfb3V0cHV0KG1fY29udGV4dC0+aGFzaCwgcmVzdWx0LmRhdGEo
KSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2Vz
dFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2Vz
dFdpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2Y2MxOTIuLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4u
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNsdWRlIDx3aW5j
cnlwdC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250
ZXh0IHsKLSAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07Ci0gICAgSENSWVBU
UFJPViBoQ29udGV4dCB7IDAgfTsKLSAgICBIQ1JZUFRIQVNIIGhIYXNoIHsgMCB9OwotfTsKLQot
Q3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9E
aWdlc3RDb250ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewot
ICAgIGlmIChIQ1JZUFRIQVNIIGhIYXNoID0gbV9jb250ZXh0LT5oSGFzaCkKLSAgICAgICAgQ3J5
cHREZXN0cm95SGFzaChoSGFzaCk7Ci0gICAgaWYgKEhDUllQVFBST1YgaENvbnRleHQgPSBtX2Nv
bnRleHQtPmhDb250ZXh0KQotICAgICAgICBDcnlwdFJlbGVhc2VDb250ZXh0KGhDb250ZXh0LCAw
KTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVh
dGUoQWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGln
ZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFs
Z29yaXRobSA9IGFsZ29yaXRobTsKLSAgICBpZiAoIUNyeXB0QWNxdWlyZUNvbnRleHQoJmRpZ2Vz
dC0+bV9jb250ZXh0LT5oQ29udGV4dCwgbnVsbHB0ciwgbnVsbHB0ciAvKiB1c2UgZGVmYXVsdCBw
cm92aWRlciAqLywgUFJPVl9SU0FfQUVTLCBDUllQVF9WRVJJRllDT05URVhUKSkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxzZTsKLSAgICBzd2l0Y2gg
KGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7
Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+
aENvbnRleHQsIENBTEdfU0hBMSwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjU2OiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1f
Y29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzI1NiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0
LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0OiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFz
aChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzM4NCwgMCwgMCwgJmRpZ2Vz
dC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENy
eXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzUxMiwg
MCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICB9Ci0gICAgaWYgKHN1Y2NlZWRlZCkKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZv
aWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGlmICghaW5wdXQgfHwgIWxlbmd0aCkK
LSAgICAgICAgcmV0dXJuOwotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0SGFzaERhdGEobV9jb250
ZXh0LT5oSGFzaCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBCWVRFKj4oaW5wdXQpLCBsZW5ndGgs
IDApKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQot
ewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVm
ZmVyOwotICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlclNpemUgPSBzaXplb2YoZGlnZXN0TGVu
Z3RoQnVmZmVyKTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFzaFBhcmFtKG1fY29u
dGV4dC0+aEhhc2gsIEhQX0hBU0hTSVpFLCByZWludGVycHJldF9jYXN0PEJZVEUqPigmZGlnZXN0
TGVuZ3RoQnVmZmVyKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlclNpemUsIDApKTsKLSAgICByZXN1bHQu
cmVzaXplKGRpZ2VzdExlbmd0aEJ1ZmZlcik7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEdl
dEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIVkFMLCByZXN1bHQuZGF0YSgpLCAm
ZGlnZXN0TGVuZ3RoQnVmZmVyLCAwKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LnNpemUo
KSA9PSBkaWdlc3RMZW5ndGhCdWZmZXIpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggODUyYjliOC4uMjZk
YjdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Nv
dXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRl
ICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5o
IgogI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAt
MzgsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVk
ZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2
NC5oPgpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIWNlcnRpZmljYXRl
RGF0YSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
KTsKKyAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgICAgICBkaWdlc3QtPmFkZEJ5
dGVzKGNlcnRpZmljYXRlRGF0YS0+ZGF0YSwgY2VydGlmaWNhdGVEYXRhLT5sZW4pOwogCiAgICAg
ICAgIGF1dG8gaGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9jbWFrZS9XZWJLaXRGUy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZQppbmRl
eCAyOWEwOTY5Li41MTMwZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RlMuY21h
a2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlCkBAIC0xMCw2ICsxMCw5IEBAIGVu
ZGlmICgpCiBpZiAoTk9UIFdFQkNPUkVfRElSKQogICAgIHNldChXRUJDT1JFX0RJUiAiJHtDTUFL
RV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViQ29yZSIpCiBlbmRpZiAoKQoraWYgKE5PVCBQQUxfRElS
KQorICAgIHNldChQQUxfRElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJDb3JlL1BB
TCIpCitlbmRpZiAoKQogaWYgKE5PVCBXRUJLSVRfRElSKQogICAgIHNldChXRUJLSVRfRElSICIk
e0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJLaXQiKQogZW5kaWYgKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299327</attachid>
            <date>2017-01-19 23:41:16 -0800</date>
            <delta_ts>2017-01-19 23:43:01 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-143358-20170119233924.patch</filename>
            <type>text/plain</type>
            <size>90232</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQwZTFlNjFkMTIzNWZm
ZDcxZmRlMGNlMGQyYWI5Y2JmMDM2MmI5Mi4uNjE2NzMyNmFmNzgxNmE3YjI5YWVkYjc0OWIzOTI2
MmE0NzI0OTY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE3LTAxLTE5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNv
cmUueGNjb25maWc6CisgICAgICAgICogUEFML0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6
IEFkZGVkLgorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25m
aWc6IEFkZGVkLgorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIFBBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQu
CisgICAgICAgICogUEFML2NvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFsL0NNYWtl
TGlzdHMudHh0OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlOiBB
ZGRlZC4KKyAgICAgICAgKiBQQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlOiBBZGRlZC4KKyAgICAg
ICAgKiBQQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFs
L1BsYXRmb3JtV2luLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFsL2NyeXB0by9Dcnlw
dG9EaWdlc3QuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9D
cnlwdG9EaWdlc3QuaC4KKyAgICAgICAgKiBQQUwvcGFsL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5
cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcC4K
KyAgICAgICAgKiBQQUwvcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRv
RGlnZXN0R0NyeXB0LmNwcC4KKyAgICAgICAgKiBQQUwvcGFsL2NyeXB0by9nbnV0bHMvQ3J5cHRv
RGlnZXN0R251VExTLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Ny
eXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcC4KKyAgICAgICAgKiBQQUwvcGFsL2Ny
eXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcC4KKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1TSEEyMjQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjU2LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTI1
Njo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEzODQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdl
c3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdCk6Cisg
ICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOgorICAgICAgICAo
V2ViQ29yZTo6c2lnblJTQVNTQV9QS0NTMV92MV81KToKKyAgICAgICAgKFdlYkNvcmU6OnZlcmlm
eVJTQVNTQV9QS0NTMV92MV81KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUNvbnRlbnRTZWN1cml0eVBvbGljeVNI
QTI1Nkhhc2gpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2ll
cyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIb3N0VExTQ2VydGlmaWNhdGVTZXQ6OmNvbXB1dGVDZXJ0
aWZpY2F0ZUhhc2gpOgorCiAyMDE3LTAxLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgaXRlcmFibGU8PiBzaG91bGQgYmUgZW5hYmxlZCBvbiBXSzEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxYjhhMmRjYjUwNGZiNTU2YWJjNWY1ODNiNzZiZTM4ZDkyZjBmZGYxLi4xNWZkZjIyNGE4OTY2
YmUxMWRjZjYzZTJmYThmNTg3YTAzZTcyNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0NNYWtlTGlzdHMudHh0CkBAIC00Niw2ICs0Niw3IEBAIFdFQktJ
VF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV1RGICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFH
U30pCiBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKEphdmFTY3JpcHRDb3JlICR7QURE
SVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAKIGlmIChFTkFCTEVfV0VCQ09SRSkKKyAgICBXRUJL
SVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFBBTCAke0FERElUSU9OQUxfQ09NUElMRVJfRkxB
R1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29yZVRlc3RTdXBw
b3J0ICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAgICAgV0VCS0lUX1NFVF9FWFRSQV9D
T01QSUxFUl9GTEFHUyhXZWJDb3JlICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAgICAg
V0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhXZWJDb3JlRGVyaXZlZFNvdXJjZXMgJHtB
RERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjUwNDNj
NTA3NTZhNDRmODQ2YjNjNjVjYjJmYTU1NjY0MDRjMTUzNC4uNjhhNTk3MzljZjFkODU4MTY5M2E4
YzE0N2QzODViOWM2MjdhZmNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEsNiArMSw3IEBA
CiBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44LjEyKQogaW5jbHVkZShXZWJLaXRD
b21tb24pCiBzZXRfcHJvcGVydHkoRElSRUNUT1JZIC4gUFJPUEVSVFkgRk9MREVSICJXZWJDb3Jl
IikKK2FkZF9zdWJkaXJlY3RvcnkoUEFML3BhbCkKIAogc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJF
Q1RPUklFUwogICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpAQCAtMjk0NSw2ICsyOTQ2LDcgQEAg
c2V0KFdlYkNvcmVfUExVR19JTlNfUkVTT1VSQ0VTCiBzZXQoV2ViQ29yZV9MSUJSQVJJRVMKICAg
ICAke0lDVV9MSUJSQVJJRVN9CiAgICAgSmF2YVNjcmlwdENvcmUke0RFQlVHX1NVRkZJWH0KKyAg
ICBQQUwke0RFQlVHX1NVRkZJWH0KICkKIAogaWYgKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01F
RElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcK
aW5kZXggNmIxOWFjZjY0NWNkODk5NmQ2MDNiNGEwMDE0NGVhYjg2ZGM4YjQzNy4uZDViZjI5ODU2
ZTA3ZTMxMjY1OTdiNmU3MzQxMTA5NDA5NGQwM2Y2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
b25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCkBAIC00Niw3ICs0Niw3IEBAIE9USEVSX0NQ
TFVTUExVU0ZMQUdTID0gJChPVEhFUl9DRkxBR1MpOwogCiBXRUJLSVRBRERJVElPTlNfSEVBREVS
X1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS9X
ZWJLaXRBZGRpdGlvbnMgJChTREtST09UKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlv
bnM7CiAKLUhFQURFUl9TRUFSQ0hfUEFUSFMgPSBGb3J3YXJkaW5nSGVhZGVycyBpY3UgL3Vzci9p
bmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2Nh
bC9pbmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKEhFQURF
Ul9TRUFSQ0hfUEFUSFMpOworSEVBREVSX1NFQVJDSF9QQVRIUyA9IFBBTCBGb3J3YXJkaW5nSGVh
ZGVycyBpY3UgL3Vzci9pbmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNU
U19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNI
X1BBVEhTKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBs
aXN0OwogSU5TVEFMTF9QQVRIID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdv
cmtzOwogSU5TVEFMTF9QQVRIW3Nkaz1tYWNvc3gqXSA9ICQoV0VCQ09SRV9GUkFNRVdPUktTX0RJ
Uik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvQmFzZS54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmln
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ0ZTI1MmJjY2NkZDk1MDUzNDE5MWQ5YWRkNTc0MGJhZjllNDdjYTIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvQmFzZS54
Y2NvbmZpZwpAQCAtMCwwICsxLDI0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisv
LyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8v
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisKKyNpbmNsdWRlICIuLi8uLi9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2Uu
eGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJiMDhiZTBlZTEyZTE1NmJlZjg0NDBjMTYzNzE0M2EwMzQ1
N2MzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9u
cy9EZWJ1Z1JlbGVhc2UueGNjb25maWcKQEAgLTAsMCArMSwyNCBAQAorLy8gQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
Ky8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVkZSAiLi4vLi4vQ29uZmlndXJhdGlvbnMvRGVi
dWdSZWxlYXNlLnhjY29uZmlnIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NvbmZp
Z3VyYXRpb25zL1BBTC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9u
cy9QQUwueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE1MmMxMWRkYjM0MGM1YmQ1M2NlMzYyZjUzMzQ3
NmRlOWRkYTQ5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1
cmF0aW9ucy9QQUwueGNjb25maWcKQEAgLTAsMCArMSwzOCBAQAorLy8gQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8v
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
Ky8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVkZSAiLi4vLi4vQ29uZmlndXJhdGlvbnMvV2ViQ29y
ZS54Y2NvbmZpZyIKKworSU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfJChDT05GSUdVUkFU
SU9OKSk7CitJTlNUQUxMX1BBVEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwvbGliOworCitTS0lQ
X0lOU1RBTEwgPSAkKFNLSVBfSU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFMTCkpOworU0tJUF9J
TlNUQUxMXyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9OTyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9ZRVMg
PSBOTzsKKworUFJPRFVDVF9OQU1FID0gUEFMOworRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CitF
WFBPUlRFRF9TWU1CT0xTX0ZJTEUgPSA7CisKK0dDQ19QUkVGSVhfSEVBREVSID0gOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk3M2ZkOGIyYTExMzA3NGZiN2Q3MGMwMzBiZTA2ODUzMzZkODM0YjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTAsMCArMSwyNDMgQEAKKy8vICEkKlVURjgqJCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7
CisJY2xhc3NlcyA9IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA0NjsKKwlvYmplY3RzID0gewor
CisvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkxQzA5RDA1MzFFMzFDNDQxMDA3
MjVGMTggLyogQ3J5cHRvRGlnZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzA5RDA1MjFFMzFDNDQxMDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Lmgg
Ki87IH07CisJCTFDMDlEMDU2MUUzMUM0NjUwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25D
cnlwdG8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUMwOUQwNTUxRTMxQzQ2NTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAg
Ki87IH07CisJCTFDMDlEMDU4MUUzMUM1N0UwMDcyNUYxOCAvKiBjb25maWcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDlEMDU3MUUzMUM1N0UwMDcy
NUYxOCAvKiBjb25maWcuaCAqLzsgfTsKKy8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJMUMwOUQwM0QxRTMxQzMy
ODAwNzI1RjE4IC8qIGxpYlBBTC5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJQ
QUwuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMUMwOUQwNTIxRTMx
QzQ0MTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDcnlwdG9EaWdlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMw
OUQwNTUxRTMxQzQ2NTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDcnlwdG9EaWdlc3RDb21tb25Dcnlw
dG8uY3BwOyBwYXRoID0gY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMDlEMDU3MUUzMUM1N0UwMDcyNUYxOCAv
KiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMDlEMDVEMUUzMUM3N0EwMDcyNUYxOCAvKiBQ
QUwueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gUEFMLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzA5RDA2MjFFMzFFQzI4MDA3MjVGMTgg
LyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMw
OUQwNjMxRTMxRUMzMTAwNzI1RjE4IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
Ky8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzA5RDAzQTFFMzFDMzI4MDA3MjVGMTggLyog
RnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlv
biAqLworCQkxQzA5RDAzNDFFMzFDMzI4MDA3MjVGMTggPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDVDMUUzMUM3MzMwMDcyNUYxOCAvKiBDb25maWd1
cmF0aW9ucyAqLywKKwkJCQkxQzA5RDA1NzFFMzFDNTdFMDA3MjVGMTggLyogY29uZmlnLmggKi8s
CisJCQkJMUMwOUQwM0YxRTMxQzMyODAwNzI1RjE4IC8qIHBhbCAqLywKKwkJCQkxQzA5RDAzRTFF
MzFDMzI4MDA3MjVGMTggLyogUHJvZHVjdHMgKi8sCisJCQkpOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKKwkJMUMwOUQwM0UxRTMxQzMyODAwNzI1RjE4IC8qIFByb2R1Y3RzICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDAzRDFF
MzFDMzI4MDA3MjVGMTggLyogbGliUEFMLmEgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1Y3Rz
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUMwOUQwM0YxRTMxQzMyODAw
NzI1RjE4IC8qIHBhbCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJMUMwOUQwNTExRTMxQzQxMjAwNzI1RjE4IC8qIGNyeXB0byAqLywKKwkJCSk7CisJCQlw
YXRoID0gcGFsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUMwOUQwNTEx
RTMxQzQxMjAwNzI1RjE4IC8qIGNyeXB0byAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMUMwOUQwNTQxRTMxQzQ1MjAwNzI1RjE4IC8qIGNvbW1vbmNyeXB0
byAqLywKKwkJCQkxQzA5RDA1MjFFMzFDNDQxMDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0LmggKi8s
CisJCQkpOworCQkJcGF0aCA9IGNyeXB0bzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCTFDMDlEMDU0MUUzMUM0NTIwMDcyNUYxOCAvKiBjb21tb25jcnlwdG8gKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDU1MUUzMUM0NjUw
MDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovLAorCQkJKTsKKwkJCW5h
bWUgPSBjb21tb25jcnlwdG87CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkx
QzA5RDA1QzFFMzFDNzMzMDA3MjVGMTggLyogQ29uZmlndXJhdGlvbnMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDVEMUUzMUM3N0EwMDcyNUYx
OCAvKiBQQUwueGNjb25maWcgKi8sCisJCQkJMUMwOUQwNjIxRTMxRUMyODAwNzI1RjE4IC8qIERl
YnVnUmVsZWFzZS54Y2NvbmZpZyAqLywKKwkJCQkxQzA5RDA2MzFFMzFFQzMxMDA3MjVGMTggLyog
QmFzZS54Y2NvbmZpZyAqLywKKwkJCSk7CisJCQlwYXRoID0gQ29uZmlndXJhdGlvbnM7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8K
KworLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzA5RDAzQjFF
MzFDMzI4MDA3MjVGMTggLyogSGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWEhlYWRlcnNCdWls
ZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAor
CQkJCTFDMDlEMDU4MUUzMUM1N0UwMDcyNUYxOCAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAor
CQkJCTFDMDlEMDUzMUUzMUM0NDEwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJz
ICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwor
CQl9OworLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4g
UEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMUMwOUQwM0MxRTMxQzMyODAwNzI1RjE4IC8q
IFBBTCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJh
dGlvbkxpc3QgPSAxQzA5RDA0ODFFMzFDMzI4MDA3MjVGMTggLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgK
KwkJCQkxQzA5RDAzOTFFMzFDMzI4MDA3MjVGMTggLyogU291cmNlcyAqLywKKwkJCQkxQzA5RDAz
QTFFMzFDMzI4MDA3MjVGMTggLyogRnJhbWV3b3JrcyAqLywKKwkJCQkxQzA5RDAzQjFFMzFDMzI4
MDA3MjVGMTggLyogSGVhZGVycyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsK
KwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gUEFMOworCQkJcHJvZHVjdE5h
bWUgPSBQQUw7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMUMwOUQwM0QxRTMxQzMyODAwNzI1RjE4
IC8qIGxpYlBBTC5hICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlw
ZS5saWJyYXJ5LnN0YXRpYyI7CisJCX07CisvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24g
Ki8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJCTFDMDlEMDM1MUUzMUMzMjgw
MDcyNUYxOCAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJ
CQlhdHRyaWJ1dGVzID0geworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAwODMwOworCQkJCVRhcmdl
dEF0dHJpYnV0ZXMgPSB7CisJCQkJCTFDMDlEMDNDMUUzMUMzMjgwMDcyNUYxOCA9IHsKKwkJCQkJ
CUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDguMzsKKwkJCQkJCVByb3Zpc2lvbmluZ1N0eWxlID0g
QXV0b21hdGljOworCQkJCQl9OworCQkJCX07CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9u
TGlzdCA9IDFDMDlEMDM4MUUzMUMzMjgwMDcyNUYxOCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWFByb2plY3QgIlBBTCIgKi87CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJY
Y29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOworCQkJaGFzU2Nhbm5l
ZEZvckVuY29kaW5ncyA9IDE7CisJCQlrbm93blJlZ2lvbnMgPSAoCisJCQkJRW5nbGlzaCwKKwkJ
CQlKYXBhbmVzZSwKKwkJCQlGcmVuY2gsCisJCQkJR2VybWFuLAorCQkJCVNwYW5pc2gsCisJCQkJ
RHV0Y2gsCisJCQkJSXRhbGlhbiwKKwkJCSk7CisJCQltYWluR3JvdXAgPSAxQzA5RDAzNDFFMzFD
MzI4MDA3MjVGMTg7CisJCQlwcm9kdWN0UmVmR3JvdXAgPSAxQzA5RDAzRTFFMzFDMzI4MDA3MjVG
MTggLyogUHJvZHVjdHMgKi87CisJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJv
b3QgPSAiIjsKKwkJCXRhcmdldHMgPSAoCisJCQkJMUMwOUQwM0MxRTMxQzMyODAwNzI1RjE4IC8q
IFBBTCAqLywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMUMwOUQwMzkxRTMxQzMy
ODAwNzI1RjE4IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkx
QzA5RDA1NjFFMzFDNDY1MDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBp
biBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQl9OworLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwor
LyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkxQzA5RDA0NjFFMzFD
MzI4MDA3MjVGMTggLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNjIxRTMxRUMyODAwNzI1
RjE4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJREVBRF9DT0RFX1NUUklQUElORyA9ICIkKERFQURfQ09ERV9TVFJJUFBJTkdfZGVidWcpIjsK
KwkJCQlERUJVR19ERUZJTkVTID0gIiQoREVCVUdfREVGSU5FU19kZWJ1ZykiOworCQkJCUdDQ19P
UFRJTUlaQVRJT05fTEVWRUwgPSAiJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX2RlYnVnKSI7CisJ
CQkJU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgPSAiJChTVFJJUF9JTlNUQUxMRURfUFJPRFVDVF9k
ZWJ1ZykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMUMwOUQwNDcxRTMxQzMy
ODAwNzI1RjE4IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNjIxRTMxRUMyODAwNzI1
RjE4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgPSBOTzsKKwkJCX07CisJCQluYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKwkJMUMwOUQwNDkxRTMxQzMyODAwNzI1RjE4IC8qIERlYnVnICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5j
ZSA9IDFDMDlEMDVEMUUzMUM3N0EwMDcyNUYxOCAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMUMwOUQwNEEx
RTMxQzMyODAwNzI1RjE4IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNUQxRTMxQzc3
QTAwNzI1RjE4IC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9
OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTFDMDlEMDVBMUUzMUM2RjAwMDcyNUYxOCAv
KiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDMDlEMDYzMUUzMUVDMzEwMDcyNUYxOCAvKiBC
YXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0g
UHJvZHVjdGlvbjsKKwkJfTsKKwkJMUMwOUQwNUIxRTMxQzZGMDAwNzI1RjE4IC8qIFByb2R1Y3Rp
b24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNUQxRTMxQzc3QTAwNzI1RjE4IC8qIFBBTC54Y2NvbmZp
ZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247
CisJCX07CisvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdp
biBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMUMwOUQwMzgxRTMxQzMyODAwNzI1
RjE4IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUEFMIiAqLyA9
IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25z
ID0gKAorCQkJCTFDMDlEMDQ2MUUzMUMzMjgwMDcyNUYxOCAvKiBEZWJ1ZyAqLywKKwkJCQkxQzA5
RDA0NzFFMzFDMzI4MDA3MjVGMTggLyogUmVsZWFzZSAqLywKKwkJCQkxQzA5RDA1QTFFMzFDNkYw
MDA3MjVGMTggLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9u
OworCQl9OworCQkxQzA5RDA0ODFFMzFDMzI4MDA3MjVGMTggLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxQzA5RDA0OTFF
MzFDMzI4MDA3MjVGMTggLyogRGVidWcgKi8sCisJCQkJMUMwOUQwNEExRTMxQzMyODAwNzI1RjE4
IC8qIFJlbGVhc2UgKi8sCisJCQkJMUMwOUQwNUIxRTMxQzZGMDAwNzI1RjE4IC8qIFByb2R1Y3Rp
b24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKy8qIEVuZCBYQ0Nv
bmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJvb3RPYmplY3QgPSAxQzA5RDAzNTFF
MzFDMzI4MDA3MjVGMTggLyogUHJvamVjdCBvYmplY3QgKi87Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvY29uZmlnLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTQ4OGM4MGFkZjZjMTFmNmMzMDgyMDNhOGU3MmVhNDgzNjg2ZjNmNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmIGRlZmluZWQoSEFWRV9DT05GSUdfSCkg
JiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCisjaW5jbHVk
ZSAiY21ha2Vjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
KyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CisKKyNpZmRlZiBfX0FQUExFX18KKyNkZWZp
bmUgSEFWRV9GVU5DX1VTTEVFUCAxCisjZW5kaWYgLyogX19BUFBMRV9fICovCisKKyNpZiBPUyhX
SU5ET1dTKQorCisjaWZuZGVmIF9XSU4zMl9XSU5OVAorI2RlZmluZSBfV0lOMzJfV0lOTlQgMHg2
MDEKKyNlbmRpZgorCisjaWZuZGVmIFdJTlZFUgorI2RlZmluZSBXSU5WRVIgMHgwNjAxCisjZW5k
aWYKKworI2VuZGlmIC8qIE9TKFdJTkRPV1MpICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisv
LyBUaGVzZSB1bmRlZnMgbWF0Y2ggdXAgd2l0aCBkZWZpbmVzIGluIFdlYkNvcmVQcmVmaXguaCBm
b3IgTWFjIE9TIFguCisvLyBIZWxwcyB1cyBjYXRjaCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVs
ZXRlIGJ5IGFjY2lkZW50IGluIGNvZGUgYW5kIGRvZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgor
I3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisK
KyNpbmNsdWRlIDxjaXNvNjQ2PgorCisjZW5kaWYKKworI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NU
eXBlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmY2
MzA0MDUyODFjMDNmZjkwMGYzMGU5Yjc4MDRiOTM0YjBmYTYwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDQzIEBACitz
ZXQoUEFMX0hFQURFUlMKKyAgICBjcnlwdG8vQ3J5cHRvRGlnZXN0LmgKKykKKworc2V0KFBBTF9T
T1VSQ0VTCispCisKK3NldChQQUxfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICIke1BBTF9ESVJ9
IgorICAgICIke1BBTF9ESVJ9L3BhbCIKKyAgICAiJHtQQUxfRElSfS9wYWwvY3J5cHRvIgorKQor
CitzZXQoUEFMX0xJQlJBUklFUworICAgIFdURgorKQorCitXRUJLSVRfSU5DTFVERV9DT05GSUdf
RklMRVNfSUZfRVhJU1RTKCkKKworV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke1BBTF9TT1VSQ0VT
fSkKK1dFQktJVF9GUkFNRVdPUksoUEFMKQorCitpZiAoVU5JWCkKKyAgICBhZGRfY3VzdG9tX2Nv
bW1hbmQoCisgICAgICAgIFRBUkdFVCBQQUwKKyAgICAgICAgUE9TVF9CVUlMRAorICAgICAgICBD
T01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L1NjcmlwdHMvRW5mb3Jj
ZVBBTExheWVyaW5nLnB5ICQ8VEFSR0VUX0ZJTEU6UEFMPiAke1BBTF9ESVJ9CisgICAgICAgIFZF
UkJBVElNKQorZW5kaWYgKCkKKworaWYgKE1TVkMpCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAor
ICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBSRV9CVUlMRAorICAgICAgICBDT01NQU5EICR7
UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVF9MSUJSQVJJRVNfRElSfS90b29scy9zY3JpcHRzL2F1
dG8tdmVyc2lvbi5wbCAke0RFUklWRURfU09VUkNFU19ESVJ9CisgICAgICAgIFZFUkJBVElNKQor
CisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBP
U1RfQlVJTEQKKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVRfTElC
UkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0cy92ZXJzaW9uLXN0YW1wLnBsICR7REVSSVZFRF9TT1VS
Q0VTX0RJUn0gJDxUQVJHRVRfRklMRTpQQUw+CisgICAgICAgIFZFUkJBVElNKQorZW5kaWYgKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1FZmwuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NWMx
ODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmExYTE1ZmM2M2IKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAor
bGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdD
cnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1H
VEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc3NWMxODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmExYTE1ZmM2M2IKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0w
LDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0Ny
eXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFj
LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJmOTY4ZWM0ZDk4ZTQxZjczNzI5MGY4ZjRmMjhmNzRmNmEyZTYx
ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFj
LmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlw
dG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKKykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNjkxOWY3NmYxMDhm
NzJlYzg4N2ExYjczNTA3ODE3MjJhMjU4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBF
TkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKKykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTg4ZTEyNzdjNDk3OWNiMDRiMDAxZTM1M2U4YzhlOGUyOTkzYjMyZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCkBAIC0wLDAg
KzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFBB
TCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0OworCitjbGFzcyBDcnlwdG9EaWdlc3Qg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0RpZ2VzdCk7CitwdWJsaWM6CisgICAg
ZW51bSBjbGFzcyBBbGdvcml0aG0geworICAgICAgICBTSEFfMSwKKyAgICAgICAgU0hBXzIyNCwK
KyAgICAgICAgU0hBXzI1NiwKKyAgICAgICAgU0hBXzM4NCwKKyAgICAgICAgU0hBXzUxMiwKKyAg
ICB9OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBjcmVhdGUoQWxn
b3JpdGhtKTsKKyAgICB+Q3J5cHRvRGlnZXN0KCk7CisKKyAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0
IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBWZWN0b3I8dWludDhfdD4gY29tcHV0
ZUhhc2goKTsKKworcHJpdmF0ZToKKyAgICBDcnlwdG9EaWdlc3QoKTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBtX2NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2NvbW1v
bmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODZhMjQxYTRlMjM1ODZhMWMxM2FkOTJhOWU5MTE0ZWI0MmZkY2FjMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0by9D
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5j
bHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3BhY2UgUEFMIHsKKwor
c3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
IGFsZ29yaXRobTsKKyAgICB2b2lkKiBjY0NvbnRleHQ7Cit9OworCitpbmxpbmUgQ0NfU0hBMV9D
VFgqIHRvU0hBMUNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBB
U1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTFfQ1RYKj4oY29udGV4dC0+Y2NDb250
ZXh0KTsKK30KK2lubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTIyNENvbnRleHQoQ3J5cHRvRGln
ZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hB
MjU2X0NUWCogdG9TSEEyNTZDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7
CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1Nik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250
ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTUxMl9DVFgqIHRvU0hBMzg0Q29udGV4
dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5h
bGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lu
bGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTUxMkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCog
Y29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEy
X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGln
ZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKwor
Q3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBzd2l0Y2ggKG1fY29udGV4dC0+
YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Cisg
ICAgICAgIGRlbGV0ZSB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAg
ICBkZWxldGUgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAgICBk
ZWxldGUgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgorICAgICAgICBkZWxl
dGUgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgorICAgICAgICBkZWxldGUg
dG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
Cit9CisKKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVh
dGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBkaWdlc3Qt
Pm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3JpdGhtOworCisgICAgc3dpdGNoIChhbGdvcml0
aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAgICAg
ICBDQ19TSEExX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEExX0NUWDsKKyAgICAgICAgZGlnZXN0
LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTFfSW5pdChj
b250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDogeworICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250
ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0Nv
bnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEEyMjRfSW5pdChjb250ZXh0KTsKKyAgICAg
ICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1NjogeworICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NI
QTI1Nl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0
OworICAgICAgICBDQ19TSEEyNTZfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2Vz
dDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogewor
ICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7CisgICAg
ICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19T
SEEzODRfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogeworICAgICAgICBDQ19TSEE1
MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9j
b250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEE1MTJfSW5pdChjb250
ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgfQorfQorCit2b2lkIENy
eXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCit7
CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBDQ19TSEExX1VwZGF0ZSh0b1NIQTFDb250
ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAgQ0NfU0hB
MjI0X1VwZGF0ZSh0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0
aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjU2OgorICAgICAgICBDQ19TSEEyNTZfVXBkYXRlKHRvU0hBMjU2Q29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIENDX1NIQTM4NF9VcGRhdGUo
dG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAg
ICAgICAgQ0NfU0hBNTEyX1VwZGF0ZSh0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwg
aW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK1ZlY3Rvcjx1aW50
OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4g
cmVzdWx0OworICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19T
SEExX0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEExX0ZpbmFsKHJlc3VsdC5kYXRhKCks
IHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIHJlc3VsdC5yZXNp
emUoQ0NfU0hBMjI0X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEEyMjRfRmluYWwocmVz
dWx0LmRhdGEoKSwgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAg
ICByZXN1bHQucmVzaXplKENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hB
MjU2X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzM4NDoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEzODRfRElHRVNUX0xFTkdUSCk7Cisg
ICAgICAgIENDX1NIQTM4NF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTM4NENvbnRleHQobV9j
b250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBNTEyX0RJR0VT
VF9MRU5HVEgpOworICAgICAgICBDQ19TSEE1MTJfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEE1
MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgUEFMCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBhNzhhZTBjM2I4ZDcwMDg2MDc3MzM1YWUzZTMyZWZhYTkxMzk2ZDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQv
Q3J5cHRvRGlnZXN0R0NyeXB0LmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0SG9tZQor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0Lmgi
CisKKyNpbmNsdWRlIDxnY3J5cHQuaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlw
dG9EaWdlc3RDb250ZXh0IHsKKyAgICBpbnQgYWxnb3JpdGhtOworICAgIGdjcnlfbWRfaGRfdCBt
ZDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChu
ZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGln
ZXN0KCkKK3sKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIGludCBn
Y3J5cHRBbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBH
Q1JZX01EX1NIQTE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQ6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjI0
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjU2OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTI1NjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAg
ICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEzODQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIGdjcnlwdEFs
Z29yaXRobSA9IEdDUllfTURfU0hBNTEyOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Cisg
ICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdjcnlwdEFsZ29yaXRobTsKKworICAg
IGdjcnlfbWRfb3BlbigmZGlnZXN0LT5tX2NvbnRleHQtPm1kLCBnY3J5cHRBbGdvcml0aG0sIDAp
OworICAgIGlmICghZGlnZXN0LT5tX2NvbnRleHQtPm1kKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBkaWdlc3Q7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRl
cyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBnY3J5X21kX3dyaXRl
KG1fY29udGV4dC0+bWQsIGlucHV0LCBsZW5ndGgpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5
cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgaW50IGRpZ2VzdExlbiA9IGdjcnlfbWRf
Z2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHJlc3VsdChkaWdlc3RMZW4pOworCisgICAgZ2NyeV9tZF9maW5hbChtX2NvbnRleHQtPm1kKTsK
KyAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSwgZ2NyeV9tZF9yZWFkKG1fY29udGV4dC0+bWQsIDAp
LCBkaWdlc3RMZW4pOworICAgIGdjcnlfbWRfY2xvc2UobV9jb250ZXh0LT5tZCk7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTU2YjhmYmJkYTBmMDkwOTMxOTkxZjZiMDE2NjZjOWIzNTlhYzA4Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2dudXRscy9D
cnlwdG9EaWdlc3RHbnVUTFMuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKKworI2luY2x1ZGUg
PGdudXRscy9nbnV0bHMuaD4KKyNpbmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+CisKK25hbWVzcGFj
ZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgZ251dGxzX2RpZ2Vz
dF9hbGdvcml0aG1fdCBhbGdvcml0aG07CisgICAgZ251dGxzX2hhc2hfaGRfdCBoYXNoOworfTsK
KworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlw
dG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQor
eworICAgIGdudXRsc19oYXNoX2RlaW5pdChtX2NvbnRleHQtPmhhc2gsIDApOworfQorCitzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1f
dCBnbnV0bHNBbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRo
bSA9IEdOVVRMU19ESUdfU0hBMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGht
ID0gR05VVExTX0RJR19TSEEyMjQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRo
bSA9IEdOVVRMU19ESUdfU0hBMjU2OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAgICBnbnV0bHNBbGdvcml0
aG0gPSBHTlVUTFNfRElHX1NIQTM4NDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKKyAgICAgICAgZ251dGxzQWxnb3Jp
dGhtID0gR05VVExTX0RJR19TSEE1MTI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2Vz
dCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdudXRsc0FsZ29yaXRobTsK
KworICAgIGludCByZXQgPSBnbnV0bHNfaGFzaF9pbml0KCZkaWdlc3QtPm1fY29udGV4dC0+aGFz
aCwgZ251dGxzQWxnb3JpdGhtKTsKKyAgICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRpZ2VzdDsKK30KKwordm9pZCBD
cnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQor
eworICAgIGdudXRsc19oYXNoKG1fY29udGV4dC0+aGFzaCwgaW5wdXQsIGxlbmd0aCk7Cit9CisK
K1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0
b3I8dWludDhfdD4gcmVzdWx0OworICAgIGludCBkaWdlc3RMZW4gPSBnbnV0bHNfaGFzaF9nZXRf
bGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKKyAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbik7
CisKKyAgICBnbnV0bHNfaGFzaF9vdXRwdXQobV9jb250ZXh0LT5oYXNoLCByZXN1bHQuZGF0YSgp
KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMTgzODg0MTliZGI5NjNhMTE0NWFjOWE4OTY3NGYzZmIzYTE3ZWVjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vd2luL0NyeXB0
b0RpZ2VzdFdpbi5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDx3aW5kb3dz
Lmg+CisjaW5jbHVkZSA8d2luY3J5cHQuaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBD
cnlwdG9EaWdlc3RDb250ZXh0IHsKKyAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0
aG07CisgICAgSENSWVBUUFJPViBoQ29udGV4dCB7IDAgfTsKKyAgICBIQ1JZUFRIQVNIIGhIYXNo
IHsgMCB9OworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250
ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5Dcnlw
dG9EaWdlc3QoKQoreworICAgIGlmIChIQ1JZUFRIQVNIIGhIYXNoID0gbV9jb250ZXh0LT5oSGFz
aCkKKyAgICAgICAgQ3J5cHREZXN0cm95SGFzaChoSGFzaCk7CisgICAgaWYgKEhDUllQVFBST1Yg
aENvbnRleHQgPSBtX2NvbnRleHQtPmhDb250ZXh0KQorICAgICAgICBDcnlwdFJlbGVhc2VDb250
ZXh0KGhDb250ZXh0LCAwKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5
cHRvRGlnZXN0OjpjcmVhdGUoQWxnb3JpdGhtIGFsZ29yaXRobSkKK3sKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0
LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRobTsKKyAgICBpZiAoIUNyeXB0QWNxdWly
ZUNvbnRleHQoJmRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgbnVsbHB0ciwgbnVsbHB0ciAv
KiB1c2UgZGVmYXVsdCBwcm92aWRlciAqLywgUFJPVl9SU0FfQUVTLCBDUllQVF9WRVJJRllDT05U
RVhUKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxz
ZTsKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8xOiB7CisgICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdl
c3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBMSwgMCwgMCwgJmRpZ2VzdC0+bV9jb250
ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRl
SGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzI1NiwgMCwgMCwgJmRp
Z2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7CisgICAgICAgIHN1Y2NlZWRlZCA9
IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzM4
NCwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7CisgICAgICAg
IHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQs
IENBTEdfU0hBXzUxMiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICB9CisgICAgaWYgKHN1Y2NlZWRlZCkKKyAgICAgICAgcmV0dXJu
IGRpZ2VzdDsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFk
ZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmICghaW5w
dXQgfHwgIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0
SGFzaERhdGEobV9jb250ZXh0LT5oSGFzaCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBCWVRFKj4o
aW5wdXQpLCBsZW5ndGgsIDApKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6
Y29tcHV0ZUhhc2goKQoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CisgICAgRFdPUkQg
ZGlnZXN0TGVuZ3RoQnVmZmVyOworICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlclNpemUgPSBz
aXplb2YoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0
SGFzaFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hTSVpFLCByZWludGVycHJldF9jYXN0
PEJZVEUqPigmZGlnZXN0TGVuZ3RoQnVmZmVyKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlclNpemUsIDAp
KTsKKyAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbmd0aEJ1ZmZlcik7CisKKyAgICBSRUxFQVNF
X0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIVkFMLCBy
ZXN1bHQuZGF0YSgpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyLCAwKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0LnNpemUoKSA9PSBkaWdlc3RMZW5ndGhCdWZmZXIpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCBmM2FlODliMDBlM2QzNGJkOTQ1OGM1OGZmYjQ0YThlYTI3OTZiM2RkLi4xZjBlMTAzNWFkNGFk
MmUxZTNmMGIxNzI1YTJhY2VjZWUzYzgwYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtNjksOCArNjksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRm
b3JtL2F1ZGlvL2VmbC9BdWRpb0J1c0VmbC5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5
cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZWZsL0N1cnNvckVmbC5j
cHAKICAgICBwbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL0Ry
YWdJbWFnZUVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjI0MjE2MjljNWVk
NTA3YTc3MzRhM2U2ZGZjZDM0YTcyODgxZWJkZi4uYjFjNmU2YjhjZTEzMzdlMzhjMjg0NjMxNTRi
NWZhZTE3MGNkMDRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTY4LDggKzY4LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9nbGli
L0F1ZGlvQnVzR0xpYi5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGln
ZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9nbGliL0dhbWVwYWRzR2xpYi5j
cHAKIAogICAgIHBsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUxLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA0YzUxZTJhYTkwNjY0NTgyYWE0MjIzNjc0
NTQ1MTM5OTEyNGExMWYwLi43ZGMxZTZlODRjZTBlNjY1ZGVmNzliMDE1ZTE0NTA5MzgyOTZkOWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzMzLDggKzMzMyw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KICAg
ICBwbGF0Zm9ybS9jb2NvYS9XZWJDb3JlTlNFcnJvckV4dHJhcy5tbQogCi0gICAgcGxhdGZvcm0v
Y3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCi0KICAgICBw
bGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAogICAgIHBsYXRmb3JtL2dhbWVwYWQv
bWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRl
eCA4ZDdmNTA4YTEyMjk1NzE3OTA3ZGVmNDE0ZjJmMjY0ZGYxMGMxOWFkLi5hNGE5OTA5YjEyMTM0
M2NlZWJjNjliZDAxYTgzNWMxOGYxODkwMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpA
QCAtNzMsOCArNzMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRm
b3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAogCi0gICAgcGxhdGZvcm0vY3J5cHRvL3dp
bi9DcnlwdG9EaWdlc3RXaW4uY3BwCi0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDlhNDBkYjgyMzk5ZmIwYmY3MGQ1MmI0YWM2M2Y5MGE4OGY5N2JkYTkuLmYx
NmE0NTEzZTViNDkxMTBkOGMyNjlmZTc0ODg2MTg3MDEyMWU4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk3Nyw2ICs5Nzcs
NyBAQAogCQkxQzAxMDcwMTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAxMDZGRjE5
MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggKi87IH07CiAJCTFDMDkzOUVB
MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDkzOUU4MUExM0UxMjkwMEI3ODhFNSAvKiBD
YWNoZWRTVkdGb250LmNwcCAqLzsgfTsKIAkJMUMwOTM5RUIxQTEzRTEyOTAwQjc4OEU1IC8qIENh
Y2hlZFNWR0ZvbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDMDkzOUU5MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmggKi87IH07CisJ
CTFDMDlEMDU5MUUzMUM2QTkwMDcyNUYxOCAvKiBsaWJQQUwuYSBpbiBGcmFtZXdvcmtzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDlEMDUwMUUzMUMzMjkwMDcyNUYxOCAv
KiBsaWJQQUwuYSAqLzsgfTsKIAkJMUMxOERBNTgxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWlu
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
MThEQTU2MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5jcHAgKi87IH07CiAJCTFDMThE
QTU5MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxOERBNTcxODFBRjZBNTAwQzRFRjIyIC8qIFRl
eHRQYWludGVyLmggKi87IH07CiAJCTFDMjFFNTdDMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZh
Y2VQb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDMjFFNTdBMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmNwcCAqLzsgfTsKQEAg
LTY4ODgsNiArNjg4OSwxMyBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTFDMDlEMDRGMUUzMUMz
MjkwMDcyNUYxOCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhD
b250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAxQzA5RDA0QjFFMzFDMzI4
MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLzsKKwkJCXByb3h5VHlwZSA9IDI7CisJCQlyZW1v
dGVHbG9iYWxJRFN0cmluZyA9IDFDMDlEMDNEMUUzMUMzMjgwMDcyNUYxODsKKwkJCXJlbW90ZUlu
Zm8gPSBQQUw7CisJCX07CiAJCTQxN0RBNkQ0MTM3MzRFMEQwMDdDNTdGQiAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CkBAIC04MDU0LDYgKzgwNjIsNyBAQAogCQkxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEg
LyogSW5saW5lVGV4dEJveFN0eWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IElubGluZVRleHRCb3hTdHlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5
MzlFODFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRTVkdGb250LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUMwOTM5RTkxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkU1ZHRm9udC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzA5RDA0QjFFMzFDMzI4MDA3MjVGMTggLyogUEFM
Lnhjb2RlcHJvaiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9ICJ3cmFwcGVyLnBiLXByb2plY3QiOyBuYW1lID0gUEFMLnhjb2RlcHJvajsgcGF0aCA9IFBB
TC9QQUwueGNvZGVwcm9qOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzE4REE1NjE4
MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGV4dFBhaW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQzE4REE1NzE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFBhaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUMyMUU1N0ExODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSU9TdXJmYWNlUG9vbC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDk4Nyw2ICsxNDk5Niw3IEBACiAJCQlp
c2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkxQzA5RDA1OTFFMzFDNkE5MDA3MjVGMTggLyogbGli
UEFMLmEgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxMjEyQjA0OEEzMDBFRDk4QzYgLyog
QWNjZWxlcmF0ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxMzEyQjA0
OEEzMDBFRDk4QzYgLyogQXVkaW9Ub29sYm94LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAog
CQkJCTFBQjMzREE1MTI1NTFFMzIwMDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLywKQEAgLTE1NDAyLDYgKzE1NDEyLDcgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFB
QzA3IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJMUMwOUQwNEIxRTMxQzMyODAwNzI1RjE4IC8qIFBBTC54Y29kZXByb2ogKi8sCiAJCQkJ
NjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovLAogCQkJCUVERUM5ODAyMEFF
RDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8sCiAJCQkJOTMwNzA2MTMwOUUwQ0E4
MjAwQjE3RkU0IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCkBAIC0xNjA4Myw2ICsxNjA5NCwx
NCBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJ
CTFDMDlEMDRDMUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMwOUQwNTAxRTMxQzMyOTAwNzI1RjE4IC8q
IGxpYlBBTC5hICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCTFDNUZBRUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0
b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjg1NTYs
NiArMjg1NzUsMTIgQEAKIAkJCW1haW5Hcm91cCA9IDA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAv
KiBXZWJLaXQgKi87CiAJCQlwcm9kdWN0UmVmR3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlD
OEIgLyogUHJvZHVjdHMgKi87CiAJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJl
ZmVyZW5jZXMgPSAoCisJCQkJeworCQkJCQlQcm9kdWN0R3JvdXAgPSAxQzA5RDA0QzFFMzFDMzI4
MDA3MjVGMTggLyogUHJvZHVjdHMgKi87CisJCQkJCVByb2plY3RSZWYgPSAxQzA5RDA0QjFFMzFD
MzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLzsKKwkJCQl9LAorCQkJKTsKIAkJCXByb2pl
Y3RSb290ID0gIiI7CiAJCQl0YXJnZXRzID0gKAogCQkJCTQxODE2Rjc5MTM4NTlDNTUwMDU3QUFB
NCAvKiBBbGwgKi8sCkBAIC0yODU2Nyw2ICsyODU5MiwxNiBAQAogCQl9OwogLyogRW5kIFBCWFBy
b2plY3Qgc2VjdGlvbiAqLwogCisvKiBCZWdpbiBQQlhSZWZlcmVuY2VQcm94eSBzZWN0aW9uICov
CisJCTFDMDlEMDUwMUUzMUMzMjkwMDcyNUYxOCAvKiBsaWJQQUwuYSAqLyA9IHsKKwkJCWlzYSA9
IFBCWFJlZmVyZW5jZVByb3h5OworCQkJZmlsZVR5cGUgPSBhcmNoaXZlLmFyOworCQkJcGF0aCA9
IGxpYlBBTC5hOworCQkJcmVtb3RlUmVmID0gMUMwOUQwNEYxRTMxQzMyOTAwNzI1RjE4IC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJCXNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7CisJCX07CisvKiBFbmQgUEJYUmVmZXJlbmNlUHJveHkgc2VjdGlvbiAqLworCiAvKiBCZWdp
biBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAkJOTNGMTk5RkQwODI0NUU1OTAw
MUU5QUJDIC8qIFJlc291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhh
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEExLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTEuY3BwCmluZGV4IDBjOGRmZGRkMWUwYTdhZGJhYTE4ZWY5YzUxMmE3Mjhj
OTQyYWRlMjkuLmFkZGY4NGQyYjIzZjI1N2VmOGZjOTY2YmRlYTE5ZjcwYzllZDRmN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTEuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBU
TykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2Ny
eXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0
Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6aWRl
bnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6ZGlnZXN0KFZlY3Rv
cjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlv
bkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRv
RGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKKyAgICBhdXRv
IGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzEpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNh
bGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNz
YWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbAogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdv
cml0aG1TSEExOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEp
OworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAg
ZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNw
cAppbmRleCA2Y2ExYWVlNWE2YmI3ZDgzY2EwNTY0MTlkY2JlYmQ1MTdiOWQ2MTg1Li42MzRjNWEz
ZDkzYjgyZmE2YjFlY2I0NTJmNTUyZDA2ODY2ODVmNjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAK
QEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVk
ZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0Rp
Z2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmlkZW50aWZpZXIoKSBj
b25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90
PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdv
cmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0Ojpj
cmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOworICAgIGF1dG8gZGlnZXN0
ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjI0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFj
ayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9p
ZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdl
LCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGht
U0hBMjI0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3Qg
PSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7
CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAg
IGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5j
cHAKaW5kZXggNzM2NjBmNTk5YWYzN2NhOWRlOWEyMTllM2Y0ZjIzNDhmNDZhYzJiMy4uMGVhMDUw
NmI5NGEzYWIyZTM5ZGIzZjI1MTAzNGZhNzRlYzYzYWNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3Bw
CkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1
ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9E
aWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjppZGVudGlmaWVyKCkg
Y29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdChWZWN0b3I8dWludDhf
dD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFj
ayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
b3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGRpZ2Vz
dCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1Nik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2Fn
ZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRo
bVNIQTI1Njo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0
ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYp
OworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAg
ICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQu
Y3BwCmluZGV4IGM5Nzc1MmQ4MWMwMDU0MjM5YjBiODhjNjBhYTM0M2VmYTY1ZTE0NzcuLjg4ZjMx
MzYyOTZiMDRjNTM4Mzg2MDM5ZTI5NGU5YzQzOTNlNGFmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNw
cApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNs
dWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRv
RGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6aWRlbnRpZmllcigp
IGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4
X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAgYXV0byBkaWdl
c3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8zODQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3Nh
Z2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0
aG1TSEEzODQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAg
ICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
LmNwcAppbmRleCAzM2U0ODNkYTE1ZDEwY2NkYjczZWUzOGY5M2ExM2Q2ZDcxODcwMmVmLi4wMTAz
ZjA5NTM3MmJmMzU5NDZjN2NkMDNkZjU5YzE5YjFlYjBjNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5j
cHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5j
bHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0
b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmlkZW50aWZpZXIo
KSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KFZlY3Rvcjx1aW50
OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxi
YWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOworICAgIGF1dG8gZGln
ZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfNTEyKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNz
YWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3Jp
dGhtU0hBNTEyOjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
Mik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAg
ICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNT
QV9QS0NTMV92MV81TWFjLmNwcAppbmRleCBmNmFiN2EyMTU1NTNiNmNiZmI0NzMwMzU1Y2ZlNTM1
MmE5ZDAyMzU1Li4wZjBiZjkzMTNmYWI1Y2E1NGVkNjQ2OWJmMzg2ZDgyOWRlOTFlYTljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9Q
S0NTMV92MV81TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcApAQCAtMzAsMjYgKzMwLDI2IEBACiAKICNp
bmNsdWRlICJDb21tb25DcnlwdG9VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0
aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAj
aW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0Ny
eXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSBzdGQ6Om9wdGlv
bmFsPENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBjcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24pCitpbmxpbmUgc3RkOjpvcHRpb25hbDxQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBjcnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rpb24pCiB7CiAgICAgc3dpdGNoIChoYXNoRnVu
Y3Rpb24pIHsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8xOgotICAg
ICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOworICAgICAgICByZXR1
cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE7CiAgICAgY2FzZSBDcnlwdG9B
bGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yMjQ7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjI0OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6
U0hBXzI1NjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsK
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8zODQ6Ci0gICAgICAgIHJl
dHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKKyAgICAgICAgcmV0dXJuIFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CiAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV81MTI7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfNTEyOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQpAQCAtNjYsNyArNjYsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVp
bnQ4X3Q+PiBzaWduUlNBU1NBX1BLQ1MxX3YxXzUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZgogICAg
IGF1dG8gY3J5cHRvRGlnZXN0QWxnb3JpdGhtID0gV2ViQ29yZTo6Y3J5cHRvRGlnZXN0QWxnb3Jp
dGhtKGhhc2gpOwogICAgIGlmICghY3J5cHRvRGlnZXN0QWxnb3JpdGhtKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0
b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOworICAgIGF1dG8gZGlnZXN0
ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKICAg
ICBpZiAoIWRpZ2VzdCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
IH07CiAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLCBkYXRhTGVuZ3RoKTsKQEAgLTkzLDcgKzkz
LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHZlcmlmeVJTQVNTQV9QS0NTMV92MV81KENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwKICAgICBhdXRvIGNyeXB0b0RpZ2VzdEFsZ29y
aXRobSA9IFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNoKTsKICAgICBpZiAoIWNy
eXB0b0RpZ2VzdEFsZ29yaXRobSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlv
bkVycm9yIH07Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRv
RGlnZXN0QWxnb3JpdGhtKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0Ojpj
cmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CiAgICAgaWYgKCFkaWdlc3QpCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIGRpZ2VzdC0+YWRkQnl0
ZXMoZGF0YSwgZGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAppbmRleCBhMTU3YTg0ZjBlNjVmODVmOWMwNDhlNTFjMWQxOTBlMmI4
N2RiZjBhLi5kZjc3Y2I0YzliNWM5MWQ0NGU3MzM3OTkyZDdkOGJhN2Q3NjUzMGIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTQ1LDcg
KzQ1LDYgQEAKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiQ29va2llLmgi
CiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5j
bHVkZSAiRE9NRWRpdG9yLmgiCiAjaW5jbHVkZSAiRE9NUGF0Y2hTdXBwb3J0LmgiCiAjaW5jbHVk
ZSAiRE9NV2luZG93LmgiCkBAIC05Niw2ICs5NSw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lk
ZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
PgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KKyNpbmNsdWRl
IDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KQEAgLTEzMTYsNyArMTMxNiw3IEBAIHN0YXRpYyBTdHJpbmcgY29tcHV0ZUNvbnRl
bnRTZWN1cml0eVBvbGljeVNIQTI1Nkhhc2goY29uc3QgRWxlbWVudCYgZWxlbWVudCkKICAgICBU
ZXh0RW5jb2RpbmcgZG9jdW1lbnRFbmNvZGluZyA9IGVsZW1lbnQuZG9jdW1lbnQoKS50ZXh0RW5j
b2RpbmcoKTsKICAgICBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nVG9Vc2UgPSBkb2N1bWVu
dEVuY29kaW5nLmlzVmFsaWQoKSA/IGRvY3VtZW50RW5jb2RpbmcgOiBVVEY4RW5jb2RpbmcoKTsK
ICAgICBDU3RyaW5nIGNvbnRlbnQgPSBlbmNvZGluZ1RvVXNlLmVuY29kZShUZXh0Tm9kZVRyYXZl
cnNhbDo6Y29udGVudHNBc1N0cmluZyhlbGVtZW50KSwgRW50aXRpZXNGb3JVbmVuY29kYWJsZXMp
OwotICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpD
cnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
KTsKICAgICBjcnlwdG9EaWdlc3QtPmFkZEJ5dGVzKGNvbnRlbnQuZGF0YSgpLCBjb250ZW50Lmxl
bmd0aCgpKTsKICAgICBWZWN0b3I8dWludDhfdD4gZGlnZXN0ID0gY3J5cHRvRGlnZXN0LT5jb21w
dXRlSGFzaCgpOwogICAgIHJldHVybiBtYWtlU3RyaW5nKCJzaGEyNTYtIiwgYmFzZTY0RW5jb2Rl
KGRpZ2VzdC5kYXRhKCksIGRpZ2VzdC5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDUzNjcxZTUwYTc0YjcwM2Zk
NTFjYjM5ZDk1ZDU1MGI2MzAyNmIyNjkuLjk2ZmE3YTIzMWIxODEzMWQyMzZjYzE4YWY5YmFmOWYy
ZjhlYTM0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeUhhc2guaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaCIK
ICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VMaXN0LmgiCi0jaW5jbHVkZSAi
Q3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTU3LDYgKzU2LDcgQEAK
ICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5Lmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNs
dWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CkBAIC0zMDEsMTggKzMwMSwx
OCBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6YWxsUG9saWNpZXNBbGxvdyhWaW9sYXRl
ZERpcmVjdGl2ZUNhbGxiYWNrJiYgY2FsbGJhYwogICAgIHJldHVybiBpc0FsbG93ZWQ7CiB9CiAK
LXN0YXRpYyBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSB0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShD
b250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtIGFsZ29yaXRobSkKK3N0YXRpYyBQQUw6
OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRlbnRT
ZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0gYWxnb3JpdGhtKQogewogICAgIHN3aXRjaCAoYWxn
b3JpdGhtKSB7CiAgICAgY2FzZSBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpT
SEFfMjU2OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7
CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2Owog
ICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6U0hBXzM4NDoKLSAg
ICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OworICAgICAgICBy
ZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKICAgICBjYXNlIENv
bnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIHJldHVy
biBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICAgICAgcmV0dXJuIFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsK
KyAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlPgpAQCAtMzMzLDcgKzMzMyw3IEBAIENvbnRlbnRT
ZWN1cml0eVBvbGljeTo6SGFzaEluRW5mb3JjZWRBbmRSZXBvcnRPbmx5UG9saWNpZXNQYWlyIENv
bnRlbnRTZWN1cml0eVBvCiAgICAgYm9vbCBmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgPSBm
YWxzZTsKICAgICBib29sIGZvdW5kSGFzaEluUmVwb3J0T25seVBvbGljaWVzID0gZmFsc2U7CiAg
ICAgZm9yIChhdXRvIGFsZ29yaXRobSA6IGFsZ29yaXRobXMpIHsKLSAgICAgICAgYXV0byBjcnlw
dG9EaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShh
bGdvcml0aG0pKTsKKyAgICAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOwogICAgICAgICBj
cnlwdG9EaWdlc3QtPmFkZEJ5dGVzKGNvbnRlbnRDU3RyaW5nLmRhdGEoKSwgY29udGVudENTdHJp
bmcubGVuZ3RoKCkpOwogICAgICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoIGhhc2ggPSB7
IGFsZ29yaXRobSwgY3J5cHRvRGlnZXN0LT5jb21wdXRlSGFzaCgpIH07CiAgICAgICAgIGlmICgh
Zm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzICYmIGFsbFBvbGljaWVzV2l0aERpc3Bvc2l0aW9u
QWxsb3coQ29udGVudFNlY3VyaXR5UG9saWN5OjpEaXNwb3NpdGlvbjo6RW5mb3JjZSwgc3RkOjpm
b3J3YXJkPFByZWRpY2F0ZT4ocHJlZGljYXRlKSwgaGFzaCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDMxZjA3NWFhMzdjYjM0NjIwOTg0N2E1OTllMWY1NDI4NGY5ZjM4MTkuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ3J5cHRvRGlnZXN0X2gKLSNkZWZpbmUgQ3J5cHRv
RGlnZXN0X2gKLQotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29u
dGV4dDsKLQotY2xhc3MgQ3J5cHRvRGlnZXN0IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
cnlwdG9EaWdlc3QpOwotcHVibGljOgotICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKLSAgICAg
ICAgU0hBXzEsCi0gICAgICAgIFNIQV8yMjQsCi0gICAgICAgIFNIQV8yNTYsCi0gICAgICAgIFNI
QV8zODQsCi0gICAgICAgIFNIQV81MTIsCi0gICAgfTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0RpZ2VzdD4gY3JlYXRlKEFsZ29yaXRobSk7Ci0gICAgfkNyeXB0b0RpZ2VzdCgp
OwotCi0gICAgdm9pZCBhZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVIYXNoKCk7Ci0KLXByaXZhdGU6Ci0gICAgQ3J5
cHRvRGlnZXN0KCk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4g
bV9jb250ZXh0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ3J5
cHRvRGlnZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9j
b21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTNmZmM1NjA1MjI2YjY0YjQ5MzczYmVh
Njg1ZTkyM2YwMTk5YmI0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0
b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3Qu
aCIKLQotI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOwotICAgIHZvaWQqIGNjQ29udGV4dDsKLX07Ci0KLWlu
bGluZSBDQ19TSEExX0NUWCogdG9TSEExQ29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250
ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8xKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMV9DVFgqPihj
b250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjI0Q29u
dGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0
LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0K
LWlubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTI1NkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4
dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hB
MjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBNTEyX0NUWCog
dG9TSEEzODRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNT
RVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4
NCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0Nv
bnRleHQpOwotfQotaW5saW5lIENDX1NIQTUxMl9DVFgqIHRvU0hBNTEyQ29udGV4dChDcnlwdG9E
aWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0g
PT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLQotQ3J5cHRvRGln
ZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250
ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotICAgIHN3aXRj
aCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMToKLSAgICAgICAgZGVsZXRlIHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8yMjQ6Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTY6Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6
Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0g
ICAgICAgIGRlbGV0ZSB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLX0KLQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCi17Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3Qp
OwotICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBhbGdvcml0aG07Ci0KLSAgICBz
d2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8xOiB7Ci0gICAgICAgIENDX1NIQTFfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTFfQ1RYOwot
ICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAg
Q0NfU0hBMV9Jbml0KGNvbnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7Ci0gICAgICAgIENDX1NI
QTI1Nl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMjU2X0NUWDsKLSAgICAgICAgZGlnZXN0LT5t
X2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTIyNF9Jbml0KGNv
bnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7Ci0gICAgICAgIENDX1NIQTI1Nl9DVFgqIGNvbnRl
eHQgPSBuZXcgQ0NfU0hBMjU2X0NUWDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29u
dGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTI1Nl9Jbml0KGNvbnRleHQpOwotICAgICAg
ICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMzg0OiB7Ci0gICAgICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hB
NTEyX0NUWDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7
Ci0gICAgICAgIENDX1NIQTM4NF9Jbml0KGNvbnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0
OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0g
ICAgICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEyX0NUWDsKLSAgICAg
ICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NI
QTUxMl9Jbml0KGNvbnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICB9
Ci19Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6
ZV90IGxlbmd0aCkKLXsKLSAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Ci0gICAgICAgIENDX1NIQTFfVXBk
YXRlKHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0Ogot
ICAgICAgICBDQ19TSEEyMjRfVXBkYXRlKHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkp
LCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIENDX1NIQTI1Nl9VcGRhdGUodG9TSEEyNTZD
b250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgQ0Nf
U0hBMzg0X1VwZGF0ZSh0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxl
bmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfNTEyOgotICAgICAgICBDQ19TSEE1MTJfVXBkYXRlKHRvU0hBNTEyQ29udGV4dChtX2Nv
bnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0K
LQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIFZl
Y3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkg
ewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICByZXN1
bHQucmVzaXplKENDX1NIQTFfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTFfRmluYWwo
cmVzdWx0LmRhdGEoKSwgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAg
ICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEyMjRfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NI
QTIyNF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgp
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8yNTY6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjU2X0RJR0VTVF9MRU5HVEgpOwot
ICAgICAgICBDQ19TSEEyNTZfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyNTZDb250ZXh0KG1f
Y29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTM4NF9ESUdF
U1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBMzg0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hB
Mzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShD
Q19TSEE1MTJfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTUxMl9GaW5hbChyZXN1bHQu
ZGF0YSgpLCB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0
b0RpZ2VzdEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBh
M2M4YmYyNDNkYzA3MmFiYmE4NDYxODk3MzNhMGY1M2ZkNmMwNGUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5
cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgotICogQ29weXJp
Z2h0IChDKSAyMDE2IFNvZnRBdEhvbWUKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8Z2NyeXB0Lmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIGludCBh
bGdvcml0aG07Ci0gICAgZ2NyeV9tZF9oZF90IG1kOwotfTsKLQotQ3J5cHRvRGlnZXN0OjpDcnlw
dG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQotewot
fQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotfQotCi1zdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobSBhbGdvcml0aG0pCi17Ci0gICAgaW50IGdjcnlwdEFsZ29yaXRobTsKLQotICAgIHN3aXRj
aCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6
Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgZ2Ny
eXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEyMjQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRo
bSA9IEdDUllfTURfU0hBMjU2OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01E
X1NIQTM4NDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzUxMjoKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEE1MTI7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+
IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3Jp
dGhtID0gZ2NyeXB0QWxnb3JpdGhtOwotCi0gICAgZ2NyeV9tZF9vcGVuKCZkaWdlc3QtPm1fY29u
dGV4dC0+bWQsIGdjcnlwdEFsZ29yaXRobSwgMCk7Ci0gICAgaWYgKCFkaWdlc3QtPm1fY29udGV4
dC0+bWQpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGRpZ2VzdDsKLX0K
LQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3Qg
bGVuZ3RoKQotewotICAgIGdjcnlfbWRfd3JpdGUobV9jb250ZXh0LT5tZCwgaW5wdXQsIGxlbmd0
aCk7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsK
LSAgICBpbnQgZGlnZXN0TGVuID0gZ2NyeV9tZF9nZXRfYWxnb19kbGVuKG1fY29udGV4dC0+YWxn
b3JpdGhtKTsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGRpZ2VzdExlbik7Ci0KLSAgICBn
Y3J5X21kX2ZpbmFsKG1fY29udGV4dC0+bWQpOwotICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBn
Y3J5X21kX3JlYWQobV9jb250ZXh0LT5tZCwgMCksIGRpZ2VzdExlbik7Ci0gICAgZ2NyeV9tZF9j
bG9zZShtX2NvbnRleHQtPm1kKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0
by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggODlhNWQ4MWYyYjRiZTI3MzJjZWUzZTUyNjMzODZlZDU5Y2IyMTRkZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxMDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEg
Uy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNsdWRlIDxnbnV0bHMvZ251dGxzLmg+
Ci0jaW5jbHVkZSA8Z251dGxzL2NyeXB0by5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0
cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKLSAgICBnbnV0bHNfZGlnZXN0X2FsZ29yaXRobV90
IGFsZ29yaXRobTsKLSAgICBnbnV0bHNfaGFzaF9oZF90IGhhc2g7Ci19OwotCi1DcnlwdG9EaWdl
c3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRl
eHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci0gICAgZ251dGxz
X2hhc2hfZGVpbml0KG1fY29udGV4dC0+aGFzaCwgMCk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
IGFsZ29yaXRobSkKLXsKLSAgICBnbnV0bHNfZGlnZXN0X2FsZ29yaXRobV90IGdudXRsc0FsZ29y
aXRobTsKLQotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzE6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJ
R19TSEExOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzIyNDogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElH
X1NIQTIyNDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yNTY6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJ
R19TSEEyNTY7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0OiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19E
SUdfU0hBMzg0OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzUxMjogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNf
RElHX1NIQTUxMjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQotICAgIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdl
c3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gZ251dGxzQWxnb3JpdGhtOwotCi0gICAgaW50IHJl
dCA9IGdudXRsc19oYXNoX2luaXQoJmRpZ2VzdC0+bV9jb250ZXh0LT5oYXNoLCBnbnV0bHNBbGdv
cml0aG0pOwotICAgIGlmIChyZXQgIT0gR05VVExTX0VfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZGlnZXN0OwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6
YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgZ251dGxz
X2hhc2gobV9jb250ZXh0LT5oYXNoLCBpbnB1dCwgbGVuZ3RoKTsKLX0KLQotVmVjdG9yPHVpbnQ4
X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIFZlY3Rvcjx1aW50OF90PiBy
ZXN1bHQ7Ci0gICAgaW50IGRpZ2VzdExlbiA9IGdudXRsc19oYXNoX2dldF9sZW4obV9jb250ZXh0
LT5hbGdvcml0aG0pOwotICAgIHJlc3VsdC5yZXNpemUoZGlnZXN0TGVuKTsKLQotICAgIGdudXRs
c19oYXNoX291dHB1dChtX2NvbnRleHQtPmhhc2gsIHJlc3VsdC5kYXRhKCkpOwotCi0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmNjMTkyYzJiMzAzOTU5NDMwZjI0OWM3MzYzNGIx
MzljN2E4YTQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8d2luY3J5cHQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7
Ci0gICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOwotICAgIEhDUllQVFBST1Yg
aENvbnRleHQgeyAwIH07Ci0gICAgSENSWVBUSEFTSCBoSGFzaCB7IDAgfTsKLX07Ci0KLUNyeXB0
b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0
Q29udGV4dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLSAgICBp
ZiAoSENSWVBUSEFTSCBoSGFzaCA9IG1fY29udGV4dC0+aEhhc2gpCi0gICAgICAgIENyeXB0RGVz
dHJveUhhc2goaEhhc2gpOwotICAgIGlmIChIQ1JZUFRQUk9WIGhDb250ZXh0ID0gbV9jb250ZXh0
LT5oQ29udGV4dCkKLSAgICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ29udGV4dCwgMCk7Ci19
Ci0KLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKEFs
Z29yaXRobSBhbGdvcml0aG0pCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4g
ZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0
aG0gPSBhbGdvcml0aG07Ci0gICAgaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZkaWdlc3QtPm1f
Y29udGV4dC0+aENvbnRleHQsIG51bGxwdHIsIG51bGxwdHIgLyogdXNlIGRlZmF1bHQgcHJvdmlk
ZXIgKi8sIFBST1ZfUlNBX0FFUywgQ1JZUFRfVkVSSUZZQ09OVEVYVCkpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7Ci0gICAgc3dpdGNoIChhbGdv
cml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewotICAg
ICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250
ZXh0LCBDQUxHX1NIQTEsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
NjogewotICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRl
eHQtPmhDb250ZXh0LCBDQUxHX1NIQV8yNTYsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhh
c2gpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzM4NDogewotICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGln
ZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8zODQsIDAsIDAsICZkaWdlc3QtPm1f
Y29udGV4dC0+aEhhc2gpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogewotICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENy
ZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV81MTIsIDAsIDAs
ICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
fQotICAgIGlmIChzdWNjZWVkZWQpCi0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgcmV0dXJu
IG51bGxwdHI7Ci19Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBp
bnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBpZiAoIWlucHV0IHx8ICFsZW5ndGgpCi0gICAg
ICAgIHJldHVybjsKLSAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEhhc2hEYXRhKG1fY29udGV4dC0+
aEhhc2gsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQllURSo+KGlucHV0KSwgbGVuZ3RoLCAwKSk7
Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAg
ICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlcjsK
LSAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXJTaXplID0gc2l6ZW9mKGRpZ2VzdExlbmd0aEJ1
ZmZlcik7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQt
PmhIYXNoLCBIUF9IQVNIU0laRSwgcmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oJmRpZ2VzdExlbmd0
aEJ1ZmZlciksICZkaWdlc3RMZW5ndGhCdWZmZXJTaXplLCAwKSk7Ci0gICAgcmVzdWx0LnJlc2l6
ZShkaWdlc3RMZW5ndGhCdWZmZXIpOwotCi0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNo
UGFyYW0obV9jb250ZXh0LT5oSGFzaCwgSFBfSEFTSFZBTCwgcmVzdWx0LmRhdGEoKSwgJmRpZ2Vz
dExlbmd0aEJ1ZmZlciwgMCkpOwotICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5zaXplKCkgPT0g
ZGlnZXN0TGVuZ3RoQnVmZmVyKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDg1MmI5YjhiZWViZmExMWJj
ZjMxNDVmYTZiYjYxYzI1MDkzMGJmMzguLjI2ZGI3ZjI3ZDBhNjFlOWM5MDk1MDgyYjlhMWNmYmU2
ZjhkMjdmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5j
bHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlICJHVW5pcXVlUHRyU291cC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
QEAgLTM4LDYgKzM3LDcgQEAKICNpbmNsdWRlICJTb3VwTmV0d29ya1Byb3h5U2V0dGluZ3MuaCIK
ICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2lu
Y2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9C
YXNlNjQuaD4KQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFjZXJ0aWZp
Y2F0ZURhdGEpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICAgICAgYXV0byBk
aWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzI1Nik7CisgICAgICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICAgICAgZGlnZXN0LT5h
ZGRCeXRlcyhjZXJ0aWZpY2F0ZURhdGEtPmRhdGEsIGNlcnRpZmljYXRlRGF0YS0+bGVuKTsKIAog
ICAgICAgICBhdXRvIGhhc2ggPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UK
aW5kZXggMjlhMDk2OTAzOGZhYTc0NGUxYThjNThmMzU2YWQwNzNmMDA1MjViZC4uNTEzMGZmY2Jj
YzdjOWNlNzUxNGFmNGQ1NTNiZDhhNGYwNTAxNDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtl
L1dlYktpdEZTLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZQpAQCAtMTAs
NiArMTAsOSBAQCBlbmRpZiAoKQogaWYgKE5PVCBXRUJDT1JFX0RJUikKICAgICBzZXQoV0VCQ09S
RV9ESVIgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlL1dlYkNvcmUiKQogZW5kaWYgKCkKK2lm
IChOT1QgUEFMX0RJUikKKyAgICBzZXQoUEFMX0RJUiAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwiKQorZW5kaWYgKCkKIGlmIChOT1QgV0VCS0lUX0RJUikKICAgICBzZXQo
V0VCS0lUX0RJUiAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViS2l0IikKIGVuZGlmICgp
CmRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CmluZGV4IGJmM2M0
ZWZhYjBlYWYyY2FjMjZhZTc2NmM3NjdjMWE2Njk5YjdiNDQuLmJiMzMxOGMyYjY1MWZmZjZiM2E5
ZDE3ZmJkM2Q2MmYxMjU3MTJhMjYgMTAwNjQ0Ci0tLSBhL0NNYWtlTGlzdHMudHh0CisrKyBiL0NN
YWtlTGlzdHMudHh0CkBAIC0xMTQsNiArMTE0LDcgQEAgZWxzZSAoKQogZW5kaWYgKCkKIAogc2V0
KEphdmFTY3JpcHRDb3JlX0xJQlJBUllfVFlQRSBTSEFSRUQpCitzZXQoUEFMX0xJQlJBUllfVFlQ
RSBTVEFUSUMpCiBzZXQoV2ViS2l0X0xJQlJBUllfVFlQRSBTSEFSRUQpCiBzZXQoV2ViS2l0Ml9M
SUJSQVJZX1RZUEUgU0hBUkVEKQogc2V0KFdlYkNvcmVUZXN0U3VwcG9ydF9MSUJSQVJZX1RZUEUg
U1RBVElDKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDY0OTQ1YTQ3
NjJjMWYzZTllY2ZkNGI5MjBkOTBjYTIxZmEzMWI0ZTYuLjRlOWM0MmEwYTM0MmYxMWM5ZjMwZjg2
Mjk5Y2FkOTMwYjcyOTRiNTEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMS0xOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0cmFj
dGlvbiBMYXllciAoUEFMKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2UvQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlOgorCiAyMDE3LTAxLTE3
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgRU5BQkxF
KFVTRVJfVElNSU5HKSBOb3QgRGVmaW5lZCBmb3IgQXBwbGUgV2luZG93cyBvciBPUyBYIFBvcnRz
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299329</attachid>
            <date>2017-01-19 23:43:09 -0800</date>
            <delta_ts>2017-01-20 00:27:48 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-143358-20170119234116.patch</filename>
            <type>text/plain</type>
            <size>95135</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQwZTFlNjFkMTIzNWZm
ZDcxZmRlMGNlMGQyYWI5Y2JmMDM2MmI5Mi4uNjE2NzMyNmFmNzgxNmE3YjI5YWVkYjc0OWIzOTI2
MmE0NzI0OTY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE3LTAxLTE5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNv
cmUueGNjb25maWc6CisgICAgICAgICogUEFML0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6
IEFkZGVkLgorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25m
aWc6IEFkZGVkLgorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIFBBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQu
CisgICAgICAgICogUEFML2NvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFsL0NNYWtl
TGlzdHMudHh0OiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlOiBB
ZGRlZC4KKyAgICAgICAgKiBQQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlOiBBZGRlZC4KKyAgICAg
ICAgKiBQQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFs
L1BsYXRmb3JtV2luLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFsL2NyeXB0by9Dcnlw
dG9EaWdlc3QuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9D
cnlwdG9EaWdlc3QuaC4KKyAgICAgICAgKiBQQUwvcGFsL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5
cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcC4K
KyAgICAgICAgKiBQQUwvcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRv
RGlnZXN0R0NyeXB0LmNwcC4KKyAgICAgICAgKiBQQUwvcGFsL2NyeXB0by9nbnV0bHMvQ3J5cHRv
RGlnZXN0R251VExTLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Ny
eXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcC4KKyAgICAgICAgKiBQQUwvcGFsL2Ny
eXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcC4KKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQ
bGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1TSEExOjpkaWdlc3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTIyNC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0
aG1TSEEyMjQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjU2LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTI1
Njo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEzODQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdl
c3QpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdCk6Cisg
ICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOgorICAgICAgICAo
V2ViQ29yZTo6c2lnblJTQVNTQV9QS0NTMV92MV81KToKKyAgICAgICAgKFdlYkNvcmU6OnZlcmlm
eVJTQVNTQV9QS0NTMV92MV81KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUNvbnRlbnRTZWN1cml0eVBvbGljeVNI
QTI1Nkhhc2gpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChX
ZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2ll
cyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIb3N0VExTQ2VydGlmaWNhdGVTZXQ6OmNvbXB1dGVDZXJ0
aWZpY2F0ZUhhc2gpOgorCiAyMDE3LTAxLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CiAKICAgICAgICAgaXRlcmFibGU8PiBzaG91bGQgYmUgZW5hYmxlZCBvbiBXSzEKZGlmZiAt
LWdpdCBhL1NvdXJjZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCAxYjhhMmRjYjUwNGZiNTU2YWJjNWY1ODNiNzZiZTM4ZDkyZjBmZGYxLi4xNWZkZjIyNGE4OTY2
YmUxMWRjZjYzZTJmYThmNTg3YTAzZTcyNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0NNYWtlTGlzdHMudHh0CkBAIC00Niw2ICs0Niw3IEBAIFdFQktJ
VF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV1RGICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFH
U30pCiBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKEphdmFTY3JpcHRDb3JlICR7QURE
SVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAKIGlmIChFTkFCTEVfV0VCQ09SRSkKKyAgICBXRUJL
SVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFBBTCAke0FERElUSU9OQUxfQ09NUElMRVJfRkxB
R1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29yZVRlc3RTdXBw
b3J0ICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAgICAgV0VCS0lUX1NFVF9FWFRSQV9D
T01QSUxFUl9GTEFHUyhXZWJDb3JlICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAgICAg
V0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhXZWJDb3JlRGVyaXZlZFNvdXJjZXMgJHtB
RERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjUwNDNj
NTA3NTZhNDRmODQ2YjNjNjVjYjJmYTU1NjY0MDRjMTUzNC4uNjhhNTk3MzljZjFkODU4MTY5M2E4
YzE0N2QzODViOWM2MjdhZmNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEsNiArMSw3IEBA
CiBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMi44LjEyKQogaW5jbHVkZShXZWJLaXRD
b21tb24pCiBzZXRfcHJvcGVydHkoRElSRUNUT1JZIC4gUFJPUEVSVFkgRk9MREVSICJXZWJDb3Jl
IikKK2FkZF9zdWJkaXJlY3RvcnkoUEFML3BhbCkKIAogc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJF
Q1RPUklFUwogICAgICIke0NNQUtFX0JJTkFSWV9ESVJ9IgpAQCAtMjk0NSw2ICsyOTQ2LDcgQEAg
c2V0KFdlYkNvcmVfUExVR19JTlNfUkVTT1VSQ0VTCiBzZXQoV2ViQ29yZV9MSUJSQVJJRVMKICAg
ICAke0lDVV9MSUJSQVJJRVN9CiAgICAgSmF2YVNjcmlwdENvcmUke0RFQlVHX1NVRkZJWH0KKyAg
ICBQQUwke0RFQlVHX1NVRkZJWH0KICkKIAogaWYgKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01F
RElBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcK
aW5kZXggNmIxOWFjZjY0NWNkODk5NmQ2MDNiNGEwMDE0NGVhYjg2ZGM4YjQzNy4uZDViZjI5ODU2
ZTA3ZTMxMjY1OTdiNmU3MzQxMTA5NDA5NGQwM2Y2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
b25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCkBAIC00Niw3ICs0Niw3IEBAIE9USEVSX0NQ
TFVTUExVU0ZMQUdTID0gJChPVEhFUl9DRkxBR1MpOwogCiBXRUJLSVRBRERJVElPTlNfSEVBREVS
X1NFQVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS9X
ZWJLaXRBZGRpdGlvbnMgJChTREtST09UKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlv
bnM7CiAKLUhFQURFUl9TRUFSQ0hfUEFUSFMgPSBGb3J3YXJkaW5nSGVhZGVycyBpY3UgL3Vzci9p
bmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2Nh
bC9pbmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKEhFQURF
Ul9TRUFSQ0hfUEFUSFMpOworSEVBREVSX1NFQVJDSF9QQVRIUyA9IFBBTCBGb3J3YXJkaW5nSGVh
ZGVycyBpY3UgL3Vzci9pbmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNU
U19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNI
X1BBVEhTKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBs
aXN0OwogSU5TVEFMTF9QQVRIID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdv
cmtzOwogSU5TVEFMTF9QQVRIW3Nkaz1tYWNvc3gqXSA9ICQoV0VCQ09SRV9GUkFNRVdPUktTX0RJ
Uik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvQmFzZS54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmln
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ0ZTI1MmJjY2NkZDk1MDUzNDE5MWQ5YWRkNTc0MGJhZjllNDdjYTIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvQmFzZS54
Y2NvbmZpZwpAQCAtMCwwICsxLDI0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisv
LyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8v
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisKKyNpbmNsdWRlICIuLi8uLi9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2Uu
eGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjJiMDhiZTBlZTEyZTE1NmJlZjg0NDBjMTYzNzE0M2EwMzQ1
N2MzNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9u
cy9EZWJ1Z1JlbGVhc2UueGNjb25maWcKQEAgLTAsMCArMSwyNCBAQAorLy8gQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
Ky8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVkZSAiLi4vLi4vQ29uZmlndXJhdGlvbnMvRGVi
dWdSZWxlYXNlLnhjY29uZmlnIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NvbmZp
Z3VyYXRpb25zL1BBTC54Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9u
cy9QQUwueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE1MmMxMWRkYjM0MGM1YmQ1M2NlMzYyZjUzMzQ3
NmRlOWRkYTQ5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1
cmF0aW9ucy9QQUwueGNjb25maWcKQEAgLTAsMCArMSwzOCBAQAorLy8gQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8v
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
Ky8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorCisjaW5jbHVkZSAiLi4vLi4vQ29uZmlndXJhdGlvbnMvV2ViQ29y
ZS54Y2NvbmZpZyIKKworSU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfJChDT05GSUdVUkFU
SU9OKSk7CitJTlNUQUxMX1BBVEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwvbGliOworCitTS0lQ
X0lOU1RBTEwgPSAkKFNLSVBfSU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFMTCkpOworU0tJUF9J
TlNUQUxMXyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9OTyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9ZRVMg
PSBOTzsKKworUFJPRFVDVF9OQU1FID0gUEFMOworRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CitF
WFBPUlRFRF9TWU1CT0xTX0ZJTEUgPSA7CisKK0dDQ19QUkVGSVhfSEVBREVSID0gOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk3M2ZkOGIyYTExMzA3NGZiN2Q3MGMwMzBiZTA2ODUzMzZkODM0YjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTAsMCArMSwyNDMgQEAKKy8vICEkKlVURjgqJCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7
CisJY2xhc3NlcyA9IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA0NjsKKwlvYmplY3RzID0gewor
CisvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkxQzA5RDA1MzFFMzFDNDQxMDA3
MjVGMTggLyogQ3J5cHRvRGlnZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzA5RDA1MjFFMzFDNDQxMDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Lmgg
Ki87IH07CisJCTFDMDlEMDU2MUUzMUM0NjUwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25D
cnlwdG8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUMwOUQwNTUxRTMxQzQ2NTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAg
Ki87IH07CisJCTFDMDlEMDU4MUUzMUM1N0UwMDcyNUYxOCAvKiBjb25maWcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDlEMDU3MUUzMUM1N0UwMDcy
NUYxOCAvKiBjb25maWcuaCAqLzsgfTsKKy8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJMUMwOUQwM0QxRTMxQzMy
ODAwNzI1RjE4IC8qIGxpYlBBTC5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJQ
QUwuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMUMwOUQwNTIxRTMx
QzQ0MTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDcnlwdG9EaWdlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMw
OUQwNTUxRTMxQzQ2NTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDcnlwdG9EaWdlc3RDb21tb25Dcnlw
dG8uY3BwOyBwYXRoID0gY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMDlEMDU3MUUzMUM1N0UwMDcyNUYxOCAv
KiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMDlEMDVEMUUzMUM3N0EwMDcyNUYxOCAvKiBQ
QUwueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gUEFMLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzA5RDA2MjFFMzFFQzI4MDA3MjVGMTgg
LyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMw
OUQwNjMxRTMxRUMzMTAwNzI1RjE4IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
Ky8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzA5RDAzQTFFMzFDMzI4MDA3MjVGMTggLyog
RnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlv
biAqLworCQkxQzA5RDAzNDFFMzFDMzI4MDA3MjVGMTggPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDVDMUUzMUM3MzMwMDcyNUYxOCAvKiBDb25maWd1
cmF0aW9ucyAqLywKKwkJCQkxQzA5RDA1NzFFMzFDNTdFMDA3MjVGMTggLyogY29uZmlnLmggKi8s
CisJCQkJMUMwOUQwM0YxRTMxQzMyODAwNzI1RjE4IC8qIHBhbCAqLywKKwkJCQkxQzA5RDAzRTFF
MzFDMzI4MDA3MjVGMTggLyogUHJvZHVjdHMgKi8sCisJCQkpOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKKwkJMUMwOUQwM0UxRTMxQzMyODAwNzI1RjE4IC8qIFByb2R1Y3RzICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDAzRDFF
MzFDMzI4MDA3MjVGMTggLyogbGliUEFMLmEgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1Y3Rz
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUMwOUQwM0YxRTMxQzMyODAw
NzI1RjE4IC8qIHBhbCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJMUMwOUQwNTExRTMxQzQxMjAwNzI1RjE4IC8qIGNyeXB0byAqLywKKwkJCSk7CisJCQlw
YXRoID0gcGFsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUMwOUQwNTEx
RTMxQzQxMjAwNzI1RjE4IC8qIGNyeXB0byAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMUMwOUQwNTQxRTMxQzQ1MjAwNzI1RjE4IC8qIGNvbW1vbmNyeXB0
byAqLywKKwkJCQkxQzA5RDA1MjFFMzFDNDQxMDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0LmggKi8s
CisJCQkpOworCQkJcGF0aCA9IGNyeXB0bzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCTFDMDlEMDU0MUUzMUM0NTIwMDcyNUYxOCAvKiBjb21tb25jcnlwdG8gKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDU1MUUzMUM0NjUw
MDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovLAorCQkJKTsKKwkJCW5h
bWUgPSBjb21tb25jcnlwdG87CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkx
QzA5RDA1QzFFMzFDNzMzMDA3MjVGMTggLyogQ29uZmlndXJhdGlvbnMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDVEMUUzMUM3N0EwMDcyNUYx
OCAvKiBQQUwueGNjb25maWcgKi8sCisJCQkJMUMwOUQwNjIxRTMxRUMyODAwNzI1RjE4IC8qIERl
YnVnUmVsZWFzZS54Y2NvbmZpZyAqLywKKwkJCQkxQzA5RDA2MzFFMzFFQzMxMDA3MjVGMTggLyog
QmFzZS54Y2NvbmZpZyAqLywKKwkJCSk7CisJCQlwYXRoID0gQ29uZmlndXJhdGlvbnM7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8K
KworLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzA5RDAzQjFF
MzFDMzI4MDA3MjVGMTggLyogSGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWEhlYWRlcnNCdWls
ZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAor
CQkJCTFDMDlEMDU4MUUzMUM1N0UwMDcyNUYxOCAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAor
CQkJCTFDMDlEMDUzMUUzMUM0NDEwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJz
ICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwor
CQl9OworLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4g
UEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMUMwOUQwM0MxRTMxQzMyODAwNzI1RjE4IC8q
IFBBTCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJh
dGlvbkxpc3QgPSAxQzA5RDA0ODFFMzFDMzI4MDA3MjVGMTggLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgK
KwkJCQkxQzA5RDAzOTFFMzFDMzI4MDA3MjVGMTggLyogU291cmNlcyAqLywKKwkJCQkxQzA5RDAz
QTFFMzFDMzI4MDA3MjVGMTggLyogRnJhbWV3b3JrcyAqLywKKwkJCQkxQzA5RDAzQjFFMzFDMzI4
MDA3MjVGMTggLyogSGVhZGVycyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsK
KwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gUEFMOworCQkJcHJvZHVjdE5h
bWUgPSBQQUw7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMUMwOUQwM0QxRTMxQzMyODAwNzI1RjE4
IC8qIGxpYlBBTC5hICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlw
ZS5saWJyYXJ5LnN0YXRpYyI7CisJCX07CisvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24g
Ki8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJCTFDMDlEMDM1MUUzMUMzMjgw
MDcyNUYxOCAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJ
CQlhdHRyaWJ1dGVzID0geworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAwODMwOworCQkJCVRhcmdl
dEF0dHJpYnV0ZXMgPSB7CisJCQkJCTFDMDlEMDNDMUUzMUMzMjgwMDcyNUYxOCA9IHsKKwkJCQkJ
CUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDguMzsKKwkJCQkJCVByb3Zpc2lvbmluZ1N0eWxlID0g
QXV0b21hdGljOworCQkJCQl9OworCQkJCX07CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9u
TGlzdCA9IDFDMDlEMDM4MUUzMUMzMjgwMDcyNUYxOCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWFByb2plY3QgIlBBTCIgKi87CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJY
Y29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOworCQkJaGFzU2Nhbm5l
ZEZvckVuY29kaW5ncyA9IDE7CisJCQlrbm93blJlZ2lvbnMgPSAoCisJCQkJRW5nbGlzaCwKKwkJ
CQlKYXBhbmVzZSwKKwkJCQlGcmVuY2gsCisJCQkJR2VybWFuLAorCQkJCVNwYW5pc2gsCisJCQkJ
RHV0Y2gsCisJCQkJSXRhbGlhbiwKKwkJCSk7CisJCQltYWluR3JvdXAgPSAxQzA5RDAzNDFFMzFD
MzI4MDA3MjVGMTg7CisJCQlwcm9kdWN0UmVmR3JvdXAgPSAxQzA5RDAzRTFFMzFDMzI4MDA3MjVG
MTggLyogUHJvZHVjdHMgKi87CisJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJv
b3QgPSAiIjsKKwkJCXRhcmdldHMgPSAoCisJCQkJMUMwOUQwM0MxRTMxQzMyODAwNzI1RjE4IC8q
IFBBTCAqLywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMUMwOUQwMzkxRTMxQzMy
ODAwNzI1RjE4IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkx
QzA5RDA1NjFFMzFDNDY1MDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBp
biBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQl9OworLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwor
LyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkxQzA5RDA0NjFFMzFD
MzI4MDA3MjVGMTggLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNjIxRTMxRUMyODAwNzI1
RjE4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJREVBRF9DT0RFX1NUUklQUElORyA9ICIkKERFQURfQ09ERV9TVFJJUFBJTkdfZGVidWcpIjsK
KwkJCQlERUJVR19ERUZJTkVTID0gIiQoREVCVUdfREVGSU5FU19kZWJ1ZykiOworCQkJCUdDQ19P
UFRJTUlaQVRJT05fTEVWRUwgPSAiJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX2RlYnVnKSI7CisJ
CQkJU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgPSAiJChTVFJJUF9JTlNUQUxMRURfUFJPRFVDVF9k
ZWJ1ZykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMUMwOUQwNDcxRTMxQzMy
ODAwNzI1RjE4IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNjIxRTMxRUMyODAwNzI1
RjE4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgPSBOTzsKKwkJCX07CisJCQluYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKwkJMUMwOUQwNDkxRTMxQzMyODAwNzI1RjE4IC8qIERlYnVnICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5j
ZSA9IDFDMDlEMDVEMUUzMUM3N0EwMDcyNUYxOCAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMUMwOUQwNEEx
RTMxQzMyODAwNzI1RjE4IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNUQxRTMxQzc3
QTAwNzI1RjE4IC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9
OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTFDMDlEMDVBMUUzMUM2RjAwMDcyNUYxOCAv
KiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDMDlEMDYzMUUzMUVDMzEwMDcyNUYxOCAvKiBC
YXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0g
UHJvZHVjdGlvbjsKKwkJfTsKKwkJMUMwOUQwNUIxRTMxQzZGMDAwNzI1RjE4IC8qIFByb2R1Y3Rp
b24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNUQxRTMxQzc3QTAwNzI1RjE4IC8qIFBBTC54Y2NvbmZp
ZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247
CisJCX07CisvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdp
biBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMUMwOUQwMzgxRTMxQzMyODAwNzI1
RjE4IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUEFMIiAqLyA9
IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25z
ID0gKAorCQkJCTFDMDlEMDQ2MUUzMUMzMjgwMDcyNUYxOCAvKiBEZWJ1ZyAqLywKKwkJCQkxQzA5
RDA0NzFFMzFDMzI4MDA3MjVGMTggLyogUmVsZWFzZSAqLywKKwkJCQkxQzA5RDA1QTFFMzFDNkYw
MDA3MjVGMTggLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9u
OworCQl9OworCQkxQzA5RDA0ODFFMzFDMzI4MDA3MjVGMTggLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxQzA5RDA0OTFF
MzFDMzI4MDA3MjVGMTggLyogRGVidWcgKi8sCisJCQkJMUMwOUQwNEExRTMxQzMyODAwNzI1RjE4
IC8qIFJlbGVhc2UgKi8sCisJCQkJMUMwOUQwNUIxRTMxQzZGMDAwNzI1RjE4IC8qIFByb2R1Y3Rp
b24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKy8qIEVuZCBYQ0Nv
bmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJvb3RPYmplY3QgPSAxQzA5RDAzNTFF
MzFDMzI4MDA3MjVGMTggLyogUHJvamVjdCBvYmplY3QgKi87Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvY29uZmlnLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTQ4OGM4MGFkZjZjMTFmNmMzMDgyMDNhOGU3MmVhNDgzNjg2ZjNmNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaApAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmIGRlZmluZWQoSEFWRV9DT05GSUdfSCkg
JiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCisjaW5jbHVk
ZSAiY21ha2Vjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
KyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CisKKyNpZmRlZiBfX0FQUExFX18KKyNkZWZp
bmUgSEFWRV9GVU5DX1VTTEVFUCAxCisjZW5kaWYgLyogX19BUFBMRV9fICovCisKKyNpZiBPUyhX
SU5ET1dTKQorCisjaWZuZGVmIF9XSU4zMl9XSU5OVAorI2RlZmluZSBfV0lOMzJfV0lOTlQgMHg2
MDEKKyNlbmRpZgorCisjaWZuZGVmIFdJTlZFUgorI2RlZmluZSBXSU5WRVIgMHgwNjAxCisjZW5k
aWYKKworI2VuZGlmIC8qIE9TKFdJTkRPV1MpICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisv
LyBUaGVzZSB1bmRlZnMgbWF0Y2ggdXAgd2l0aCBkZWZpbmVzIGluIFdlYkNvcmVQcmVmaXguaCBm
b3IgTWFjIE9TIFguCisvLyBIZWxwcyB1cyBjYXRjaCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVs
ZXRlIGJ5IGFjY2lkZW50IGluIGNvZGUgYW5kIGRvZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgor
I3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisK
KyNpbmNsdWRlIDxjaXNvNjQ2PgorCisjZW5kaWYKKworI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NU
eXBlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmY2
MzA0MDUyODFjMDNmZjkwMGYzMGU5Yjc4MDRiOTM0YjBmYTYwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDQzIEBACitz
ZXQoUEFMX0hFQURFUlMKKyAgICBjcnlwdG8vQ3J5cHRvRGlnZXN0LmgKKykKKworc2V0KFBBTF9T
T1VSQ0VTCispCisKK3NldChQQUxfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICIke1BBTF9ESVJ9
IgorICAgICIke1BBTF9ESVJ9L3BhbCIKKyAgICAiJHtQQUxfRElSfS9wYWwvY3J5cHRvIgorKQor
CitzZXQoUEFMX0xJQlJBUklFUworICAgIFdURgorKQorCitXRUJLSVRfSU5DTFVERV9DT05GSUdf
RklMRVNfSUZfRVhJU1RTKCkKKworV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke1BBTF9TT1VSQ0VT
fSkKK1dFQktJVF9GUkFNRVdPUksoUEFMKQorCitpZiAoVU5JWCkKKyAgICBhZGRfY3VzdG9tX2Nv
bW1hbmQoCisgICAgICAgIFRBUkdFVCBQQUwKKyAgICAgICAgUE9TVF9CVUlMRAorICAgICAgICBD
T01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L1NjcmlwdHMvRW5mb3Jj
ZVBBTExheWVyaW5nLnB5ICQ8VEFSR0VUX0ZJTEU6UEFMPiAke1BBTF9ESVJ9CisgICAgICAgIFZF
UkJBVElNKQorZW5kaWYgKCkKKworaWYgKE1TVkMpCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAor
ICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBSRV9CVUlMRAorICAgICAgICBDT01NQU5EICR7
UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVF9MSUJSQVJJRVNfRElSfS90b29scy9zY3JpcHRzL2F1
dG8tdmVyc2lvbi5wbCAke0RFUklWRURfU09VUkNFU19ESVJ9CisgICAgICAgIFZFUkJBVElNKQor
CisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBP
U1RfQlVJTEQKKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVRfTElC
UkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0cy92ZXJzaW9uLXN0YW1wLnBsICR7REVSSVZFRF9TT1VS
Q0VTX0RJUn0gJDxUQVJHRVRfRklMRTpQQUw+CisgICAgICAgIFZFUkJBVElNKQorZW5kaWYgKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1FZmwuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NWMx
ODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmExYTE1ZmM2M2IKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAor
bGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdD
cnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1H
VEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc3NWMxODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmExYTE1ZmM2M2IKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0w
LDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0Ny
eXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFj
LmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJmOTY4ZWM0ZDk4ZTQxZjczNzI5MGY4ZjRmMjhmNzRmNmEyZTYx
ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFj
LmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlw
dG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKKykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNjkxOWY3NmYxMDhm
NzJlYzg4N2ExYjczNTA3ODE3MjJhMjU4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBF
TkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKKykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTg4ZTEyNzdjNDk3OWNiMDRiMDAxZTM1M2U4YzhlOGUyOTkzYjMyZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCkBAIC0wLDAg
KzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFBB
TCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0OworCitjbGFzcyBDcnlwdG9EaWdlc3Qg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0RpZ2VzdCk7CitwdWJsaWM6CisgICAg
ZW51bSBjbGFzcyBBbGdvcml0aG0geworICAgICAgICBTSEFfMSwKKyAgICAgICAgU0hBXzIyNCwK
KyAgICAgICAgU0hBXzI1NiwKKyAgICAgICAgU0hBXzM4NCwKKyAgICAgICAgU0hBXzUxMiwKKyAg
ICB9OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBjcmVhdGUoQWxn
b3JpdGhtKTsKKyAgICB+Q3J5cHRvRGlnZXN0KCk7CisKKyAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0
IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBWZWN0b3I8dWludDhfdD4gY29tcHV0
ZUhhc2goKTsKKworcHJpdmF0ZToKKyAgICBDcnlwdG9EaWdlc3QoKTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBtX2NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2NvbW1v
bmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODZhMjQxYTRlMjM1ODZhMWMxM2FkOTJhOWU5MTE0ZWI0MmZkY2FjMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0by9D
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5j
bHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3BhY2UgUEFMIHsKKwor
c3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
IGFsZ29yaXRobTsKKyAgICB2b2lkKiBjY0NvbnRleHQ7Cit9OworCitpbmxpbmUgQ0NfU0hBMV9D
VFgqIHRvU0hBMUNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBB
U1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTFfQ1RYKj4oY29udGV4dC0+Y2NDb250
ZXh0KTsKK30KK2lubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTIyNENvbnRleHQoQ3J5cHRvRGln
ZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hB
MjU2X0NUWCogdG9TSEEyNTZDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7
CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1Nik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250
ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTUxMl9DVFgqIHRvU0hBMzg0Q29udGV4
dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5h
bGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lu
bGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTUxMkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCog
Y29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEy
X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGln
ZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKwor
Q3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBzd2l0Y2ggKG1fY29udGV4dC0+
YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Cisg
ICAgICAgIGRlbGV0ZSB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAg
ICBkZWxldGUgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAgICBk
ZWxldGUgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgorICAgICAgICBkZWxl
dGUgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgorICAgICAgICBkZWxldGUg
dG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
Cit9CisKKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVh
dGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBkaWdlc3Qt
Pm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3JpdGhtOworCisgICAgc3dpdGNoIChhbGdvcml0
aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAgICAg
ICBDQ19TSEExX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEExX0NUWDsKKyAgICAgICAgZGlnZXN0
LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTFfSW5pdChj
b250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDogeworICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250
ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0Nv
bnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEEyMjRfSW5pdChjb250ZXh0KTsKKyAgICAg
ICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1NjogeworICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NI
QTI1Nl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0
OworICAgICAgICBDQ19TSEEyNTZfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2Vz
dDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogewor
ICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7CisgICAg
ICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19T
SEEzODRfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogeworICAgICAgICBDQ19TSEE1
MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9j
b250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEE1MTJfSW5pdChjb250
ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgfQorfQorCit2b2lkIENy
eXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCit7
CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBDQ19TSEExX1VwZGF0ZSh0b1NIQTFDb250
ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAgQ0NfU0hB
MjI0X1VwZGF0ZSh0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0
aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjU2OgorICAgICAgICBDQ19TSEEyNTZfVXBkYXRlKHRvU0hBMjU2Q29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIENDX1NIQTM4NF9VcGRhdGUo
dG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAg
ICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAg
ICAgICAgQ0NfU0hBNTEyX1VwZGF0ZSh0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwg
aW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK1ZlY3Rvcjx1aW50
OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4g
cmVzdWx0OworICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19T
SEExX0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEExX0ZpbmFsKHJlc3VsdC5kYXRhKCks
IHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIHJlc3VsdC5yZXNp
emUoQ0NfU0hBMjI0X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEEyMjRfRmluYWwocmVz
dWx0LmRhdGEoKSwgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAg
ICByZXN1bHQucmVzaXplKENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hB
MjU2X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzM4NDoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEzODRfRElHRVNUX0xFTkdUSCk7Cisg
ICAgICAgIENDX1NIQTM4NF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTM4NENvbnRleHQobV9j
b250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBNTEyX0RJR0VT
VF9MRU5HVEgpOworICAgICAgICBDQ19TSEE1MTJfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEE1
MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgUEFMCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBhNzhhZTBjM2I4ZDcwMDg2MDc3MzM1YWUzZTMyZWZhYTkxMzk2ZDgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQv
Q3J5cHRvRGlnZXN0R0NyeXB0LmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0SG9tZQor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0Lmgi
CisKKyNpbmNsdWRlIDxnY3J5cHQuaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlw
dG9EaWdlc3RDb250ZXh0IHsKKyAgICBpbnQgYWxnb3JpdGhtOworICAgIGdjcnlfbWRfaGRfdCBt
ZDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChu
ZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGln
ZXN0KCkKK3sKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIGludCBn
Y3J5cHRBbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBH
Q1JZX01EX1NIQTE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQ6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjI0
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjU2OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTI1NjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAg
ICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEzODQ7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIGdjcnlwdEFs
Z29yaXRobSA9IEdDUllfTURfU0hBNTEyOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Cisg
ICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdjcnlwdEFsZ29yaXRobTsKKworICAg
IGdjcnlfbWRfb3BlbigmZGlnZXN0LT5tX2NvbnRleHQtPm1kLCBnY3J5cHRBbGdvcml0aG0sIDAp
OworICAgIGlmICghZGlnZXN0LT5tX2NvbnRleHQtPm1kKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBkaWdlc3Q7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRl
cyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBnY3J5X21kX3dyaXRl
KG1fY29udGV4dC0+bWQsIGlucHV0LCBsZW5ndGgpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5
cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgaW50IGRpZ2VzdExlbiA9IGdjcnlfbWRf
Z2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+
IHJlc3VsdChkaWdlc3RMZW4pOworCisgICAgZ2NyeV9tZF9maW5hbChtX2NvbnRleHQtPm1kKTsK
KyAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSwgZ2NyeV9tZF9yZWFkKG1fY29udGV4dC0+bWQsIDAp
LCBkaWdlc3RMZW4pOworICAgIGdjcnlfbWRfY2xvc2UobV9jb250ZXh0LT5tZCk7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTU2YjhmYmJkYTBmMDkwOTMxOTkxZjZiMDE2NjZjOWIzNTlhYzA4Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2dudXRscy9D
cnlwdG9EaWdlc3RHbnVUTFMuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKKworI2luY2x1ZGUg
PGdudXRscy9nbnV0bHMuaD4KKyNpbmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+CisKK25hbWVzcGFj
ZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgZ251dGxzX2RpZ2Vz
dF9hbGdvcml0aG1fdCBhbGdvcml0aG07CisgICAgZ251dGxzX2hhc2hfaGRfdCBoYXNoOworfTsK
KworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlw
dG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQor
eworICAgIGdudXRsc19oYXNoX2RlaW5pdChtX2NvbnRleHQtPmhhc2gsIDApOworfQorCitzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1f
dCBnbnV0bHNBbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRo
bSA9IEdOVVRMU19ESUdfU0hBMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGht
ID0gR05VVExTX0RJR19TSEEyMjQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRo
bSA9IEdOVVRMU19ESUdfU0hBMjU2OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAgICBnbnV0bHNBbGdvcml0
aG0gPSBHTlVUTFNfRElHX1NIQTM4NDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKKyAgICAgICAgZ251dGxzQWxnb3Jp
dGhtID0gR05VVExTX0RJR19TSEE1MTI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2Vz
dCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdudXRsc0FsZ29yaXRobTsK
KworICAgIGludCByZXQgPSBnbnV0bHNfaGFzaF9pbml0KCZkaWdlc3QtPm1fY29udGV4dC0+aGFz
aCwgZ251dGxzQWxnb3JpdGhtKTsKKyAgICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRpZ2VzdDsKK30KKwordm9pZCBD
cnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQor
eworICAgIGdudXRsc19oYXNoKG1fY29udGV4dC0+aGFzaCwgaW5wdXQsIGxlbmd0aCk7Cit9CisK
K1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0
b3I8dWludDhfdD4gcmVzdWx0OworICAgIGludCBkaWdlc3RMZW4gPSBnbnV0bHNfaGFzaF9nZXRf
bGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKKyAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbik7
CisKKyAgICBnbnV0bHNfaGFzaF9vdXRwdXQobV9jb250ZXh0LT5oYXNoLCByZXN1bHQuZGF0YSgp
KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zMTgzODg0MTliZGI5NjNhMTE0NWFjOWE4OTY3NGYzZmIzYTE3ZWVjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vd2luL0NyeXB0
b0RpZ2VzdFdpbi5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDx3aW5kb3dz
Lmg+CisjaW5jbHVkZSA8d2luY3J5cHQuaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBD
cnlwdG9EaWdlc3RDb250ZXh0IHsKKyAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0
aG07CisgICAgSENSWVBUUFJPViBoQ29udGV4dCB7IDAgfTsKKyAgICBIQ1JZUFRIQVNIIGhIYXNo
IHsgMCB9OworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250
ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5Dcnlw
dG9EaWdlc3QoKQoreworICAgIGlmIChIQ1JZUFRIQVNIIGhIYXNoID0gbV9jb250ZXh0LT5oSGFz
aCkKKyAgICAgICAgQ3J5cHREZXN0cm95SGFzaChoSGFzaCk7CisgICAgaWYgKEhDUllQVFBST1Yg
aENvbnRleHQgPSBtX2NvbnRleHQtPmhDb250ZXh0KQorICAgICAgICBDcnlwdFJlbGVhc2VDb250
ZXh0KGhDb250ZXh0LCAwKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5
cHRvRGlnZXN0OjpjcmVhdGUoQWxnb3JpdGhtIGFsZ29yaXRobSkKK3sKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0
LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRobTsKKyAgICBpZiAoIUNyeXB0QWNxdWly
ZUNvbnRleHQoJmRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgbnVsbHB0ciwgbnVsbHB0ciAv
KiB1c2UgZGVmYXVsdCBwcm92aWRlciAqLywgUFJPVl9SU0FfQUVTLCBDUllQVF9WRVJJRllDT05U
RVhUKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxz
ZTsKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8xOiB7CisgICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdl
c3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBMSwgMCwgMCwgJmRpZ2VzdC0+bV9jb250
ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRl
SGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzI1NiwgMCwgMCwgJmRp
Z2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7CisgICAgICAgIHN1Y2NlZWRlZCA9
IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzM4
NCwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7CisgICAgICAg
IHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQs
IENBTEdfU0hBXzUxMiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICB9CisgICAgaWYgKHN1Y2NlZWRlZCkKKyAgICAgICAgcmV0dXJu
IGRpZ2VzdDsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFk
ZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmICghaW5w
dXQgfHwgIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0
SGFzaERhdGEobV9jb250ZXh0LT5oSGFzaCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBCWVRFKj4o
aW5wdXQpLCBsZW5ndGgsIDApKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6
Y29tcHV0ZUhhc2goKQoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CisgICAgRFdPUkQg
ZGlnZXN0TGVuZ3RoQnVmZmVyOworICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlclNpemUgPSBz
aXplb2YoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0
SGFzaFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hTSVpFLCByZWludGVycHJldF9jYXN0
PEJZVEUqPigmZGlnZXN0TGVuZ3RoQnVmZmVyKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlclNpemUsIDAp
KTsKKyAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbmd0aEJ1ZmZlcik7CisKKyAgICBSRUxFQVNF
X0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIVkFMLCBy
ZXN1bHQuZGF0YSgpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyLCAwKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQocmVzdWx0LnNpemUoKSA9PSBkaWdlc3RMZW5ndGhCdWZmZXIpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRl
eCBmM2FlODliMDBlM2QzNGJkOTQ1OGM1OGZmYjQ0YThlYTI3OTZiM2RkLi4xZjBlMTAzNWFkNGFk
MmUxZTNmMGIxNzI1YTJhY2VjZWUzYzgwYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpA
QCAtNjksOCArNjksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRm
b3JtL2F1ZGlvL2VmbC9BdWRpb0J1c0VmbC5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5
cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZWZsL0N1cnNvckVmbC5j
cHAKICAgICBwbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL0Ry
YWdJbWFnZUVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjI0MjE2MjljNWVk
NTA3YTc3MzRhM2U2ZGZjZDM0YTcyODgxZWJkZi4uYjFjNmU2YjhjZTEzMzdlMzhjMjg0NjMxNTRi
NWZhZTE3MGNkMDRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTY4LDggKzY4LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9nbGli
L0F1ZGlvQnVzR0xpYi5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGln
ZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9nbGliL0dhbWVwYWRzR2xpYi5j
cHAKIAogICAgIHBsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUxLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA0YzUxZTJhYTkwNjY0NTgyYWE0MjIzNjc0
NTQ1MTM5OTEyNGExMWYwLi43ZGMxZTZlODRjZTBlNjY1ZGVmNzliMDE1ZTE0NTA5MzgyOTZkOWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzMzLDggKzMzMyw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KICAg
ICBwbGF0Zm9ybS9jb2NvYS9XZWJDb3JlTlNFcnJvckV4dHJhcy5tbQogCi0gICAgcGxhdGZvcm0v
Y3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCi0KICAgICBw
bGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAogICAgIHBsYXRmb3JtL2dhbWVwYWQv
bWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRl
eCA4ZDdmNTA4YTEyMjk1NzE3OTA3ZGVmNDE0ZjJmMjY0ZGYxMGMxOWFkLi5hNGE5OTA5YjEyMTM0
M2NlZWJjNjliZDAxYTgzNWMxOGYxODkwMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpA
QCAtNzMsOCArNzMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRm
b3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAogCi0gICAgcGxhdGZvcm0vY3J5cHRvL3dp
bi9DcnlwdG9EaWdlc3RXaW4uY3BwCi0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDlhNDBkYjgyMzk5ZmIwYmY3MGQ1MmI0YWM2M2Y5MGE4OGY5N2JkYTkuLmI2
MWZmM2Q5MjI4YTcwNjFlNGQ0MTg5NDk2YTEwZjlkOGQ0ZTQzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk3Nyw2ICs5Nzcs
NyBAQAogCQkxQzAxMDcwMTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAxMDZGRjE5
MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggKi87IH07CiAJCTFDMDkzOUVB
MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDkzOUU4MUExM0UxMjkwMEI3ODhFNSAvKiBD
YWNoZWRTVkdGb250LmNwcCAqLzsgfTsKIAkJMUMwOTM5RUIxQTEzRTEyOTAwQjc4OEU1IC8qIENh
Y2hlZFNWR0ZvbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDMDkzOUU5MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmggKi87IH07CisJ
CTFDMDlEMDU5MUUzMUM2QTkwMDcyNUYxOCAvKiBsaWJQQUwuYSBpbiBGcmFtZXdvcmtzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDlEMDUwMUUzMUMzMjkwMDcyNUYxOCAv
KiBsaWJQQUwuYSAqLzsgfTsKIAkJMUMxOERBNTgxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWlu
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
MThEQTU2MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5jcHAgKi87IH07CiAJCTFDMThE
QTU5MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxOERBNTcxODFBRjZBNTAwQzRFRjIyIC8qIFRl
eHRQYWludGVyLmggKi87IH07CiAJCTFDMjFFNTdDMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZh
Y2VQb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDMjFFNTdBMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmNwcCAqLzsgfTsKQEAg
LTYyNjIsOCArNjI2Myw2IEBACiAJCUUxRjgwQjg4MTgzMTcyNTIwMDc4ODVDMyAvKiBDcnlwdG9L
ZXlQYWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MUY4MEI4NjE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxRjgwQjhEMTgzMTcyQjUwMDc4
ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFGODBCOEIxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5
UGFpci5jcHAgKi87IH07CiAJCUUxRjgwQjhFMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tl
eVBhaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
RjgwQjhDMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuaCAqLzsgfTsKLQkJRTFG
RTEzNjQxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2MjE4MzQz
NTExMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLzsgfTsKLQkJRTFG
RTEzNjcxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjYxODM0M0ExMDAwODkyRjEzIC8q
IENyeXB0b0RpZ2VzdC5oICovOyB9OwogCQlFMUZFMTM2QTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFGRTEzNjgxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQLmNwcCAqLzsgfTsKIAkJRTFGRTEzNkIxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0
b0FsZ29yaXRobVJTQV9PQUVQLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVAuaCAqLzsgfTsKIAkJRTFGRTEzNzAxODNGRUNGMDAwODkyRjEzIC8qIENyeXB0b0FsZ29y
aXRobVJTQV9PQUVQTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxRkUxMzZFMTgzRkVDRjAwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0Ff
T0FFUE1hYy5jcHAgKi87IH07CkBAIC02ODg4LDYgKzY4ODcsMTMgQEAKIC8qIEVuZCBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlv
biAqLworCQkxQzA5RDA0RjFFMzFDMzI5MDA3MjVGMTggLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9y
dGFsID0gMUMwOUQwNEIxRTMxQzMyODAwNzI1RjE4IC8qIFBBTC54Y29kZXByb2ogKi87CisJCQlw
cm94eVR5cGUgPSAyOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxQzA5RDAzRDFFMzFDMzI4
MDA3MjVGMTg7CisJCQlyZW1vdGVJbmZvID0gUEFMOworCQl9OwogCQk0MTdEQTZENDEzNzM0RTBE
MDA3QzU3RkIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29u
dGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMw
MkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtODA1NCw2ICs4MDYwLDcgQEAKIAkJMUMw
MTA2RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOTM5RTgxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0Zv
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkU1ZHRm9u
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDkzOUU5MUExM0UxMjkwMEI3
ODhFNSAvKiBDYWNoZWRTVkdGb250LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhY2hlZFNWR0ZvbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwOUQwNEIx
RTMxQzMyODAwNzI1RjE4IC8qIFBBTC54Y29kZXByb2ogKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAid3JhcHBlci5wYi1wcm9qZWN0IjsgbmFtZSA9IFBB
TC54Y29kZXByb2o7IHBhdGggPSBQQUwvUEFMLnhjb2RlcHJvajsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUMxOERBNTYxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRQYWludGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxOERBNTcxODFBRjZBNTAwQzRFRjIyIC8qIFRl
eHRQYWludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRQYWludGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjFFNTdBMTgzRUQxRkYwMDFDMjg5
RCAvKiBJT1N1cmZhY2VQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IElPU3VyZmFjZVBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQy
NzIsOCArMTQyNzksNiBAQAogCQlFMUY4MEI4NjE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5
UGFpci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9LZXlQYWlyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRjgwQjhCMTgzMTcyQjUwMDc4ODVDMyAv
KiBKU0NyeXB0b0tleVBhaXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNDcnlwdG9LZXlQYWlyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFG
ODBCOEMxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0NyeXB0b0tleVBhaXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRTFGRTEzNjIxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1v
bkNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9E
aWdlc3RDb21tb25DcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUZF
MTM2NjE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyeXB0b0RpZ2VzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUZFMTM2ODE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2OTE4M0ZF
MUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRTEzNkUxODNGRUNGMDAwODkyRjEzIC8qIENyeXB0b0FsZ29y
aXRobVJTQV9PQUVQTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE0OTg3LDYgKzE0OTkyLDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBo
YXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJ
CTFDMDlEMDU5MUUzMUM2QTkwMDcyNUYxOCAvKiBsaWJQQUwuYSBpbiBGcmFtZXdvcmtzICovLAog
CQkJCUZEMkRCRjEyMTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVyYXRlLmZyYW1ld29yayBpbiBG
cmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjEzMTJCMDQ4QTMwMEVEOThDNiAvKiBBdWRpb1Rvb2xi
b3guZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMUFCMzNEQTUxMjU1MUUzMjAwMjQ0
NTdBIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLApAQCAtMTU0MDIsNiArMTU0
MDgsNyBAQAogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDA0QjFFMzFDMzI4MDA3
MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLywKIAkJCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMg
LyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQ
cmVmaXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZlZFNvdXJj
ZXMubWFrZSAqLywKQEAgLTE2MDgzLDYgKzE2MDkwLDE0IEBACiAJCQlwYXRoID0gbWFjOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMUMwOUQwNEMxRTMxQzMyODAwNzI1RjE4
IC8qIFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkxQzA5RDA1MDFFMzFDMzI5MDA3MjVGMTggLyogbGliUEFMLmEgKi8sCisJCQkpOworCQkJ
bmFtZSA9IFByb2R1Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUM1
RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMjQ5Nyw3ICsyMjUxMiw2IEBACiAJCQkJRkQzMTYw
NDAxMkIwMjZBMzAwQzFBMzU5IC8qIGF1ZGlvICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4
NjEyRCAvKiBjZiAqLywKIAkJCQlBNUM5NzRDRTExNDg1RkRBMDA2NkYyQUIgLyogY29jb2EgKi8s
Ci0JCQkJQ0U1MEQ4Q0UxQzg5MzJFRDAwNzJFQTVBIC8qIGNyeXB0byAqLywKIAkJCQk1MTVCRTE4
NzFENTRGNURCMDBERDdDNjggLyogZ2FtZXBhZCAqLywKIAkJCQlCMkEwMTU5MTBBRjZDRDUzMDA2
QkNFMEUgLyogZ3JhcGhpY3MgKi8sCiAJCQkJQTU5RTNDMUIxMTU4MEYzNDAwNzI5MjhFIC8qIGlv
cyAqLywKQEAgLTIyOTQxLDIzICsyMjk1NSw2IEBACiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJQ0U1MEQ4Q0UxQzg5MzJFRDAwNzJFQTVBIC8qIGNy
eXB0byAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJQ0U1
MEQ4Q0YxQzg5MzJGQjAwNzJFQTVBIC8qIGNvbW1vbmNyeXB0byAqLywKLQkJCQlFMUZFMTM2NjE4
MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IGNy
eXB0bzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCUNFNTBEOENGMUM4OTMy
RkIwMDcyRUE1QSAvKiBjb21tb25jcnlwdG8gKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJ
CWNoaWxkcmVuID0gKAotCQkJCUUxRkUxMzYyMTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdl
c3RDb21tb25DcnlwdG8uY3BwICovLAotCQkJKTsKLQkJCXBhdGggPSBjb21tb25jcnlwdG87Ci0J
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQlERjlBRkQ2RjEzRkMzMUIwMDAxNUZF
QjcgLyogb2JqYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC0yNTI1MCw3ICsyNTI0Nyw2IEBACiAJCQkJRTE5QUMzRjExODI0REM3OTAwMzQ5NDI2IC8qIENy
eXB0b0FsZ29yaXRobVNIQTI1Ni5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5QUMzRjMxODI0REM3
OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTE5QUMzRjUxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMi5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJRTFGRTEzNjcxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTE1N0E4RTUxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tl
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNUY4NEUxODI0Mjg5RDAwRDg0Q0Q5IC8qIENyeXB0
b0tleUFFUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNUY4NUUxODJDMkRGNjAwRDg0Q0Q5IC8q
IENyeXB0b0tleURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjg1NTYsNiArMjg1NTIsMTIgQEAK
IAkJCW1haW5Hcm91cCA9IDA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi87CiAJ
CQlwcm9kdWN0UmVmR3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMg
Ki87CiAJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJlZmVyZW5jZXMgPSAoCisJ
CQkJeworCQkJCQlQcm9kdWN0R3JvdXAgPSAxQzA5RDA0QzFFMzFDMzI4MDA3MjVGMTggLyogUHJv
ZHVjdHMgKi87CisJCQkJCVByb2plY3RSZWYgPSAxQzA5RDA0QjFFMzFDMzI4MDA3MjVGMTggLyog
UEFMLnhjb2RlcHJvaiAqLzsKKwkJCQl9LAorCQkJKTsKIAkJCXByb2plY3RSb290ID0gIiI7CiAJ
CQl0YXJnZXRzID0gKAogCQkJCTQxODE2Rjc5MTM4NTlDNTUwMDU3QUFBNCAvKiBBbGwgKi8sCkBA
IC0yODU2Nyw2ICsyODU2OSwxNiBAQAogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAq
LwogCisvKiBCZWdpbiBQQlhSZWZlcmVuY2VQcm94eSBzZWN0aW9uICovCisJCTFDMDlEMDUwMUUz
MUMzMjkwMDcyNUYxOCAvKiBsaWJQQUwuYSAqLyA9IHsKKwkJCWlzYSA9IFBCWFJlZmVyZW5jZVBy
b3h5OworCQkJZmlsZVR5cGUgPSBhcmNoaXZlLmFyOworCQkJcGF0aCA9IGxpYlBBTC5hOworCQkJ
cmVtb3RlUmVmID0gMUMwOUQwNEYxRTMxQzMyOTAwNzI1RjE4IC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKKwkJCXNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7CisJCX07CisvKiBF
bmQgUEJYUmVmZXJlbmNlUHJveHkgc2VjdGlvbiAqLworCiAvKiBCZWdpbiBQQlhSZXNvdXJjZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KIAkJOTNGMTk5RkQwODI0NUU1OTAwMUU5QUJDIC8qIFJlc291
cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7CkBAIC0yOTA5Myw3
ICsyOTEwNSw2IEBACiAJCQkJRTE5QUMzRjAxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29y
aXRobVNIQTI1Ni5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTlBQzNGMjE4MjREQzc5MDAzNDk0
MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOUFD
M0Y0MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJRTFGRTEzNjQxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1v
bkNyeXB0by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTU3QThFNDE4MTczQTNBMDA5RjgyMUQg
LyogQ3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjVGODREMTgyNDI4OUQwMEQ4
NENEOSAvKiBDcnlwdG9LZXlBRVMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNUY4NjMxODJD
MzAzQTAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEExLmNwcAppbmRleCAwYzhkZmRkZDFlMGE3YWRiYWExOGVmOWM1MTJhNzI4
Yzk0MmFkZTI5Li5hZGRmODRkMmIyM2YyNTdlZjhmYzk2NmJkZWExOWY3MGM5ZWQ0ZjdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEExLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEExLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQ
VE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9j
cnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyAr
NDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTE6Omlk
ZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChWZWN0
b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRp
b25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0
b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgYXV0
byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcg
QEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVz
c2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWwKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxn
b3JpdGhtU0hBMTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAg
IGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5j
cHAKaW5kZXggNmNhMWFlZTVhNmJiN2Q4M2NhMDU2NDE5ZGNiZWJkNTE3YjlkNjE4NS4uNjM0YzVh
M2Q5M2I4MmZhNmIxZWNiNDUyZjU1MmQwNjg2Njg1ZjYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3Bw
CkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1
ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9E
aWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjppZGVudGlmaWVyKCkg
Y29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhf
dD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFj
ayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
b3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRvIGRpZ2Vz
dCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzIyNCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2Fn
ZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRo
bVNIQTIyNDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0
ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQp
OworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAg
ICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYu
Y3BwCmluZGV4IDczNjYwZjU5OWFmMzdjYTlkZTlhMjE5ZTNmNGYyMzQ4ZjQ2YWMyYjMuLjBlYTA1
MDZiOTRhM2FiMmUzOWRiM2YyNTEwMzRmYTc0ZWM2M2FjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNw
cApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNs
dWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRv
RGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6aWRlbnRpZmllcigp
IGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4
X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdl
c3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yNTYpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3Nh
Z2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0
aG1TSEEyNTY6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAg
ICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
LmNwcAppbmRleCBjOTc3NTJkODFjMDA1NDIzOWIwYjg4YzYwYWEzNDNlZmE2NWUxNDc3Li44OGYz
MTM2Mjk2YjA0YzUzODM4NjAzOWUyOTRlOWM0MzkzZTRhZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5j
cHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5j
bHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0
b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmlkZW50aWZpZXIo
KSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rvcjx1aW50
OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxi
YWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOworICAgIGF1dG8gZGln
ZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMzg0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNz
YWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3Jp
dGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4
NCk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAg
ICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUx
Mi5jcHAKaW5kZXggMzNlNDgzZGExNWQxMGNjZGI3M2VlMzhmOTNhMTNkNmQ3MTg3MDJlZi4uMDEw
M2YwOTUzNzJiZjM1OTQ2YzdjZDAzZGY1OWMxOWIxZWIwYzc5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIu
Y3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2lu
Y2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9Dcnlw
dG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjppZGVudGlmaWVy
KCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0b3I8dWlu
dDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxs
YmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICBhdXRvIGRp
Z2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzUxMik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2Fs
bGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBA
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVz
c2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29y
aXRobVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81
MTIpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAg
ICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNU1hYy5jcHAKaW5kZXggZjZhYjdhMjE1NTUzYjZjYmZiNDczMDM1NWNmZTUz
NTJhOWQwMjM1NS4uMGYwYmY5MzEzZmFiNWNhNTRlZDY0NjliZjM4NmQ4MjlkZTkxZWE5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKQEAgLTMwLDI2ICszMCwyNiBAQAogCiAj
aW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgog
I2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9D
cnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RkOjpvcHRp
b25hbDxDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQogewogICAgIHN3aXRjaCAoaGFzaEZ1
bmN0aW9uKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKLSAg
ICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsKKyAgICAgICAgcmV0
dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOwogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjI0OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzIyNDsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
NjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7
CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgotICAgICAgICBy
ZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVybiBQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfNTEyOworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzUxMjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1
aW50OF90Pj4gc2lnblJTQVNTQV9QS0NTMV92MV81KENyeXB0b0FsZ29yaXRobUlkZW50aWYKICAg
ICBhdXRvIGNyeXB0b0RpZ2VzdEFsZ29yaXRobSA9IFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29y
aXRobShoYXNoKTsKICAgICBpZiAoIWNyeXB0b0RpZ2VzdEFsZ29yaXRobSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKKyAgICBhdXRvIGRpZ2Vz
dCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CiAg
ICAgaWYgKCFkaWdlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJv
ciB9OwogICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YSwgZGF0YUxlbmd0aCk7CkBAIC05Myw3ICs5
Myw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiB2ZXJpZnlSU0FTU0FfUEtDUzFfdjFfNShD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsCiAgICAgYXV0byBjcnlwdG9EaWdlc3RBbGdv
cml0aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaCk7CiAgICAgaWYgKCFj
cnlwdG9EaWdlc3RBbGdvcml0aG0pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRp
b25FcnJvciB9OwotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0
b0RpZ2VzdEFsZ29yaXRobSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6
Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOwogICAgIGlmICghZGlnZXN0KQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICBkaWdlc3QtPmFkZEJ5
dGVzKGRhdGEsIGRhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYTE1N2E4NGYwZTY1Zjg1ZjljMDQ4ZTUxYzFkMTkwZTJi
ODdkYmYwYS4uZGY3N2NiNGM5YjVjOTFkNDRlNzMzNzk5MmQ3ZDhiYTdkNzY1MzBiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00NSw3
ICs0NSw2IEBACiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkNvb2tpZS5o
IgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2lu
Y2x1ZGUgIkRPTUVkaXRvci5oIgogI2luY2x1ZGUgIkRPTVBhdGNoU3VwcG9ydC5oIgogI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgpAQCAtOTYsNiArOTUsNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9J
ZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CisjaW5jbHVk
ZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVDb250
ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
VGV4dEVuY29kaW5nIGRvY3VtZW50RW5jb2RpbmcgPSBlbGVtZW50LmRvY3VtZW50KCkudGV4dEVu
Y29kaW5nKCk7CiAgICAgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZ1RvVXNlID0gZG9jdW1l
bnRFbmNvZGluZy5pc1ZhbGlkKCkgPyBkb2N1bWVudEVuY29kaW5nIDogVVRGOEVuY29kaW5nKCk7
CiAgICAgQ1N0cmluZyBjb250ZW50ID0gZW5jb2RpbmdUb1VzZS5lbmNvZGUoVGV4dE5vZGVUcmF2
ZXJzYWw6OmNvbnRlbnRzQXNTdHJpbmcoZWxlbWVudCksIEVudGl0aWVzRm9yVW5lbmNvZGFibGVz
KTsKLSAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
Nik7CiAgICAgY3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250ZW50LmRhdGEoKSwgY29udGVudC5s
ZW5ndGgoKSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRpZ2VzdCA9IGNyeXB0b0RpZ2VzdC0+Y29t
cHV0ZUhhc2goKTsKICAgICByZXR1cm4gbWFrZVN0cmluZygic2hhMjU2LSIsIGJhc2U2NEVuY29k
ZShkaWdlc3QuZGF0YSgpLCBkaWdlc3Quc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA1MzY3MWU1MGE3NGI3MDNm
ZDUxY2IzOWQ5NWQ1NTBiNjMwMjZiMjY5Li45NmZhN2EyMzFiMTgxMzFkMjM2Y2MxOGFmOWJhZjlm
MmY4ZWEzNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJp
dHlQb2xpY3lIYXNoLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmgi
CiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oIgotI2luY2x1ZGUg
IkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC01Nyw2ICs1Niw3IEBA
CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPGluc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5j
bHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAtMzAxLDE4ICszMDEs
MTggQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbFBvbGljaWVzQWxsb3coVmlvbGF0
ZWREaXJlY3RpdmVDYWxsYmFjayYmIGNhbGxiYWMKICAgICByZXR1cm4gaXNBbGxvd2VkOwogfQog
Ci1zdGF0aWMgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0o
Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0aG0pCitzdGF0aWMgUEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSB0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShDb250ZW50
U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtIGFsZ29yaXRobSkKIHsKICAgICBzd2l0Y2ggKGFs
Z29yaXRobSkgewogICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6
U0hBXzI1NjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsK
ICAgICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8zODQ6Ci0g
ICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKKyAgICAgICAg
cmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CiAgICAgY2FzZSBD
b250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICByZXR1
cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgICAgIHJldHVybiBQQUw6
OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7
CisgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4KQEAgLTMzMyw3ICszMzMsNyBAQCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6Okhhc2hJbkVuZm9yY2VkQW5kUmVwb3J0T25seVBvbGljaWVzUGFpciBD
b250ZW50U2VjdXJpdHlQbwogICAgIGJvb2wgZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzID0g
ZmFsc2U7CiAgICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9ubHlQb2xpY2llcyA9IGZhbHNlOwog
ICAgIGZvciAoYXV0byBhbGdvcml0aG0gOiBhbGdvcml0aG1zKSB7Ci0gICAgICAgIGF1dG8gY3J5
cHRvRGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0o
YWxnb3JpdGhtKSk7CisgICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdl
c3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAgICAgICAg
Y3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250ZW50Q1N0cmluZy5kYXRhKCksIGNvbnRlbnRDU3Ry
aW5nLmxlbmd0aCgpKTsKICAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCBoYXNoID0g
eyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogICAgICAgICBpZiAo
IWZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyAmJiBhbGxQb2xpY2llc1dpdGhEaXNwb3NpdGlv
bkFsbG93KENvbnRlbnRTZWN1cml0eVBvbGljeTo6RGlzcG9zaXRpb246OkVuZm9yY2UsIHN0ZDo6
Zm9yd2FyZDxQcmVkaWNhdGU+KHByZWRpY2F0ZSksIGhhc2gpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzMWYwNzVhYTM3Y2IzNDYyMDk4NDdhNTk5ZTFmNTQyODRmOWYzODE5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENyeXB0b0RpZ2VzdF9oCi0jZGVmaW5lIENyeXB0
b0RpZ2VzdF9oCi0KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENv
bnRleHQ7Ci0KLWNsYXNzIENyeXB0b0RpZ2VzdCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q3J5cHRvRGlnZXN0KTsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7Ci0gICAg
ICAgIFNIQV8xLAotICAgICAgICBTSEFfMjI0LAotICAgICAgICBTSEFfMjU2LAotICAgICAgICBT
SEFfMzg0LAotICAgICAgICBTSEFfNTEyLAotICAgIH07Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9EaWdlc3Q+IGNyZWF0ZShBbGdvcml0aG0pOwotICAgIH5DcnlwdG9EaWdlc3Qo
KTsKLQotICAgIHZvaWQgYWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgp
OwotICAgIFZlY3Rvcjx1aW50OF90PiBjb21wdXRlSGFzaCgpOwotCi1wcml2YXRlOgotICAgIENy
eXB0b0RpZ2VzdCgpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+
IG1fY29udGV4dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENy
eXB0b0RpZ2VzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8v
Y29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzZmZjNTYwNTIyNmI2NGI0OTM3M2Jl
YTY4NWU5MjNmMDE5OWJiNGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9Dcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0
LmgiCi0KLSNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKLSAgICB2b2lkKiBjY0NvbnRleHQ7Ci19OwotCi1p
bmxpbmUgQ0NfU0hBMV9DVFgqIHRvU0hBMUNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29u
dGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTFfQ1RYKj4o
Y29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTIyNENv
bnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4
dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19
Ci1pbmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyNTZDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRl
eHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NI
QTI1Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTUxMl9DVFgq
IHRvU0hBMzg0Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFT
U0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8z
ODQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2ND
b250ZXh0KTsKLX0KLWlubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTUxMkNvbnRleHQoQ3J5cHRv
RGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGht
ID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci0KLUNyeXB0b0Rp
Z2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29u
dGV4dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLSAgICBzd2l0
Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzE6Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQo
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjI0OgotICAgICAgICBkZWxldGUgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjU2OgotICAgICAgICBkZWxldGUgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
OgotICAgICAgICBkZWxldGUgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgot
ICAgICAgICBkZWxldGUgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci19Ci0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5
cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQotewot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0
KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3JpdGhtOwotCi0gICAg
c3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMTogewotICAgICAgICBDQ19TSEExX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEExX0NUWDsK
LSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAg
IENDX1NIQTFfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0g
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDogewotICAgICAgICBDQ19T
SEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+
bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEEyMjRfSW5pdChj
b250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogewotICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250
ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0Nv
bnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEEyNTZfSW5pdChjb250ZXh0KTsKLSAgICAg
ICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NDogewotICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NI
QTUxMl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0
OwotICAgICAgICBDQ19TSEEzODRfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2Vz
dDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogewot
ICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7Ci0gICAg
ICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19T
SEE1MTJfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAg
fQotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNp
emVfdCBsZW5ndGgpCi17Ci0gICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewotICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICBDQ19TSEExX1Vw
ZGF0ZSh0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoK
LSAgICAgICAgQ0NfU0hBMjI0X1VwZGF0ZSh0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgp
KSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICBDQ19TSEEyNTZfVXBkYXRlKHRvU0hBMjU2
Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIEND
X1NIQTM4NF9VcGRhdGUodG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBs
ZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzUxMjoKLSAgICAgICAgQ0NfU0hBNTEyX1VwZGF0ZSh0b1NIQTUxMkNvbnRleHQobV9j
b250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19
Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBW
ZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0p
IHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKLSAgICAgICAgcmVz
dWx0LnJlc2l6ZShDQ19TSEExX0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEExX0ZpbmFs
KHJlc3VsdC5kYXRhKCksIHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAg
ICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjI0X0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19T
SEEyMjRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQo
KSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjU2OgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsK
LSAgICAgICAgQ0NfU0hBMjU2X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjU2Q29udGV4dCht
X2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEzODRfRElH
RVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTM4NF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NI
QTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUo
Q0NfU0hBNTEyX0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEE1MTJfRmluYWwocmVzdWx0
LmRhdGEoKSwgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9Dcnlw
dG9EaWdlc3RHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2djcnlw
dC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
YTNjOGJmMjQzZGMwNzJhYmJhODQ2MTg5NzMzYTBmNTNmZDZjMDRlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqIENvcHly
aWdodCAoQykgMjAxNiBTb2Z0QXRIb21lCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPGdjcnlwdC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKLSAgICBpbnQg
YWxnb3JpdGhtOwotICAgIGdjcnlfbWRfaGRfdCBtZDsKLX07Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5
cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKLXsK
LX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLX0KLQotc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG0gYWxnb3JpdGhtKQotewotICAgIGludCBnY3J5cHRBbGdvcml0aG07Ci0KLSAgICBzd2l0
Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
OgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTE7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIGdj
cnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjI0OwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICBnY3J5cHRBbGdvcml0
aG0gPSBHQ1JZX01EX1NIQTI1NjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9N
RF9TSEEzODQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV81MTI6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBNTEyOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0
PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29y
aXRobSA9IGdjcnlwdEFsZ29yaXRobTsKLQotICAgIGdjcnlfbWRfb3BlbigmZGlnZXN0LT5tX2Nv
bnRleHQtPm1kLCBnY3J5cHRBbGdvcml0aG0sIDApOwotICAgIGlmICghZGlnZXN0LT5tX2NvbnRl
eHQtPm1kKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBkaWdlc3Q7Ci19
Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90
IGxlbmd0aCkKLXsKLSAgICBnY3J5X21kX3dyaXRlKG1fY29udGV4dC0+bWQsIGlucHV0LCBsZW5n
dGgpOwotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17
Ci0gICAgaW50IGRpZ2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFs
Z29yaXRobSk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW4pOwotCi0gICAg
Z2NyeV9tZF9maW5hbChtX2NvbnRleHQtPm1kKTsKLSAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSwg
Z2NyeV9tZF9yZWFkKG1fY29udGV4dC0+bWQsIDApLCBkaWdlc3RMZW4pOwotICAgIGdjcnlfbWRf
Y2xvc2UobV9jb250ZXh0LT5tZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlw
dG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg5YTVkODFmMmI0YmUyNzMyY2VlM2U1MjYzMzg2ZWQ1OWNiMjE0ZGUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTAyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlh
IFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8Z251dGxzL2dudXRscy5o
PgotI2luY2x1ZGUgPGdudXRscy9jcnlwdG8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1f
dCBhbGdvcml0aG07Ci0gICAgZ251dGxzX2hhc2hfaGRfdCBoYXNoOwotfTsKLQotQ3J5cHRvRGln
ZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250
ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotICAgIGdudXRs
c19oYXNoX2RlaW5pdChtX2NvbnRleHQtPmhhc2gsIDApOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bSBhbGdvcml0aG0pCi17Ci0gICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBnbnV0bHNBbGdv
cml0aG07Ci0KLSAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8xOiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19E
SUdfU0hBMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yMjQ6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJ
R19TSEEyMjQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2OiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19E
SUdfU0hBMjU2OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzM4NDogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNf
RElHX1NIQTM4NDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTI6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExT
X0RJR19TSEE1MTI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0KLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGln
ZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdudXRsc0FsZ29yaXRobTsKLQotICAgIGludCBy
ZXQgPSBnbnV0bHNfaGFzaF9pbml0KCZkaWdlc3QtPm1fY29udGV4dC0+aGFzaCwgZ251dGxzQWxn
b3JpdGhtKTsKLSAgICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgcmV0dXJuIGRpZ2VzdDsKLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6
OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGdudXRs
c19oYXNoKG1fY29udGV4dC0+aGFzaCwgaW5wdXQsIGxlbmd0aCk7Ci19Ci0KLVZlY3Rvcjx1aW50
OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBWZWN0b3I8dWludDhfdD4g
cmVzdWx0OwotICAgIGludCBkaWdlc3RMZW4gPSBnbnV0bHNfaGFzaF9nZXRfbGVuKG1fY29udGV4
dC0+YWxnb3JpdGhtKTsKLSAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbik7Ci0KLSAgICBnbnV0
bHNfaGFzaF9vdXRwdXQobV9jb250ZXh0LT5oYXNoLCByZXN1bHQuZGF0YSgpKTsKLQotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZjYzE5MmMyYjMwMzk1OTQzMGYyNDljNzM2MzRi
MTM5YzdhOGE0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPHdpbmNyeXB0
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQg
ewotICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKLSAgICBIQ1JZUFRQUk9W
IGhDb250ZXh0IHsgMCB9OwotICAgIEhDUllQVEhBU0ggaEhhc2ggeyAwIH07Ci19OwotCi1Dcnlw
dG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2Vz
dENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci0gICAg
aWYgKEhDUllQVEhBU0ggaEhhc2ggPSBtX2NvbnRleHQtPmhIYXNoKQotICAgICAgICBDcnlwdERl
c3Ryb3lIYXNoKGhIYXNoKTsKLSAgICBpZiAoSENSWVBUUFJPViBoQ29udGV4dCA9IG1fY29udGV4
dC0+aENvbnRleHQpCi0gICAgICAgIENyeXB0UmVsZWFzZUNvbnRleHQoaENvbnRleHQsIDApOwot
fQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShB
bGdvcml0aG0gYWxnb3JpdGhtKQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+
IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3Jp
dGhtID0gYWxnb3JpdGhtOwotICAgIGlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmZGlnZXN0LT5t
X2NvbnRleHQtPmhDb250ZXh0LCBudWxscHRyLCBudWxscHRyIC8qIHVzZSBkZWZhdWx0IHByb3Zp
ZGVyICovLCBQUk9WX1JTQV9BRVMsIENSWVBUX1ZFUklGWUNPTlRFWFQpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBib29sIHN1Y2NlZWRlZCA9IGZhbHNlOwotICAgIHN3aXRjaCAoYWxn
b3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKLSAg
ICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29u
dGV4dCwgQ0FMR19TSEExLCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTY6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250
ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMjU2LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhI
YXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRp
Z2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMzg0LCAwLCAwLCAmZGlnZXN0LT5t
X2NvbnRleHQtPmhIYXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRD
cmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfNTEyLCAwLCAw
LCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IH0KLSAgICBpZiAoc3VjY2VlZGVkKQotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIHJldHVy
biBudWxscHRyOwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCog
aW5wdXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgaWYgKCFpbnB1dCB8fCAhbGVuZ3RoKQotICAg
ICAgICByZXR1cm47Ci0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRIYXNoRGF0YShtX2NvbnRleHQt
PmhIYXNoLCByZWludGVycHJldF9jYXN0PGNvbnN0IEJZVEUqPihpbnB1dCksIGxlbmd0aCwgMCkp
OwotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXI7
Ci0gICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSA9IHNpemVvZihkaWdlc3RMZW5ndGhC
dWZmZXIpOwotCi0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0
LT5oSGFzaCwgSFBfSEFTSFNJWkUsIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+KCZkaWdlc3RMZW5n
dGhCdWZmZXIpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSwgMCkpOwotICAgIHJlc3VsdC5yZXNp
emUoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFz
aFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hWQUwsIHJlc3VsdC5kYXRhKCksICZkaWdl
c3RMZW5ndGhCdWZmZXIsIDApKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuc2l6ZSgpID09
IGRpZ2VzdExlbmd0aEJ1ZmZlcik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA4NTJiOWI4YmVlYmZhMTFi
Y2YzMTQ1ZmE2YmI2MWMyNTA5MzBiZjM4Li4yNmRiN2YyN2QwYTYxZTljOTA5NTA4MmI5YTFjZmJl
NmY4ZDI3ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2lu
Y2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CkBAIC0zOCw2ICszNyw3IEBACiAjaW5jbHVkZSAiU291cE5ldHdvcmtQcm94eVNldHRpbmdzLmgi
CiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNp
bmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QmFzZTY0Lmg+CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghY2VydGlm
aWNhdGVEYXRhKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgICAgIGF1dG8g
ZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8yNTYpOworICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUo
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgICAgIGRpZ2VzdC0+
YWRkQnl0ZXMoY2VydGlmaWNhdGVEYXRhLT5kYXRhLCBjZXJ0aWZpY2F0ZURhdGEtPmxlbik7CiAK
ICAgICAgICAgYXV0byBoYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlIGIvU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtl
CmluZGV4IDI5YTA5NjkwMzhmYWE3NDRlMWE4YzU4ZjM1NmFkMDczZjAwNTI1YmQuLjUxMzBmZmNi
Y2M3YzljZTc1MTRhZjRkNTUzYmQ4YTRmMDUwMTQ1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFr
ZS9XZWJLaXRGUy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UKQEAgLTEw
LDYgKzEwLDkgQEAgZW5kaWYgKCkKIGlmIChOT1QgV0VCQ09SRV9ESVIpCiAgICAgc2V0KFdFQkNP
UkVfRElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJDb3JlIikKIGVuZGlmICgpCitp
ZiAoTk9UIFBBTF9ESVIpCisgICAgc2V0KFBBTF9ESVIgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291
cmNlL1dlYkNvcmUvUEFMIikKK2VuZGlmICgpCiBpZiAoTk9UIFdFQktJVF9ESVIpCiAgICAgc2V0
KFdFQktJVF9ESVIgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNlL1dlYktpdCIpCiBlbmRpZiAo
KQpkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAppbmRleCBiZjNj
NGVmYWIwZWFmMmNhYzI2YWU3NjZjNzY3YzFhNjY5OWI3YjQ0Li5iYjMzMThjMmI2NTFmZmY2YjNh
OWQxN2ZiZDNkNjJmMTI1NzEyYTI2IDEwMDY0NAotLS0gYS9DTWFrZUxpc3RzLnR4dAorKysgYi9D
TWFrZUxpc3RzLnR4dApAQCAtMTE0LDYgKzExNCw3IEBAIGVsc2UgKCkKIGVuZGlmICgpCiAKIHNl
dChKYXZhU2NyaXB0Q29yZV9MSUJSQVJZX1RZUEUgU0hBUkVEKQorc2V0KFBBTF9MSUJSQVJZX1RZ
UEUgU1RBVElDKQogc2V0KFdlYktpdF9MSUJSQVJZX1RZUEUgU0hBUkVEKQogc2V0KFdlYktpdDJf
TElCUkFSWV9UWVBFIFNIQVJFRCkKIHNldChXZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFSWV9UWVBF
IFNUQVRJQykKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA2NDk0NWE0
NzYyYzFmM2U5ZWNmZDRiOTIwZDkwY2EyMWZhMzFiNGU2Li40ZTljNDJhMGEzNDJmMTFjOWYzMGY4
NjI5OWNhZDkzMGI3Mjk0YjUxIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDEtMTkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUgUGxhdGZvcm0gQWJzdHJh
Y3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU291cmNlL0NNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZToKKwogMjAxNy0wMS0x
NyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIEVOQUJM
RShVU0VSX1RJTUlORykgTm90IERlZmluZWQgZm9yIEFwcGxlIFdpbmRvd3Mgb3IgT1MgWCBQb3J0
cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299330</attachid>
            <date>2017-01-20 00:28:23 -0800</date>
            <delta_ts>2017-01-20 00:33:40 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-143358-20170120002622.patch</filename>
            <type>text/plain</type>
            <size>93170</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQwZTFlNjFkMTIzNWZm
ZDcxZmRlMGNlMGQyYWI5Y2JmMDM2MmI5Mi4uYTU3NmU4MWRjMDMzZjJiMzFmNTliODBiNGE0Y2U5
N2Q1ZDU3OTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTAxLTE5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNv
cmUueGNjb25maWc6CisgICAgICAgICogUEFML0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6
IEFkZGVkLgorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25m
aWc6IEFkZGVkLgorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIFBBTC9NYWtlZmlsZTogQWRkZWQuCisgICAgICAgICogUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvY29uZmlnLmg6
IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwvQ01ha2VMaXN0cy50eHQ6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9wYWwvUGxhdGZvcm1FZmwuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwv
UGxhdGZvcm1HVEsuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwvUGxhdGZvcm1NYWMu
Y21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwvUGxhdGZvcm1XaW4uY21ha2U6IEFkZGVk
LgorICAgICAgICAqIFBBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oLgorICAgICAgICAq
IFBBTC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0
by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwLgorICAgICAgICAqIFBBTC9wYWwvY3J5cHRv
L2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwLgorICAgICAg
ICAqIFBBTC9wYWwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RH
bnVUTFMuY3BwLgorICAgICAgICAqIFBBTC9wYWwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4u
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9Dcnlw
dG9EaWdlc3RXaW4uY3BwLgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAg
ICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdCk6
CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KToKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOgorICAgICAgICAqIGNy
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
eXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjpzaWduUlNBU1NBX1BLQ1Mx
X3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFzaCk6CisgICAgICAgICogcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5
cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhv
c3RUTFNDZXJ0aWZpY2F0ZVNldDo6Y29tcHV0ZUNlcnRpZmljYXRlSGFzaCk6CisKIDIwMTctMDEt
MTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBpdGVyYWJsZTw+
IHNob3VsZCBiZSBlbmFibGVkIG9uIFdLMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiNTA0M2M1
MDc1NmE0NGY4NDZiM2M2NWNiMmZhNTU2NjQwNGMxNTM0Li42OGE1OTczOWNmMWQ4NTgxNjkzYThj
MTQ3ZDM4NWI5YzYyN2FmY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMSw2ICsxLDcgQEAK
IGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjguMTIpCiBpbmNsdWRlKFdlYktpdENv
bW1vbikKIHNldF9wcm9wZXJ0eShESVJFQ1RPUlkgLiBQUk9QRVJUWSBGT0xERVIgIldlYkNvcmUi
KQorYWRkX3N1YmRpcmVjdG9yeShQQUwvcGFsKQogCiBzZXQoV2ViQ29yZV9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0iCkBAIC0yOTQ1LDYgKzI5NDYsNyBAQCBz
ZXQoV2ViQ29yZV9QTFVHX0lOU19SRVNPVVJDRVMKIHNldChXZWJDb3JlX0xJQlJBUklFUwogICAg
ICR7SUNVX0xJQlJBUklFU30KICAgICBKYXZhU2NyaXB0Q29yZSR7REVCVUdfU1VGRklYfQorICAg
IFBBTCR7REVCVUdfU1VGRklYfQogKQogCiBpZiAoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVE
SUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhj
Y29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZwpp
bmRleCA2YjE5YWNmNjQ1Y2Q4OTk2ZDYwM2I0YTAwMTQ0ZWFiODZkYzhiNDM3Li5kNWJmMjk4NTZl
MDdlMzEyNjU5N2I2ZTczNDExMDk0MDk0ZDAzZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Nv
bmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKQEAgLTQ2LDcgKzQ2LDcgQEAgT1RIRVJfQ1BM
VVNQTFVTRkxBR1MgPSAkKE9USEVSX0NGTEFHUyk7CiAKIFdFQktJVEFERElUSU9OU19IRUFERVJf
U0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL1dl
YktpdEFkZGl0aW9ucyAkKFNES1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9u
czsKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9IEZvcndhcmRpbmdIZWFkZXJzIGljdSAvdXNyL2lu
Y2x1ZGUvbGlieHNsdCAvdXNyL2luY2x1ZGUvbGlieG1sMiAiJChCVUlMVF9QUk9EVUNUU19ESVIp
L0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUiICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2Fs
L2luY2x1ZGUiICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoSEVBREVS
X1NFQVJDSF9QQVRIUyk7CitIRUFERVJfU0VBUkNIX1BBVEhTID0gUEFMIEZvcndhcmRpbmdIZWFk
ZXJzIGljdSAvdXNyL2luY2x1ZGUvbGlieHNsdCAvdXNyL2luY2x1ZGUvbGlieG1sMiAiJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUiICIkKEJVSUxUX1BST0RVQ1RT
X0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hf
UEFUSFMpICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CiBJTkZPUExJU1RfRklMRSA9IEluZm8ucGxp
c3Q7CiBJTlNUQUxMX1BBVEggPSAkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29y
a3M7CiBJTlNUQUxMX1BBVEhbc2RrPW1hY29zeCpdID0gJChXRUJDT1JFX0ZSQU1FV09SS1NfRElS
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9CYXNlLnhj
Y29uZmlnIGIvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDRlMjUyYmNjY2RkOTUwNTM0MTkxZDlhZGQ1NzQwYmFmOWU0N2NhMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9CYXNlLnhj
Y29uZmlnCkBAIC0wLDAgKzEsMjQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8v
IGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8g
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKworI2luY2x1ZGUgIi4uLy4uL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWciCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhj
Y29uZmlnIGIvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54
Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MmIwOGJlMGVlMTJlMTU2YmVmODQ0MGMxNjM3MTQzYTAzNDU3
YzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25z
L0RlYnVnUmVsZWFzZS54Y2NvbmZpZwpAQCAtMCwwICsxLDI0IEBACisvLyBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
Ly8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNsdWRlICIuLi8uLi9Db25maWd1cmF0aW9ucy9EZWJ1
Z1JlbGVhc2UueGNjb25maWciCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmln
dXJhdGlvbnMvUEFMLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25z
L1BBTC54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTUyYzExZGRiMzQwYzViZDUzY2UzNjJmNTMzNDc2
ZGU5ZGRhNDk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3Vy
YXRpb25zL1BBTC54Y2NvbmZpZwpAQCAtMCwwICsxLDM4IEBACisvLyBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8g
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisKKyNpbmNsdWRlICIuLi8uLi9Db25maWd1cmF0aW9ucy9XZWJDb3Jl
LnhjY29uZmlnIgorCitJTlNUQUxMX1BBVEggPSAkKElOU1RBTExfUEFUSF8kKENPTkZJR1VSQVRJ
T04pKTsKK0lOU1RBTExfUEFUSF9Qcm9kdWN0aW9uID0gL3Vzci9sb2NhbC9saWI7CisKK1NLSVBf
SU5TVEFMTCA9ICQoU0tJUF9JTlNUQUxMXyQoRk9SQ0VfVE9PTF9JTlNUQUxMKSk7CitTS0lQX0lO
U1RBTExfID0gWUVTOworU0tJUF9JTlNUQUxMX05PID0gWUVTOworU0tJUF9JTlNUQUxMX1lFUyA9
IE5POworCitQUk9EVUNUX05BTUUgPSBQQUw7CitFWEVDVVRBQkxFX1BSRUZJWCA9IGxpYjsKK0VY
UE9SVEVEX1NZTUJPTFNfRklMRSA9IDsKKworR0NDX1BSRUZJWF9IRUFERVIgPSA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvTWFrZWZpbGUgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvTWFr
ZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODUzNDY4MTgzODBjYTg4OTU3MDA2YTRkNzlkYzA2ODYyMjBiMmZk
NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9NYWtlZmlsZQpAQCAtMCww
ICsxIEBACitpbmNsdWRlIC4uLy4uL01ha2VmaWxlLnNoYXJlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3M2ZkOGIy
YTExMzA3NGZiN2Q3MGMwMzBiZTA2ODUzMzZkODM0YjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTAsMCArMSwy
NDMgQEAKKy8vICEkKlVURjgqJCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9
IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA0NjsKKwlvYmplY3RzID0geworCisvKiBCZWdpbiBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkxQzA5RDA1MzFFMzFDNDQxMDA3MjVGMTggLyogQ3J5
cHRvRGlnZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzA5RDA1MjFFMzFDNDQxMDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0LmggKi87IH07CisJCTFD
MDlEMDU2MUUzMUM0NjUwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOUQwNTUxRTMx
QzQ2NTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi87IH07CisJCTFD
MDlEMDU4MUUzMUM1N0UwMDcyNUYxOCAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDlEMDU3MUUzMUM1N0UwMDcyNUYxOCAvKiBjb25m
aWcuaCAqLzsgfTsKKy8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQ
QlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJMUMwOUQwM0QxRTMxQzMyODAwNzI1RjE4IC8q
IGxpYlBBTC5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJQQUwuYTsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMUMwOUQwNTIxRTMxQzQ0MTAwNzI1RjE4
IC8qIENyeXB0b0RpZ2VzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlw
dG9EaWdlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwOUQwNTUxRTMxQzQ2
NTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwOyBwYXRo
ID0gY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDMDlEMDU3MUUzMUM1N0UwMDcyNUYxOCAvKiBjb25maWcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFDMDlEMDVEMUUzMUM3N0EwMDcyNUYxOCAvKiBQQUwueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gUEFMLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQzA5RDA2MjFFMzFFQzI4MDA3MjVGMTggLyogRGVidWdSZWxl
YXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFz
ZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwOUQwNjMxRTMxRUMz
MTAwNzI1RjE4IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRo
ID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKy8qIEVuZCBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLworCQkxQzA5RDAzQTFFMzFDMzI4MDA3MjVGMTggLyogRnJhbWV3b3JrcyAq
LyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLworCQkxQzA5
RDAzNDFFMzFDMzI4MDA3MjVGMTggPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTFDMDlEMDVDMUUzMUM3MzMwMDcyNUYxOCAvKiBDb25maWd1cmF0aW9ucyAqLywK
KwkJCQkxQzA5RDA1NzFFMzFDNTdFMDA3MjVGMTggLyogY29uZmlnLmggKi8sCisJCQkJMUMwOUQw
M0YxRTMxQzMyODAwNzI1RjE4IC8qIHBhbCAqLywKKwkJCQkxQzA5RDAzRTFFMzFDMzI4MDA3MjVG
MTggLyogUHJvZHVjdHMgKi8sCisJCQkpOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKKwkJMUMwOUQwM0UxRTMxQzMyODAwNzI1RjE4IC8qIFByb2R1Y3RzICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDAzRDFFMzFDMzI4MDA3MjVG
MTggLyogbGliUEFMLmEgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1Y3RzOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUMwOUQwM0YxRTMxQzMyODAwNzI1RjE4IC8qIHBh
bCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMwOUQw
NTExRTMxQzQxMjAwNzI1RjE4IC8qIGNyeXB0byAqLywKKwkJCSk7CisJCQlwYXRoID0gcGFsOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUMwOUQwNTExRTMxQzQxMjAwNzI1
RjE4IC8qIGNyeXB0byAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJMUMwOUQwNTQxRTMxQzQ1MjAwNzI1RjE4IC8qIGNvbW1vbmNyeXB0byAqLywKKwkJCQkx
QzA5RDA1MjFFMzFDNDQxMDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0LmggKi8sCisJCQkpOworCQkJ
cGF0aCA9IGNyeXB0bzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDMDlE
MDU0MUUzMUM0NTIwMDcyNUYxOCAvKiBjb21tb25jcnlwdG8gKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDU1MUUzMUM0NjUwMDcyNUYxOCAvKiBD
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb21tb25j
cnlwdG87CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzA5RDA1QzFFMzFD
NzMzMDA3MjVGMTggLyogQ29uZmlndXJhdGlvbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDVEMUUzMUM3N0EwMDcyNUYxOCAvKiBQQUwueGNj
b25maWcgKi8sCisJCQkJMUMwOUQwNjIxRTMxRUMyODAwNzI1RjE4IC8qIERlYnVnUmVsZWFzZS54
Y2NvbmZpZyAqLywKKwkJCQkxQzA5RDA2MzFFMzFFQzMxMDA3MjVGMTggLyogQmFzZS54Y2NvbmZp
ZyAqLywKKwkJCSk7CisJCQlwYXRoID0gQ29uZmlndXJhdGlvbnM7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4g
UEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzA5RDAzQjFFMzFDMzI4MDA3MjVG
MTggLyogSGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTFDMDlEMDU4
MUUzMUM1N0UwMDcyNUYxOCAvKiBjb25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTFDMDlEMDUz
MUUzMUM0NDEwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5k
IFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYTmF0aXZlVGFy
Z2V0IHNlY3Rpb24gKi8KKwkJMUMwOUQwM0MxRTMxQzMyODAwNzI1RjE4IC8qIFBBTCAqLyA9IHsK
KwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAx
QzA5RDA0ODFFMzFDMzI4MDA3MjVGMTggLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgIlBBTCIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxQzA5RDAz
OTFFMzFDMzI4MDA3MjVGMTggLyogU291cmNlcyAqLywKKwkJCQkxQzA5RDAzQTFFMzFDMzI4MDA3
MjVGMTggLyogRnJhbWV3b3JrcyAqLywKKwkJCQkxQzA5RDAzQjFFMzFDMzI4MDA3MjVGMTggLyog
SGVhZGVycyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVu
Y2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gUEFMOworCQkJcHJvZHVjdE5hbWUgPSBQQUw7CisJ
CQlwcm9kdWN0UmVmZXJlbmNlID0gMUMwOUQwM0QxRTMxQzMyODAwNzI1RjE4IC8qIGxpYlBBTC5h
ICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0
YXRpYyI7CisJCX07CisvKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJCTFDMDlEMDM1MUUzMUMzMjgwMDcyNUYxOCAvKiBQ
cm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVz
ID0geworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAwODMwOworCQkJCVRhcmdldEF0dHJpYnV0ZXMg
PSB7CisJCQkJCTFDMDlEMDNDMUUzMUMzMjgwMDcyNUYxOCA9IHsKKwkJCQkJCUNyZWF0ZWRPblRv
b2xzVmVyc2lvbiA9IDguMzsKKwkJCQkJCVByb3Zpc2lvbmluZ1N0eWxlID0gQXV0b21hdGljOwor
CQkJCQl9OworCQkJCX07CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFDMDlE
MDM4MUUzMUMzMjgwMDcyNUYxOCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFBy
b2plY3QgIlBBTCIgKi87CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOwor
CQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5n
cyA9IDE7CisJCQlrbm93blJlZ2lvbnMgPSAoCisJCQkJRW5nbGlzaCwKKwkJCQlKYXBhbmVzZSwK
KwkJCQlGcmVuY2gsCisJCQkJR2VybWFuLAorCQkJCVNwYW5pc2gsCisJCQkJRHV0Y2gsCisJCQkJ
SXRhbGlhbiwKKwkJCSk7CisJCQltYWluR3JvdXAgPSAxQzA5RDAzNDFFMzFDMzI4MDA3MjVGMTg7
CisJCQlwcm9kdWN0UmVmR3JvdXAgPSAxQzA5RDAzRTFFMzFDMzI4MDA3MjVGMTggLyogUHJvZHVj
dHMgKi87CisJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJ
CXRhcmdldHMgPSAoCisJCQkJMUMwOUQwM0MxRTMxQzMyODAwNzI1RjE4IC8qIFBBTCAqLywKKwkJ
CSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNv
dXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMUMwOUQwMzkxRTMxQzMyODAwNzI1RjE4IC8q
IFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxQzA5RDA1NjFFMzFD
NDY1MDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9
OworLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENC
dWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkxQzA5RDA0NjFFMzFDMzI4MDA3MjVGMTgg
LyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNjIxRTMxRUMyODAwNzI1RjE4IC8qIERlYnVn
UmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJREVBRF9DT0RF
X1NUUklQUElORyA9ICIkKERFQURfQ09ERV9TVFJJUFBJTkdfZGVidWcpIjsKKwkJCQlERUJVR19E
RUZJTkVTID0gIiQoREVCVUdfREVGSU5FU19kZWJ1ZykiOworCQkJCUdDQ19PUFRJTUlaQVRJT05f
TEVWRUwgPSAiJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX2RlYnVnKSI7CisJCQkJU1RSSVBfSU5T
VEFMTEVEX1BST0RVQ1QgPSAiJChTVFJJUF9JTlNUQUxMRURfUFJPRFVDVF9kZWJ1ZykiOworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMUMwOUQwNDcxRTMxQzMyODAwNzI1RjE4IC8q
IFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNjIxRTMxRUMyODAwNzI1RjE4IC8qIERlYnVn
UmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJU1RSSVBfSU5T
VEFMTEVEX1BST0RVQ1QgPSBOTzsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJ
MUMwOUQwNDkxRTMxQzMyODAwNzI1RjE4IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDMDlEMDVE
MUUzMUM3N0EwMDcyNUYxOCAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMUMwOUQwNEExRTMxQzMyODAwNzI1
RjE4IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNUQxRTMxQzc3QTAwNzI1RjE4IC8q
IFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9
IFJlbGVhc2U7CisJCX07CisJCTFDMDlEMDVBMUUzMUM2RjAwMDcyNUYxOCAvKiBQcm9kdWN0aW9u
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDMDlEMDYzMUUzMUVDMzEwMDcyNUYxOCAvKiBCYXNlLnhjY29uZmln
ICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsK
KwkJfTsKKwkJMUMwOUQwNUIxRTMxQzZGMDAwNzI1RjE4IC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJl
bmNlID0gMUMwOUQwNUQxRTMxQzc3QTAwNzI1RjE4IC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisvKiBF
bmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0NvbmZpZ3Vy
YXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMUMwOUQwMzgxRTMxQzMyODAwNzI1RjE4IC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUEFMIiAqLyA9IHsKKwkJCWlzYSA9
IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTFD
MDlEMDQ2MUUzMUMzMjgwMDcyNUYxOCAvKiBEZWJ1ZyAqLywKKwkJCQkxQzA5RDA0NzFFMzFDMzI4
MDA3MjVGMTggLyogUmVsZWFzZSAqLywKKwkJCQkxQzA5RDA1QTFFMzFDNkYwMDA3MjVGMTggLyog
UHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9
IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkx
QzA5RDA0ODFFMzFDMzI4MDA3MjVGMTggLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgIlBBTCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0
OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxQzA5RDA0OTFFMzFDMzI4MDA3MjVG
MTggLyogRGVidWcgKi8sCisJCQkJMUMwOUQwNEExRTMxQzMyODAwNzI1RjE4IC8qIFJlbGVhc2Ug
Ki8sCisJCQkJMUMwOUQwNUIxRTMxQzZGMDAwNzI1RjE4IC8qIFByb2R1Y3Rpb24gKi8sCisJCQkp
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25M
aXN0IHNlY3Rpb24gKi8KKwl9OworCXJvb3RPYmplY3QgPSAxQzA5RDAzNTFFMzFDMzI4MDA3MjVG
MTggLyogUHJvamVjdCBvYmplY3QgKi87Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvY29uZmlnLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ4
OGM4MGFkZjZjMTFmNmMzMDgyMDNhOGU3MmVhNDgzNjg2ZjNmNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2lmIGRlZmluZWQoSEFWRV9DT05GSUdfSCkgJiYgSEFWRV9DT05G
SUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJVEhfQ01BS0UpCisjaW5jbHVkZSAiY21ha2Vjb25m
aWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpbmNsdWRlIDx3
dGYvRXhwb3J0TWFjcm9zLmg+CisKKyNpZmRlZiBfX0FQUExFX18KKyNkZWZpbmUgSEFWRV9GVU5D
X1VTTEVFUCAxCisjZW5kaWYgLyogX19BUFBMRV9fICovCisKKyNpZiBPUyhXSU5ET1dTKQorCisj
aWZuZGVmIF9XSU4zMl9XSU5OVAorI2RlZmluZSBfV0lOMzJfV0lOTlQgMHg2MDEKKyNlbmRpZgor
CisjaWZuZGVmIFdJTlZFUgorI2RlZmluZSBXSU5WRVIgMHgwNjAxCisjZW5kaWYKKworI2VuZGlm
IC8qIE9TKFdJTkRPV1MpICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisvLyBUaGVzZSB1bmRl
ZnMgbWF0Y2ggdXAgd2l0aCBkZWZpbmVzIGluIFdlYkNvcmVQcmVmaXguaCBmb3IgTWFjIE9TIFgu
CisvLyBIZWxwcyB1cyBjYXRjaCBpZiBhbnlvbmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5IGFjY2lk
ZW50IGluIGNvZGUgYW5kIGRvZXNuJ3QgaW5jbHVkZSAiY29uZmlnLmgiLgorI3VuZGVmIG5ldwor
I3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisKKyNpbmNsdWRlIDxj
aXNvNjQ2PgorCisjZW5kaWYKKworI2luY2x1ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmY2MzA0MDUyODFjMDNm
ZjkwMGYzMGU5Yjc4MDRiOTM0YjBmYTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4dApAQCAtMCwwICsxLDQzIEBACitzZXQoUEFMX0hFQURF
UlMKKyAgICBjcnlwdG8vQ3J5cHRvRGlnZXN0LmgKKykKKworc2V0KFBBTF9TT1VSQ0VTCispCisK
K3NldChQQUxfSU5DTFVERV9ESVJFQ1RPUklFUworICAgICIke1BBTF9ESVJ9IgorICAgICIke1BB
TF9ESVJ9L3BhbCIKKyAgICAiJHtQQUxfRElSfS9wYWwvY3J5cHRvIgorKQorCitzZXQoUEFMX0xJ
QlJBUklFUworICAgIFdURgorKQorCitXRUJLSVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJ
U1RTKCkKKworV0VCS0lUX1dSQVBfU09VUkNFTElTVCgke1BBTF9TT1VSQ0VTfSkKK1dFQktJVF9G
UkFNRVdPUksoUEFMKQorCitpZiAoVU5JWCkKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAg
ICAgIFRBUkdFVCBQQUwKKyAgICAgICAgUE9TVF9CVUlMRAorICAgICAgICBDT01NQU5EICR7UFlU
SE9OX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9ESVJ9L1NjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5n
LnB5ICQ8VEFSR0VUX0ZJTEU6UEFMPiAke1BBTF9ESVJ9CisgICAgICAgIFZFUkJBVElNKQorZW5k
aWYgKCkKKworaWYgKE1TVkMpCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJH
RVQgUEFMCisgICAgICAgIFBSRV9CVUlMRAorICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRB
QkxFfSAke1dFQktJVF9MSUJSQVJJRVNfRElSfS90b29scy9zY3JpcHRzL2F1dG8tdmVyc2lvbi5w
bCAke0RFUklWRURfU09VUkNFU19ESVJ9CisgICAgICAgIFZFUkJBVElNKQorCisgICAgYWRkX2N1
c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBPU1RfQlVJTEQKKyAg
ICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVRfTElCUkFSSUVTX0RJUn0v
dG9vbHMvc2NyaXB0cy92ZXJzaW9uLXN0YW1wLnBsICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0gJDxU
QVJHRVRfRklMRTpQQUw+CisgICAgICAgIFZFUkJBVElNKQorZW5kaWYgKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NWMxODk4NGFlODliOWNl
YWFiMjViNTdmZGEwNmExYTE1ZmM2M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQg
UEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1HVEsuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NWMx
ODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmExYTE1ZmM2M2IKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAor
bGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdD
cnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1N
YWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJmOTY4ZWM0ZDk4ZTQxZjczNzI5MGY4ZjRmMjhmNzRmNmEyZTYxZjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0w
LDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vY29tbW9uY3J5
cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L1BsYXRmb3JtV2luLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNjkxOWY3NmYxMDhmNzJlYzg4N2ExYjcz
NTA3ODE3MjJhMjU4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L1BsYXRmb3JtV2luLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJD
RVMKKyAgICBjcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKKykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTg4ZTEyNzdjNDk3
OWNiMDRiMDAxZTM1M2U4YzhlOGUyOTkzYjMyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVj
dCBDcnlwdG9EaWdlc3RDb250ZXh0OworCitjbGFzcyBDcnlwdG9EaWdlc3QgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKENyeXB0b0RpZ2VzdCk7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBB
bGdvcml0aG0geworICAgICAgICBTSEFfMSwKKyAgICAgICAgU0hBXzIyNCwKKyAgICAgICAgU0hB
XzI1NiwKKyAgICAgICAgU0hBXzM4NCwKKyAgICAgICAgU0hBXzUxMiwKKyAgICB9OworICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBjcmVhdGUoQWxnb3JpdGhtKTsKKyAg
ICB+Q3J5cHRvRGlnZXN0KCk7CisKKyAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0
LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBWZWN0b3I8dWludDhfdD4gY29tcHV0ZUhhc2goKTsKKwor
cHJpdmF0ZToKKyAgICBDcnlwdG9EaWdlc3QoKTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9EaWdlc3RDb250ZXh0PiBtX2NvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQUwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0by9Dcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8v
Y29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZh
MjQxYTRlMjM1ODZhMWMxM2FkOTJhOWU5MTE0ZWI0MmZkY2FjMwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RD
b21tb25DcnlwdG8uY3BwCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Q29tbW9u
Q3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0
b0RpZ2VzdENvbnRleHQgeworICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsK
KyAgICB2b2lkKiBjY0NvbnRleHQ7Cit9OworCitpbmxpbmUgQ0NfU0hBMV9DVFgqIHRvU0hBMUNv
bnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4
dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PENDX1NIQTFfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lu
bGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTIyNENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCog
Y29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2
X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9T
SEEyNTZDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJU
KGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRl
eHQpOworfQoraW5saW5lIENDX1NIQTUxMl9DVFgqIHRvU0hBMzg0Q29udGV4dChDcnlwdG9EaWdl
c3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0g
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lubGluZSBDQ19TSEE1
MTJfQ1RYKiB0b1NIQTUxMkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sK
KyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfNTEyKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRl
eHQtPmNjQ29udGV4dCk7Cit9CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6
IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0
Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7
CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6CisgICAgICAgIGRlbGV0
ZSB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAgICBkZWxldGUgdG9T
SEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAgICBkZWxldGUgdG9TSEEy
NTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgorICAgICAgICBkZWxldGUgdG9TSEEzODRD
b250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgorICAgICAgICBkZWxldGUgdG9TSEE1MTJDb250
ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKKworc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9E
aWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBkaWdlc3QtPm1fY29udGV4dC0+
YWxnb3JpdGhtID0gYWxnb3JpdGhtOworCisgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAgICAgICBDQ19TSEExX0NU
WCogY29udGV4dCA9IG5ldyBDQ19TSEExX0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQt
PmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTFfSW5pdChjb250ZXh0KTsKKyAg
ICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzIyNDogeworICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IEND
X1NIQTI1Nl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250
ZXh0OworICAgICAgICBDQ19TSEEyMjRfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRp
Z2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Njog
eworICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7Cisg
ICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBD
Q19TSEEyNTZfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9Cisg
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAgICBDQ19T
SEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7CisgICAgICAgIGRpZ2VzdC0+
bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEEzODRfSW5pdChj
b250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogeworICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250
ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0Nv
bnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEE1MTJfSW5pdChjb250ZXh0KTsKKyAgICAg
ICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgfQorfQorCit2b2lkIENyeXB0b0RpZ2VzdDo6
YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCit7CisgICAgc3dpdGNo
IChtX2NvbnRleHQtPmFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8xOgorICAgICAgICBDQ19TSEExX1VwZGF0ZSh0b1NIQTFDb250ZXh0KG1fY29udGV4
dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAgQ0NfU0hBMjI0X1VwZGF0ZSh0
b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAg
ICAgICBDQ19TSEEyNTZfVXBkYXRlKHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBp
bnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIENDX1NIQTM4NF9VcGRhdGUodG9TSEEzODRDb250
ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAgICAgICAgQ0NfU0hB
NTEyX1VwZGF0ZSh0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0
aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9E
aWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAg
IHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMToKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEExX0RJR0VTVF9M
RU5HVEgpOworICAgICAgICBDQ19TSEExX0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMUNvbnRl
eHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjI0
X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEEyMjRfRmluYWwocmVzdWx0LmRhdGEoKSwg
dG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAgICByZXN1bHQucmVz
aXplKENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMjU2X0ZpbmFsKHJl
c3VsdC5kYXRhKCksIHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAg
ICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEzODRfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NI
QTM4NF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgp
KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV81MTI6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBNTEyX0RJR0VTVF9MRU5HVEgpOwor
ICAgICAgICBDQ19TSEE1MTJfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEE1MTJDb250ZXh0KG1f
Y29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworfSAvLyBuYW1lc3BhY2UgUEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBhNzhhZTBjM2I4ZDcwMDg2MDc3MzM1YWUzZTMyZWZhYTkxMzk2ZDgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0
R0NyeXB0LmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEln
YWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0SG9tZQorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRl
IDxnY3J5cHQuaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250
ZXh0IHsKKyAgICBpbnQgYWxnb3JpdGhtOworICAgIGdjcnlfbWRfaGRfdCBtZDsKK307CisKK0Ny
eXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGln
ZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKK30K
Kworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIGludCBnY3J5cHRBbGdvcml0
aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8xOgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTE7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
MjQ6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjI0OworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAg
ICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTI1NjsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgZ2NyeXB0QWxn
b3JpdGhtID0gR0NSWV9NRF9TSEEzODQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdD
UllfTURfU0hBNTEyOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5t
X2NvbnRleHQtPmFsZ29yaXRobSA9IGdjcnlwdEFsZ29yaXRobTsKKworICAgIGdjcnlfbWRfb3Bl
bigmZGlnZXN0LT5tX2NvbnRleHQtPm1kLCBnY3J5cHRBbGdvcml0aG0sIDApOworICAgIGlmICgh
ZGlnZXN0LT5tX2NvbnRleHQtPm1kKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJl
dHVybiBkaWdlc3Q7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lk
KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBnY3J5X21kX3dyaXRlKG1fY29udGV4dC0+
bWQsIGlucHV0LCBsZW5ndGgpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpj
b21wdXRlSGFzaCgpCit7CisgICAgaW50IGRpZ2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29fZGxl
bihtX2NvbnRleHQtPmFsZ29yaXRobSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdl
c3RMZW4pOworCisgICAgZ2NyeV9tZF9maW5hbChtX2NvbnRleHQtPm1kKTsKKyAgICBtZW1jcHko
cmVzdWx0LmRhdGEoKSwgZ2NyeV9tZF9yZWFkKG1fY29udGV4dC0+bWQsIDApLCBkaWdlc3RMZW4p
OworICAgIGdjcnlfbWRfY2xvc2UobV9jb250ZXh0LT5tZCk7CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTU2YjhmYmJkYTBmMDkwOTMxOTkxZjZiMDE2NjZjOWIzNTlhYzA4MgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RH
bnVUTFMuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEln
YWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKKworI2luY2x1ZGUgPGdudXRscy9nbnV0
bHMuaD4KKyNpbmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+CisKK25hbWVzcGFjZSBQQUwgeworCitz
dHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1f
dCBhbGdvcml0aG07CisgICAgZ251dGxzX2hhc2hfaGRfdCBoYXNoOworfTsKKworQ3J5cHRvRGln
ZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250
ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQoreworICAgIGdudXRs
c19oYXNoX2RlaW5pdChtX2NvbnRleHQtPmhhc2gsIDApOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bSBhbGdvcml0aG0pCit7CisgICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBnbnV0bHNBbGdv
cml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19E
SUdfU0hBMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yMjQ6IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJ
R19TSEEyMjQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19E
SUdfU0hBMjU2OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNf
RElHX1NIQTM4NDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTI6IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExT
X0RJR19TSEE1MTI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGln
ZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdudXRsc0FsZ29yaXRobTsKKworICAgIGludCBy
ZXQgPSBnbnV0bHNfaGFzaF9pbml0KCZkaWdlc3QtPm1fY29udGV4dC0+aGFzaCwgZ251dGxzQWxn
b3JpdGhtKTsKKyAgICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIGRpZ2VzdDsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6
OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGdudXRs
c19oYXNoKG1fY29udGV4dC0+aGFzaCwgaW5wdXQsIGxlbmd0aCk7Cit9CisKK1ZlY3Rvcjx1aW50
OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4g
cmVzdWx0OworICAgIGludCBkaWdlc3RMZW4gPSBnbnV0bHNfaGFzaF9nZXRfbGVuKG1fY29udGV4
dC0+YWxnb3JpdGhtKTsKKyAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbik7CisKKyAgICBnbnV0
bHNfaGFzaF9vdXRwdXQobV9jb250ZXh0LT5oYXNoLCByZXN1bHQuZGF0YSgpKTsKKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMTgzODg0MTliZGI5NjNhMTE0NWFjOWE4OTY3NGYzZmIzYTE3ZWVjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5j
cHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVk
ZSA8d2luY3J5cHQuaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RD
b250ZXh0IHsKKyAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07CisgICAgSENS
WVBUUFJPViBoQ29udGV4dCB7IDAgfTsKKyAgICBIQ1JZUFRIQVNIIGhIYXNoIHsgMCB9OworfTsK
KworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlw
dG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQor
eworICAgIGlmIChIQ1JZUFRIQVNIIGhIYXNoID0gbV9jb250ZXh0LT5oSGFzaCkKKyAgICAgICAg
Q3J5cHREZXN0cm95SGFzaChoSGFzaCk7CisgICAgaWYgKEhDUllQVFBST1YgaENvbnRleHQgPSBt
X2NvbnRleHQtPmhDb250ZXh0KQorICAgICAgICBDcnlwdFJlbGVhc2VDb250ZXh0KGhDb250ZXh0
LCAwKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0Ojpj
cmVhdGUoQWxnb3JpdGhtIGFsZ29yaXRobSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
RGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQt
PmFsZ29yaXRobSA9IGFsZ29yaXRobTsKKyAgICBpZiAoIUNyeXB0QWNxdWlyZUNvbnRleHQoJmRp
Z2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgbnVsbHB0ciwgbnVsbHB0ciAvKiB1c2UgZGVmYXVs
dCBwcm92aWRlciAqLywgUFJPVl9SU0FfQUVTLCBDUllQVF9WRVJJRllDT05URVhUKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgICBzd2l0
Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
OiB7CisgICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4
dC0+aENvbnRleHQsIENBTEdfU0hBMSwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjU2OiB7CisgICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3Qt
Pm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzI1NiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250
ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7CisgICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRl
SGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzM4NCwgMCwgMCwgJmRp
Z2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7CisgICAgICAgIHN1Y2NlZWRlZCA9
IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzUx
MiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICB9CisgICAgaWYgKHN1Y2NlZWRlZCkKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0
IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlmICghaW5wdXQgfHwgIWxlbmd0
aCkKKyAgICAgICAgcmV0dXJuOworICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0SGFzaERhdGEobV9j
b250ZXh0LT5oSGFzaCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBCWVRFKj4oaW5wdXQpLCBsZW5n
dGgsIDApKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2go
KQoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CisgICAgRFdPUkQgZGlnZXN0TGVuZ3Ro
QnVmZmVyOworICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlclNpemUgPSBzaXplb2YoZGlnZXN0
TGVuZ3RoQnVmZmVyKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFzaFBhcmFtKG1f
Y29udGV4dC0+aEhhc2gsIEhQX0hBU0hTSVpFLCByZWludGVycHJldF9jYXN0PEJZVEUqPigmZGln
ZXN0TGVuZ3RoQnVmZmVyKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlclNpemUsIDApKTsKKyAgICByZXN1
bHQucmVzaXplKGRpZ2VzdExlbmd0aEJ1ZmZlcik7CisKKyAgICBSRUxFQVNFX0FTU0VSVChDcnlw
dEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIVkFMLCByZXN1bHQuZGF0YSgp
LCAmZGlnZXN0TGVuZ3RoQnVmZmVyLCAwKSk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LnNp
emUoKSA9PSBkaWdlc3RMZW5ndGhCdWZmZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBmM2FlODliMDBl
M2QzNGJkOTQ1OGM1OGZmYjQ0YThlYTI3OTZiM2RkLi4xZjBlMTAzNWFkNGFkMmUxZTNmMGIxNzI1
YTJhY2VjZWUzYzgwYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNjksOCArNjks
NiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2F1ZGlvL2Vm
bC9BdWRpb0J1c0VmbC5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGln
ZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZWZsL0N1cnNvckVmbC5jcHAKICAgICBwbGF0
Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL0RyYWdJbWFnZUVmbC5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjI0MjE2MjljNWVkNTA3YTc3MzRhM2U2
ZGZjZDM0YTcyODgxZWJkZi4uYjFjNmU2YjhjZTEzMzdlMzhjMjg0NjMxNTRiNWZhZTE3MGNkMDRm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTY4LDggKzY4LDYgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9nbGliL0F1ZGlvQnVzR0xp
Yi5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNw
cAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9nbGliL0dhbWVwYWRzR2xpYi5jcHAKIAogICAgIHBs
YXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2NsdWUxLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybU1hYy5jbWFrZQppbmRleCA0YzUxZTJhYTkwNjY0NTgyYWE0MjIzNjc0NTQ1MTM5OTEyNGEx
MWYwLi43ZGMxZTZlODRjZTBlNjY1ZGVmNzliMDE1ZTE0NTA5MzgyOTZkOWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzMzLDggKzMzMyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
U09VUkNFUwogICAgIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KICAgICBwbGF0Zm9ybS9j
b2NvYS9XZWJDb3JlTlNFcnJvckV4dHJhcy5tbQogCi0gICAgcGxhdGZvcm0vY3J5cHRvL2NvbW1v
bmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCi0KICAgICBwbGF0Zm9ybS9nYW1l
cGFkL21hYy9ISURHYW1lcGFkLmNwcAogICAgIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVw
YWRQcm92aWRlci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4u
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA4ZDdmNTA4YTEy
Mjk1NzE3OTA3ZGVmNDE0ZjJmMjY0ZGYxMGMxOWFkLi5hNGE5OTA5YjEyMTM0M2NlZWJjNjliZDAx
YTgzNWMxOGYxODkwMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtNzMsOCArNzMs
NiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAgIHBsYXRmb3JtL2NmL3dpbi9D
ZXJ0aWZpY2F0ZUNGV2luLmNwcAogCi0gICAgcGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdl
c3RXaW4uY3BwCi0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDlhNDBkYjgyMzk5ZmIwYmY3MGQ1MmI0YWM2M2Y5MGE4OGY5N2JkYTkuLmI2MWZmM2Q5MjI4YTcw
NjFlNGQ0MTg5NDk2YTEwZjlkOGQ0ZTQzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk3Nyw2ICs5NzcsNyBAQAogCQkxQzAx
MDcwMTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAxMDZGRjE5MjU5NERGMDA4QTQy
MDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggKi87IH07CiAJCTFDMDkzOUVBMUExM0UxMjkwMEI3
ODhFNSAvKiBDYWNoZWRTVkdGb250LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDMDkzOUU4MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250
LmNwcCAqLzsgfTsKIAkJMUMwOTM5RUIxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDkzOUU5
MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmggKi87IH07CisJCTFDMDlEMDU5MUUz
MUM2QTkwMDcyNUYxOCAvKiBsaWJQQUwuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDlEMDUwMUUzMUMzMjkwMDcyNUYxOCAvKiBsaWJQQUwuYSAq
LzsgfTsKIAkJMUMxOERBNTgxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMThEQTU2MTgxQUY2
QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5jcHAgKi87IH07CiAJCTFDMThEQTU5MTgxQUY2QTUw
MEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUMxOERBNTcxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmgg
Ki87IH07CiAJCTFDMjFFNTdDMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjFFNTdBMTgz
RUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmNwcCAqLzsgfTsKQEAgLTYyNjIsOCArNjI2
Myw2IEBACiAJCUUxRjgwQjg4MTgzMTcyNTIwMDc4ODVDMyAvKiBDcnlwdG9LZXlQYWlyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4MEI4NjE4MzE3
MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxRjgwQjhEMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0Ny
eXB0b0tleVBhaXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFGODBCOEIxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5jcHAgKi87
IH07CiAJCUUxRjgwQjhFMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjgwQjhDMTgzMTcy
QjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuaCAqLzsgfTsKLQkJRTFGRTEzNjQxODM0MzUx
MTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2MjE4MzQzNTExMDA4OTJGMTMg
LyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLzsgfTsKLQkJRTFGRTEzNjcxODM0M0Ex
MDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjYxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2Vz
dC5oICovOyB9OwogCQlFMUZFMTM2QTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGht
UlNBX09BRVAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFGRTEzNjgxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNw
cCAqLzsgfTsKIAkJRTFGRTEzNkIxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCAqLzsg
fTsKIAkJRTFGRTEzNzAxODNGRUNGMDAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
TWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
RkUxMzZFMTgzRkVDRjAwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAg
Ki87IH07CkBAIC02ODg4LDYgKzY4ODcsMTMgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCQkxQzA5
RDA0RjFFMzFDMzI5MDA3MjVGMTggLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJ
aXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMUMwOUQw
NEIxRTMxQzMyODAwNzI1RjE4IC8qIFBBTC54Y29kZXByb2ogKi87CisJCQlwcm94eVR5cGUgPSAy
OworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxQzA5RDAzRDFFMzFDMzI4MDA3MjVGMTg7CisJ
CQlyZW1vdGVJbmZvID0gUEFMOworCQl9OwogCQk0MTdEQTZENDEzNzM0RTBEMDA3QzU3RkIgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVBy
b3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFBy
b2plY3Qgb2JqZWN0ICovOwpAQCAtODA1NCw2ICs4MDYwLDcgQEAKIAkJMUMwMTA2RkYxOTI1OTRE
RjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUMwOTM5RTgxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkU1ZHRm9udC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDkzOUU5MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNo
ZWRTVkdGb250LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFNWR0Zv
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwOUQwNEIxRTMxQzMyODAwNzI1
RjE4IC8qIFBBTC54Y29kZXByb2ogKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSAid3JhcHBlci5wYi1wcm9qZWN0IjsgbmFtZSA9IFBBTC54Y29kZXByb2o7
IHBhdGggPSBQQUwvUEFMLnhjb2RlcHJvajsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUMxOERBNTYxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRQYWludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUMxOERBNTcxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRQYWludGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjFFNTdBMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZh
Y2VQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElPU3VyZmFj
ZVBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyNzIsOCArMTQyNzks
NiBAQAogCQlFMUY4MEI4NjE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9LZXlQYWlyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxRjgwQjhCMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tl
eVBhaXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDcnlwdG9L
ZXlQYWlyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGODBCOEMxODMxNzJC
NTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0NyeXB0b0tleVBhaXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
RTFGRTEzNjIxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9EaWdlc3RDb21tb25D
cnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUZFMTM2NjE4MzQzQTEw
MDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENyeXB0b0RpZ2VzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2
ODE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMg
LyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTFGRTEzNkUxODNGRUNGMDAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQ
TWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29y
aXRobVJTQV9PQUVQTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0OTg3
LDYgKzE0OTkyLDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTFDMDlEMDU5MUUz
MUM2QTkwMDcyNUYxOCAvKiBsaWJQQUwuYSBpbiBGcmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjEy
MTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVyYXRlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
LAogCQkJCUZEMkRCRjEzMTJCMDQ4QTMwMEVEOThDNiAvKiBBdWRpb1Rvb2xib3guZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMUFCMzNEQTUxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLApAQCAtMTU0MDIsNiArMTU0MDgsNyBAQAogCQkw
ODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDA0QjFFMzFDMzI4MDA3MjVGMTggLyogUEFM
Lnhjb2RlcHJvaiAqLywKIAkJCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmgg
Ki8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLywK
IAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAqLywK
QEAgLTE2MDgzLDYgKzE2MDkwLDE0IEBACiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMUMwOUQwNEMxRTMxQzMyODAwNzI1RjE4IC8qIFByb2R1Y3Rz
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDA1
MDFFMzFDMzI5MDA3MjVGMTggLyogbGliUEFMLmEgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1
Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUM1RkFFQ0EwRENGRDhD
OTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkBAIC0yMjQ5Nyw3ICsyMjUxMiw2IEBACiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAw
QzFBMzU5IC8qIGF1ZGlvICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAq
LywKIAkJCQlBNUM5NzRDRTExNDg1RkRBMDA2NkYyQUIgLyogY29jb2EgKi8sCi0JCQkJQ0U1MEQ4
Q0UxQzg5MzJFRDAwNzJFQTVBIC8qIGNyeXB0byAqLywKIAkJCQk1MTVCRTE4NzFENTRGNURCMDBE
RDdDNjggLyogZ2FtZXBhZCAqLywKIAkJCQlCMkEwMTU5MTBBRjZDRDUzMDA2QkNFMEUgLyogZ3Jh
cGhpY3MgKi8sCiAJCQkJQTU5RTNDMUIxMTU4MEYzNDAwNzI5MjhFIC8qIGlvcyAqLywKQEAgLTIy
OTQxLDIzICsyMjk1NSw2IEBACiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKLQkJQ0U1MEQ4Q0UxQzg5MzJFRDAwNzJFQTVBIC8qIGNyeXB0byAqLyA9IHsK
LQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJQ0U1MEQ4Q0YxQzg5MzJG
QjAwNzJFQTVBIC8qIGNvbW1vbmNyeXB0byAqLywKLQkJCQlFMUZFMTM2NjE4MzQzQTEwMDA4OTJG
MTMgLyogQ3J5cHRvRGlnZXN0LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IGNyeXB0bzsKLQkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCUNFNTBEOENGMUM4OTMyRkIwMDcyRUE1QSAv
KiBjb21tb25jcnlwdG8gKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0g
KAotCQkJCUUxRkUxMzYyMTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RDb21tb25Dcnlw
dG8uY3BwICovLAotCQkJKTsKLQkJCXBhdGggPSBjb21tb25jcnlwdG87Ci0JCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwotCQl9OwogCQlERjlBRkQ2RjEzRkMzMUIwMDAxNUZFQjcgLyogb2JqYyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNTI1MCw3ICsy
NTI0Nyw2IEBACiAJCQkJRTE5QUMzRjExODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRo
bVNIQTI1Ni5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5QUMzRjMxODI0REM3OTAwMzQ5NDI2IC8q
IENyeXB0b0FsZ29yaXRobVNIQTM4NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5QUMzRjUxODI0
REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMi5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRTFGRTEzNjcxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTE1N0E4RTUxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTEyNUY4NEUxODI0Mjg5RDAwRDg0Q0Q5IC8qIENyeXB0b0tleUFFUy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTEyNUY4NUUxODJDMkRGNjAwRDg0Q0Q5IC8qIENyeXB0b0tleURh
dGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjg1NTYsNiArMjg1NTIsMTIgQEAKIAkJCW1haW5Hcm91
cCA9IDA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi87CiAJCQlwcm9kdWN0UmVm
R3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi87CiAJCQlwcm9q
ZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJlZmVyZW5jZXMgPSAoCisJCQkJeworCQkJCQlQ
cm9kdWN0R3JvdXAgPSAxQzA5RDA0QzFFMzFDMzI4MDA3MjVGMTggLyogUHJvZHVjdHMgKi87CisJ
CQkJCVByb2plY3RSZWYgPSAxQzA5RDA0QjFFMzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJv
aiAqLzsKKwkJCQl9LAorCQkJKTsKIAkJCXByb2plY3RSb290ID0gIiI7CiAJCQl0YXJnZXRzID0g
KAogCQkJCTQxODE2Rjc5MTM4NTlDNTUwMDU3QUFBNCAvKiBBbGwgKi8sCkBAIC0yODU2Nyw2ICsy
ODU2OSwxNiBAQAogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCisvKiBCZWdp
biBQQlhSZWZlcmVuY2VQcm94eSBzZWN0aW9uICovCisJCTFDMDlEMDUwMUUzMUMzMjkwMDcyNUYx
OCAvKiBsaWJQQUwuYSAqLyA9IHsKKwkJCWlzYSA9IFBCWFJlZmVyZW5jZVByb3h5OworCQkJZmls
ZVR5cGUgPSBhcmNoaXZlLmFyOworCQkJcGF0aCA9IGxpYlBBTC5hOworCQkJcmVtb3RlUmVmID0g
MUMwOUQwNEYxRTMxQzMyOTAwNzI1RjE4IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJ
CXNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7CisJCX07CisvKiBFbmQgUEJYUmVmZXJl
bmNlUHJveHkgc2VjdGlvbiAqLworCiAvKiBCZWdpbiBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KIAkJOTNGMTk5RkQwODI0NUU1OTAwMUU5QUJDIC8qIFJlc291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7CkBAIC0yOTA5Myw3ICsyOTEwNSw2IEBA
CiAJCQkJRTE5QUMzRjAxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1Ni5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTlBQzNGMjE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRv
QWxnb3JpdGhtU0hBMzg0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOUFDM0Y0MTgyNERDNzkw
MDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
RTFGRTEzNjQxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFMTU3QThFNDE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjVGODREMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlw
dG9LZXlBRVMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNUY4NjMxODJDMzAzQTAwRDg0Q0Q5
IC8qIENyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
MS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEExLmNwcAppbmRleCAwYzhkZmRkZDFlMGE3YWRiYWExOGVmOWM1MTJhNzI4Yzk0MmFkZTI5Li5h
ZGRmODRkMmIyM2YyNTdlZjhmYzk2NmJkZWExOWY3MGM5ZWQ0ZjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNw
cApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNs
dWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRv
RGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTE6OmlkZW50aWZpZXIoKSBj
b25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4m
JiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYm
IGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3Jr
UXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgYXV0byBkaWdlc3QgPSBQ
QUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVy
YXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlw
dG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9y
Q2FsbGJhY2smJiBjYWwKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMTo6
ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRv
RGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKKyAgICBhdXRv
IGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzEpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxs
YmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKaW5kZXggNmNh
MWFlZTVhNmJiN2Q4M2NhMDU2NDE5ZGNiZWJkNTE3YjlkNjE4NS4uNjM0YzVhM2Q5M2I4MmZhNmIx
ZWNiNDUyZjU1MmQwNjg2Njg1ZjYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCkBAIC0yOCw5ICsy
OCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0Rp
Z2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9p
ZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdl
LCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlv
bkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdv
cmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5
cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7
CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9u
RXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2Fs
bGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGln
ZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENh
bGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGln
ZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOworICAgIGF1dG8g
ZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMjI0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2Fs
bGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCmluZGV4IDcz
NjYwZjU5OWFmMzdjYTlkZTlhMjE5ZTNmNGYyMzQ4ZjQ2YWMyYjMuLjBlYTA1MDZiOTRhM2FiMmUz
OWRiM2YyNTEwMzRmYTc0ZWM2M2FjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcApAQCAtMjgsOSAr
MjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9E
aWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2Fn
ZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRp
b25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3
b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNy
eXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYp
OwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlv
bkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0Fs
Z29yaXRobVNIQTI1Njo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNh
bGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRp
Z2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENy
eXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRv
IGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzI1Nik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNh
bGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAppbmRleCBj
OTc3NTJkODFjMDA1NDIzOWIwYjg4YzYwYWEzNDNlZmE2NWUxNDc3Li44OGYzMTM2Mjk2YjA0YzUz
ODM4NjAzOWUyOTRlOWM0MzkzZTRhZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKQEAgLTI4LDkg
KzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRv
RGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2
b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3Nh
Z2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0
aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYg
d29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpD
cnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRp
b25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9B
bGdvcml0aG1TSEEzODQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JD
YWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMzg0Ojpk
aWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBD
cnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9E
aWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAgYXV0
byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVD
YWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKaW5kZXgg
MzNlNDgzZGExNWQxMGNjZGI3M2VlMzhmOTNhMTNkNmQ3MTg3MDJlZi4uMDEwM2YwOTUzNzJiZjM1
OTQ2YzdjZDAzZGY1OWMxOWIxZWIwYzc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCkBAIC0yOCw5
ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0
b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRo
bUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjppZGVudGlmaWVyKCkgY29uc3QKIAog
dm9pZCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNz
YWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2Vw
dGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUm
IHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
Mik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0
aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRv
QWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9y
Q2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTUxMjo6
ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3Qg
Q3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRv
RGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOworICAgIGF1
dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfNTEyKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJl
Q2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFf
NU1hYy5jcHAKaW5kZXggZjZhYjdhMjE1NTUzYjZjYmZiNDczMDM1NWNmZTUzNTJhOWQwMjM1NS4u
MGYwYmY5MzEzZmFiNWNhNTRlZDY0NjliZjM4NmQ4MjlkZTkxZWE5YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1h
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNU1hYy5jcHAKQEAgLTMwLDI2ICszMCwyNiBAQAogCiAjaW5jbHVkZSAiQ29t
bW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFy
YW1zRGVwcmVjYXRlZC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkNy
eXB0b0tleVJTQS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3Qu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RkOjpvcHRpb25hbDxDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8UEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQogewogICAgIHN3aXRjaCAoaGFzaEZ1bmN0aW9uKSB7CiAg
ICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKLSAgICAgICAgcmV0dXJu
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllcjo6U0hBXzIyNDoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjI0OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzIyNDsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6Ci0g
ICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKKyAgICAgICAg
cmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CiAgICAgY2FzZSBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgotICAgICAgICByZXR1cm4gQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfNTEyOworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzUxMjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
QEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gc2ln
blJTQVNTQV9QS0NTMV92MV81KENyeXB0b0FsZ29yaXRobUlkZW50aWYKICAgICBhdXRvIGNyeXB0
b0RpZ2VzdEFsZ29yaXRobSA9IFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNoKTsK
ICAgICBpZiAoIWNyeXB0b0RpZ2VzdEFsZ29yaXRobSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE9wZXJhdGlvbkVycm9yIH07Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5
cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CiAgICAgaWYgKCFkaWdl
c3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIGRp
Z2VzdC0+YWRkQnl0ZXMoZGF0YSwgZGF0YUxlbmd0aCk7CkBAIC05Myw3ICs5Myw3IEBAIHN0YXRp
YyBFeGNlcHRpb25Pcjxib29sPiB2ZXJpZnlSU0FTU0FfUEtDUzFfdjFfNShDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGhhc2gsCiAgICAgYXV0byBjcnlwdG9EaWdlc3RBbGdvcml0aG0gPSBXZWJD
b3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaCk7CiAgICAgaWYgKCFjcnlwdG9EaWdlc3RB
bGdvcml0aG0pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9Owot
ICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29y
aXRobSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlw
dG9EaWdlc3RBbGdvcml0aG0pOwogICAgIGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEsIGRh
dGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKaW5kZXggYTE1N2E4NGYwZTY1Zjg1ZjljMDQ4ZTUxYzFkMTkwZTJiODdkYmYwYS4uZGY3
N2NiNGM5YjVjOTFkNDRlNzMzNzk5MmQ3ZDhiYTdkNzY1MzBiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00NSw3ICs0NSw2IEBACiAj
aW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUg
IkNvb2tpZUphci5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkRPTUVk
aXRvci5oIgogI2luY2x1ZGUgIkRPTVBhdGNoU3VwcG9ydC5oIgogI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgpAQCAtOTYsNiArOTUsNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JZGVudGlmaWVyc0Zh
Y3RvcnkuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0
by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBA
IC0xMzE2LDcgKzEzMTYsNyBAQCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVDb250ZW50U2VjdXJpdHlQ
b2xpY3lTSEEyNTZIYXNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgVGV4dEVuY29kaW5n
IGRvY3VtZW50RW5jb2RpbmcgPSBlbGVtZW50LmRvY3VtZW50KCkudGV4dEVuY29kaW5nKCk7CiAg
ICAgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZ1RvVXNlID0gZG9jdW1lbnRFbmNvZGluZy5p
c1ZhbGlkKCkgPyBkb2N1bWVudEVuY29kaW5nIDogVVRGOEVuY29kaW5nKCk7CiAgICAgQ1N0cmlu
ZyBjb250ZW50ID0gZW5jb2RpbmdUb1VzZS5lbmNvZGUoVGV4dE5vZGVUcmF2ZXJzYWw6OmNvbnRl
bnRzQXNTdHJpbmcoZWxlbWVudCksIEVudGl0aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICBhdXRv
IGNyeXB0b0RpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0
OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgY3J5
cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250ZW50LmRhdGEoKSwgY29udGVudC5sZW5ndGgoKSk7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGRpZ2VzdCA9IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKTsK
ICAgICByZXR1cm4gbWFrZVN0cmluZygic2hhMjU2LSIsIGJhc2U2NEVuY29kZShkaWdlc3QuZGF0
YSgpLCBkaWdlc3Quc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nz
cC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA1MzY3MWU1MGE3NGI3MDNmZDUxY2IzOWQ5NWQ1
NTBiNjMwMjZiMjY5Li45NmZhN2EyMzFiMTgxMzFkMjM2Y2MxOGFmOWJhZjlmMmY4ZWEzNGVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5j
cHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNo
LmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmgiCiAjaW5jbHVkZSAi
Q29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2Vz
dC5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC01Nyw2ICs1Niw3IEBACiAjaW5jbHVkZSA8
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5o
PgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1Nl
dEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAtMzAxLDE4ICszMDEsMTggQEAgYm9vbCBD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbFBvbGljaWVzQWxsb3coVmlvbGF0ZWREaXJlY3RpdmVD
YWxsYmFjayYmIGNhbGxiYWMKICAgICByZXR1cm4gaXNBbGxvd2VkOwogfQogCi1zdGF0aWMgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oQ29udGVudFNlY3Vy
aXR5UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0aG0pCitzdGF0aWMgUEFMOjpDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobSB0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShDb250ZW50U2VjdXJpdHlQb2xp
Y3lIYXNoQWxnb3JpdGhtIGFsZ29yaXRobSkKIHsKICAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewog
ICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6U0hBXzI1NjoKLSAg
ICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OworICAgICAgICBy
ZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKICAgICBjYXNlIENv
bnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIHJldHVy
biBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKKyAgICAgICAgcmV0dXJuIFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CiAgICAgY2FzZSBDb250ZW50U2VjdXJp
dHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICByZXR1cm4gQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgcmV0dXJu
IFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIFByZWRpY2F0ZT4KQEAgLTMzMyw3ICszMzMsNyBAQCBDb250ZW50U2VjdXJpdHlQb2xp
Y3k6Okhhc2hJbkVuZm9yY2VkQW5kUmVwb3J0T25seVBvbGljaWVzUGFpciBDb250ZW50U2VjdXJp
dHlQbwogICAgIGJvb2wgZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzID0gZmFsc2U7CiAgICAg
Ym9vbCBmb3VuZEhhc2hJblJlcG9ydE9ubHlQb2xpY2llcyA9IGZhbHNlOwogICAgIGZvciAoYXV0
byBhbGdvcml0aG0gOiBhbGdvcml0aG1zKSB7Ci0gICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0g
Q3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7
CisgICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0
b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAgICAgICAgY3J5cHRvRGlnZXN0
LT5hZGRCeXRlcyhjb250ZW50Q1N0cmluZy5kYXRhKCksIGNvbnRlbnRDU3RyaW5nLmxlbmd0aCgp
KTsKICAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCBoYXNoID0geyBhbGdvcml0aG0s
IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogICAgICAgICBpZiAoIWZvdW5kSGFzaElu
RW5mb3JjZWRQb2xpY2llcyAmJiBhbGxQb2xpY2llc1dpdGhEaXNwb3NpdGlvbkFsbG93KENvbnRl
bnRTZWN1cml0eVBvbGljeTo6RGlzcG9zaXRpb246OkVuZm9yY2UsIHN0ZDo6Zm9yd2FyZDxQcmVk
aWNhdGU+KHByZWRpY2F0ZSksIGhhc2gpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWYwNzVh
YTM3Y2IzNDYyMDk4NDdhNTk5ZTFmNTQyODRmOWYzODE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9D
cnlwdG9EaWdlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIENyeXB0b0RpZ2VzdF9oCi0jZGVmaW5lIENyeXB0b0RpZ2VzdF9oCi0K
LSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQ7Ci0KLWNs
YXNzIENyeXB0b0RpZ2VzdCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvRGlnZXN0
KTsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7Ci0gICAgICAgIFNIQV8xLAot
ICAgICAgICBTSEFfMjI0LAotICAgICAgICBTSEFfMjU2LAotICAgICAgICBTSEFfMzg0LAotICAg
ICAgICBTSEFfNTEyLAotICAgIH07Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9E
aWdlc3Q+IGNyZWF0ZShBbGdvcml0aG0pOwotICAgIH5DcnlwdG9EaWdlc3QoKTsKLQotICAgIHZv
aWQgYWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOwotICAgIFZlY3Rv
cjx1aW50OF90PiBjb21wdXRlSGFzaCgpOwotCi1wcml2YXRlOgotICAgIENyeXB0b0RpZ2VzdCgp
OwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+IG1fY29udGV4dDsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENyeXB0b0RpZ2VzdF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRv
L0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
cnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzZmZjNTYwNTIyNmI2NGI0OTM3M2JlYTY4NWU5MjNmMDE5
OWJiNGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21t
b25DcnlwdG8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNs
dWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtIGFsZ29yaXRobTsKLSAgICB2b2lkKiBjY0NvbnRleHQ7Ci19OwotCi1pbmxpbmUgQ0NfU0hB
MV9DVFgqIHRvU0hBMUNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAg
ICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTFfQ1RYKj4oY29udGV4dC0+Y2ND
b250ZXh0KTsKLX0KLWlubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTIyNENvbnRleHQoQ3J5cHRv
RGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGht
ID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0Nf
U0hBMjU2X0NUWCogdG9TSEEyNTZDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQp
Ci17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzI1Nik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihj
b250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTUxMl9DVFgqIHRvU0hBMzg0Q29u
dGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0
LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0K
LWlubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTUxMkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4
dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hB
NTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5cHRv
RGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKLXsKLX0K
LQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLSAgICBzd2l0Y2ggKG1fY29udGV4
dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6
Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgotICAg
ICAgICBkZWxldGUgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAg
ICBkZWxldGUgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICBk
ZWxldGUgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICBkZWxl
dGUgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci19Ci0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0Ojpj
cmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQotewotICAgIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdl
c3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3JpdGhtOwotCi0gICAgc3dpdGNoIChhbGdv
cml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewotICAg
ICAgICBDQ19TSEExX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEExX0NUWDsKLSAgICAgICAgZGln
ZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTFfSW5p
dChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDogewotICAgICAgICBDQ19TSEEyNTZfQ1RYKiBj
b250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5j
Y0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEEyMjRfSW5pdChjb250ZXh0KTsKLSAg
ICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzI1NjogewotICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IEND
X1NIQTI1Nl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250
ZXh0OwotICAgICAgICBDQ19TSEEyNTZfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRp
Z2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDog
ewotICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7Ci0g
ICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBD
Q19TSEEzODRfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0g
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogewotICAgICAgICBDQ19T
SEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+
bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEE1MTJfSW5pdChj
b250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgfQotfQotCi12b2lk
IENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgp
Ci17Ci0gICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICBDQ19TSEExX1VwZGF0ZSh0b1NIQTFD
b250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgQ0Nf
U0hBMjI0X1VwZGF0ZSh0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxl
bmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjU2OgotICAgICAgICBDQ19TSEEyNTZfVXBkYXRlKHRvU0hBMjU2Q29udGV4dChtX2Nv
bnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIENDX1NIQTM4NF9VcGRh
dGUodG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoK
LSAgICAgICAgQ0NfU0hBNTEyX1VwZGF0ZSh0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgp
KSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLVZlY3Rvcjx1
aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBWZWN0b3I8dWludDhf
dD4gcmVzdWx0OwotICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKLSAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShD
Q19TSEExX0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEExX0ZpbmFsKHJlc3VsdC5kYXRh
KCksIHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIHJlc3VsdC5y
ZXNpemUoQ0NfU0hBMjI0X0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEEyMjRfRmluYWwo
cmVzdWx0LmRhdGEoKSwgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAg
ICAgICByZXN1bHQucmVzaXplKENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0Nf
U0hBMjU2X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0
KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzM4NDoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEzODRfRElHRVNUX0xFTkdUSCk7
Ci0gICAgICAgIENDX1NIQTM4NF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTM4NENvbnRleHQo
bV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBNTEyX0RJ
R0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEE1MTJfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9T
SEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5
cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdl
c3RHQ3J5cHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTNjOGJmMjQzZGMw
NzJhYmJhODQ2MTg5NzMzYTBmNTNmZDZjMDRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQv
Q3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAx
NiBTb2Z0QXRIb21lCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJD
cnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPGdjcnlwdC5oPgotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKLSAgICBpbnQgYWxnb3JpdGhtOwot
ICAgIGdjcnlfbWRfaGRfdCBtZDsKLX07Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkK
LSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKLXsKLX0KLQotQ3J5cHRv
RGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Rp
Z2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3Jp
dGhtKQotewotICAgIGludCBnY3J5cHRBbGdvcml0aG07Ci0KLSAgICBzd2l0Y2ggKGFsZ29yaXRo
bSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICBn
Y3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTE7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRo
bSA9IEdDUllfTURfU0hBMjI0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01E
X1NIQTI1NjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NDoKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEzODQ7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6
Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBNTEyOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3
IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdjcnlw
dEFsZ29yaXRobTsKLQotICAgIGdjcnlfbWRfb3BlbigmZGlnZXN0LT5tX2NvbnRleHQtPm1kLCBn
Y3J5cHRBbGdvcml0aG0sIDApOwotICAgIGlmICghZGlnZXN0LT5tX2NvbnRleHQtPm1kKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBkaWdlc3Q7Ci19Ci0KLXZvaWQgQ3J5
cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsK
LSAgICBnY3J5X21kX3dyaXRlKG1fY29udGV4dC0+bWQsIGlucHV0LCBsZW5ndGgpOwotfQotCi1W
ZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgaW50IGRp
Z2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW4pOwotCi0gICAgZ2NyeV9tZF9maW5h
bChtX2NvbnRleHQtPm1kKTsKLSAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSwgZ2NyeV9tZF9yZWFk
KG1fY29udGV4dC0+bWQsIDApLCBkaWdlc3RMZW4pOwotICAgIGdjcnlfbWRfY2xvc2UobV9jb250
ZXh0LT5tZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ251dGxzL0Ny
eXB0b0RpZ2VzdEdudVRMUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ251
dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDg5YTVkODFmMmI0YmUyNzMyY2VlM2U1MjYzMzg2ZWQ1OWNiMjE0ZGUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTAyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8Z251dGxzL2dudXRscy5oPgotI2luY2x1ZGUg
PGdudXRscy9jcnlwdG8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRv
RGlnZXN0Q29udGV4dCB7Ci0gICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBhbGdvcml0aG07
Ci0gICAgZ251dGxzX2hhc2hfaGRfdCBoYXNoOwotfTsKLQotQ3J5cHRvRGlnZXN0OjpDcnlwdG9E
aWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQotewotfQot
Ci1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotICAgIGdudXRsc19oYXNoX2RlaW5p
dChtX2NvbnRleHQtPmhhc2gsIDApOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0
PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0p
Ci17Ci0gICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBnbnV0bHNBbGdvcml0aG07Ci0KLSAg
ICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8xOiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8yMjQ6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEyMjQ7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjU2OiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjU2Owot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzM4NDogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTM4NDsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV81MTI6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEE1MTI7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRl
eHQtPmFsZ29yaXRobSA9IGdudXRsc0FsZ29yaXRobTsKLQotICAgIGludCByZXQgPSBnbnV0bHNf
aGFzaF9pbml0KCZkaWdlc3QtPm1fY29udGV4dC0+aGFzaCwgZ251dGxzQWxnb3JpdGhtKTsKLSAg
ICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgcmV0dXJuIGRpZ2VzdDsKLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNv
bnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGdudXRsc19oYXNoKG1fY29u
dGV4dC0+aGFzaCwgaW5wdXQsIGxlbmd0aCk7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlwdG9E
aWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAg
IGludCBkaWdlc3RMZW4gPSBnbnV0bHNfaGFzaF9nZXRfbGVuKG1fY29udGV4dC0+YWxnb3JpdGht
KTsKLSAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbik7Ci0KLSAgICBnbnV0bHNfaGFzaF9vdXRw
dXQobV9jb250ZXh0LT5oYXNoLCByZXN1bHQuZGF0YSgpKTsKLQotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzZjYzE5MmMyYjMwMzk1OTQzMGYyNDljNzM2MzRiMTM5YzdhOGE0NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPHdpbmNyeXB0Lmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKLSAgICBIQ1JZUFRQUk9WIGhDb250ZXh0IHsg
MCB9OwotICAgIEhDUllQVEhBU0ggaEhhc2ggeyAwIH07Ci19OwotCi1DcnlwdG9EaWdlc3Q6OkNy
eXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCi17
Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci0gICAgaWYgKEhDUllQVEhB
U0ggaEhhc2ggPSBtX2NvbnRleHQtPmhIYXNoKQotICAgICAgICBDcnlwdERlc3Ryb3lIYXNoKGhI
YXNoKTsKLSAgICBpZiAoSENSWVBUUFJPViBoQ29udGV4dCA9IG1fY29udGV4dC0+aENvbnRleHQp
Ci0gICAgICAgIENyeXB0UmVsZWFzZUNvbnRleHQoaENvbnRleHQsIDApOwotfQotCi1zdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShBbGdvcml0aG0gYWxn
b3JpdGhtKQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcg
Q3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3Jp
dGhtOwotICAgIGlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmZGlnZXN0LT5tX2NvbnRleHQtPmhD
b250ZXh0LCBudWxscHRyLCBudWxscHRyIC8qIHVzZSBkZWZhdWx0IHByb3ZpZGVyICovLCBQUk9W
X1JTQV9BRVMsIENSWVBUX1ZFUklGWUNPTlRFWFQpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICBib29sIHN1Y2NlZWRlZCA9IGZhbHNlOwotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0g
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKLSAgICAgICAgc3VjY2Vl
ZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19T
SEExLCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKLSAgICAg
ICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4
dCwgQ0FMR19TSEFfMjU2LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8z
ODQ6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250
ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMzg0LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhI
YXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV81MTI6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRp
Z2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfNTEyLCAwLCAwLCAmZGlnZXN0LT5t
X2NvbnRleHQtPmhIYXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLSAgICBpZiAo
c3VjY2VlZGVkKQotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIHJldHVybiBudWxscHRyOwot
fQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVf
dCBsZW5ndGgpCi17Ci0gICAgaWYgKCFpbnB1dCB8fCAhbGVuZ3RoKQotICAgICAgICByZXR1cm47
Ci0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRIYXNoRGF0YShtX2NvbnRleHQtPmhIYXNoLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IEJZVEUqPihpbnB1dCksIGxlbmd0aCwgMCkpOwotfQotCi1WZWN0
b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgVmVjdG9yPHVp
bnQ4X3Q+IHJlc3VsdDsKLSAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXI7Ci0gICAgRFdPUkQg
ZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSA9IHNpemVvZihkaWdlc3RMZW5ndGhCdWZmZXIpOwotCi0g
ICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5oSGFzaCwgSFBf
SEFTSFNJWkUsIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+KCZkaWdlc3RMZW5ndGhCdWZmZXIpLCAm
ZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSwgMCkpOwotICAgIHJlc3VsdC5yZXNpemUoZGlnZXN0TGVu
Z3RoQnVmZmVyKTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFzaFBhcmFtKG1fY29u
dGV4dC0+aEhhc2gsIEhQX0hBU0hWQUwsIHJlc3VsdC5kYXRhKCksICZkaWdlc3RMZW5ndGhCdWZm
ZXIsIDApKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuc2l6ZSgpID09IGRpZ2VzdExlbmd0
aEJ1ZmZlcik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBO
ZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA4NTJiOWI4YmVlYmZhMTFiY2YzMTQ1ZmE2YmI2
MWMyNTA5MzBiZjM4Li4yNmRiN2YyN2QwYTYxZTljOTA5NTA4MmI5YTFjZmJlNmY4ZDI3ZjkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdv
cmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlNvdXBO
ZXR3b3JrU2Vzc2lvbi5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIK
LSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5j
bHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0zOCw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiU291cE5ldHdvcmtQcm94eVNldHRpbmdzLmgiCiAjaW5jbHVkZSA8
Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDxwYWwv
Y3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CkBA
IC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghY2VydGlmaWNhdGVEYXRhKQog
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgICAgIGF1dG8gZGlnZXN0ID0gQ3J5
cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAg
ICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoY2Vy
dGlmaWNhdGVEYXRhLT5kYXRhLCBjZXJ0aWZpY2F0ZURhdGEtPmxlbik7CiAKICAgICAgICAgYXV0
byBoYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299332</attachid>
            <date>2017-01-20 00:34:18 -0800</date>
            <delta_ts>2017-01-20 00:53:21 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-143358-20170120003217.patch</filename>
            <type>text/plain</type>
            <size>96588</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQwZTFlNjFkMTIzNWZm
ZDcxZmRlMGNlMGQyYWI5Y2JmMDM2MmI5Mi4uYTU3NmU4MWRjMDMzZjJiMzFmNTliODBiNGE0Y2U5
N2Q1ZDU3OTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTAxLTE5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNv
cmUueGNjb25maWc6CisgICAgICAgICogUEFML0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6
IEFkZGVkLgorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25m
aWc6IEFkZGVkLgorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIFBBTC9NYWtlZmlsZTogQWRkZWQuCisgICAgICAgICogUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvY29uZmlnLmg6
IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwvQ01ha2VMaXN0cy50eHQ6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9wYWwvUGxhdGZvcm1FZmwuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwv
UGxhdGZvcm1HVEsuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwvUGxhdGZvcm1NYWMu
Y21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwvUGxhdGZvcm1XaW4uY21ha2U6IEFkZGVk
LgorICAgICAgICAqIFBBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oLgorICAgICAgICAq
IFBBTC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0
by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwLgorICAgICAgICAqIFBBTC9wYWwvY3J5cHRv
L2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwLgorICAgICAg
ICAqIFBBTC9wYWwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RH
bnVUTFMuY3BwLgorICAgICAgICAqIFBBTC9wYWwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4u
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9Dcnlw
dG9EaWdlc3RXaW4uY3BwLgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAg
ICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdCk6
CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KToKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOgorICAgICAgICAqIGNy
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
eXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjpzaWduUlNBU1NBX1BLQ1Mx
X3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFzaCk6CisgICAgICAgICogcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5
cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhv
c3RUTFNDZXJ0aWZpY2F0ZVNldDo6Y29tcHV0ZUNlcnRpZmljYXRlSGFzaCk6CisKIDIwMTctMDEt
MTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBpdGVyYWJsZTw+
IHNob3VsZCBiZSBlbmFibGVkIG9uIFdLMQpkaWZmIC0tZ2l0IGEvU291cmNlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFiOGEyZGNiNTA0ZmI1NTZhYmM1ZjU4
M2I3NmJlMzhkOTJmMGZkZjEuLjE1ZmRmMjI0YTg5NjZiZTExZGNmNjNlMmZhOGY1ODdhMDNlNzI2
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvQ01ha2VM
aXN0cy50eHQKQEAgLTQ2LDYgKzQ2LDcgQEAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFH
UyhXVEYgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKIFdFQktJVF9TRVRfRVhUUkFfQ09N
UElMRVJfRkxBR1MoSmF2YVNjcmlwdENvcmUgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkK
IAogaWYgKEVOQUJMRV9XRUJDT1JFKQorICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxB
R1MoUEFMICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAgICAgV0VCS0lUX1NFVF9FWFRS
QV9DT01QSUxFUl9GTEFHUyhXZWJDb3JlVGVzdFN1cHBvcnQgJHtBRERJVElPTkFMX0NPTVBJTEVS
X0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmUgJHtB
RERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVS
X0ZMQUdTKFdlYkNvcmVEZXJpdmVkU291cmNlcyAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9
KQpkaWZmIC0tZ2l0IGEvU291cmNlL01ha2VmaWxlIGIvU291cmNlL01ha2VmaWxlCmluZGV4IDk5
ZDJkZjZhOWQ5NTk2MDMzYWVjYjE4YjAwYmE4ZTVmNzkzMzI0NTYuLjI2YTMzOWYxMTRkYWZkOGNl
MmI5Y2QyYTY5ODA2ZjYwODk4MDAzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9NYWtlZmlsZQorKysg
Yi9Tb3VyY2UvTWFrZWZpbGUKQEAgLTEsNCArMSw0IEBACi1NT0RVTEVTID0gYm1hbGxvYyBXVEYg
SmF2YVNjcmlwdENvcmUgVGhpcmRQYXJ0eS9BTkdMRSBXZWJDb3JlIFdlYkluc3BlY3RvclVJIFdl
YktpdCBXZWJLaXQyCitNT0RVTEVTID0gYm1hbGxvYyBXVEYgSmF2YVNjcmlwdENvcmUgVGhpcmRQ
YXJ0eS9BTkdMRSBXZWJDb3JlL1BBTCBXZWJDb3JlIFdlYkluc3BlY3RvclVJIFdlYktpdCBXZWJL
aXQyCiAKIGlmbmVxICgsJChTREtST09UKSkKIAlpZmVxICgsJChmaW5kc3RyaW5nIG1hY29zeCwk
KFNES1JPT1QpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjUwNDNjNTA3NTZhNDRmODQ2YjNj
NjVjYjJmYTU1NjY0MDRjMTUzNC4uNjhhNTk3MzljZjFkODU4MTY5M2E4YzE0N2QzODViOWM2Mjdh
ZmNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEsNiArMSw3IEBACiBjbWFrZV9taW5pbXVt
X3JlcXVpcmVkKFZFUlNJT04gMi44LjEyKQogaW5jbHVkZShXZWJLaXRDb21tb24pCiBzZXRfcHJv
cGVydHkoRElSRUNUT1JZIC4gUFJPUEVSVFkgRk9MREVSICJXZWJDb3JlIikKK2FkZF9zdWJkaXJl
Y3RvcnkoUEFML3BhbCkKIAogc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e0NNQUtFX0JJTkFSWV9ESVJ9IgpAQCAtMjk0NSw2ICsyOTQ2LDcgQEAgc2V0KFdlYkNvcmVfUExV
R19JTlNfUkVTT1VSQ0VTCiBzZXQoV2ViQ29yZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJSQVJJ
RVN9CiAgICAgSmF2YVNjcmlwdENvcmUke0RFQlVHX1NVRkZJWH0KKyAgICBQQUwke0RFQlVHX1NV
RkZJWH0KICkKIAogaWYgKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKaW5kZXggNmIxOWFjZjY0
NWNkODk5NmQ2MDNiNGEwMDE0NGVhYjg2ZGM4YjQzNy4uZDViZjI5ODU2ZTA3ZTMxMjY1OTdiNmU3
MzQxMTA5NDA5NGQwM2Y2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9X
ZWJDb3JlLnhjY29uZmlnCkBAIC00Niw3ICs0Niw3IEBAIE9USEVSX0NQTFVTUExVU0ZMQUdTID0g
JChPVEhFUl9DRkxBR1MpOwogCiBXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnMg
JChTREtST09UKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnM7CiAKLUhFQURFUl9T
RUFSQ0hfUEFUSFMgPSBGb3J3YXJkaW5nSGVhZGVycyBpY3UgL3Vzci9pbmNsdWRlL2xpYnhzbHQg
L3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAkKFdF
QktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
OworSEVBREVSX1NFQVJDSF9QQVRIUyA9IFBBTCBGb3J3YXJkaW5nSGVhZGVycyBpY3UgL3Vzci9p
bmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2Nh
bC9pbmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKEhFQURF
Ul9TRUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwogSU5TVEFMTF9Q
QVRIID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzOwogSU5TVEFMTF9Q
QVRIW3Nkaz1tYWNvc3gqXSA9ICQoV0VCQ09SRV9GUkFNRVdPUktTX0RJUik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0
ZTI1MmJjY2NkZDk1MDUzNDE5MWQ5YWRkNTc0MGJhZjllNDdjYTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtMCww
ICsxLDI0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8g
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisv
LyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8g
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
Ky8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNsdWRl
ICIuLi8uLi9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjJiMDhiZTBlZTEyZTE1NmJlZjg0NDBjMTYzNzE0M2EwMzQ1N2MzNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2Uu
eGNjb25maWcKQEAgLTAsMCArMSwyNCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
Ly8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisv
LyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorCisjaW5jbHVkZSAiLi4vLi4vQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29u
ZmlnIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL1BBTC54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzE1MmMxMWRkYjM0MGM1YmQ1M2NlMzYyZjUzMzQ3NmRlOWRkYTQ5NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9QQUwueGNj
b25maWcKQEAgLTAsMCArMSwzOCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8g
YXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorCisjaW5jbHVkZSAiLi4vLi4vQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZyIKKwor
SU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfJChDT05GSUdVUkFUSU9OKSk7CitJTlNUQUxM
X1BBVEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwvbGliOworCitTS0lQX0lOU1RBTEwgPSAkKFNL
SVBfSU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFMTCkpOworU0tJUF9JTlNUQUxMXyA9IFlFUzsK
K1NLSVBfSU5TVEFMTF9OTyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9ZRVMgPSBOTzsKKworUFJPRFVD
VF9OQU1FID0gUEFMOworRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CitFWFBPUlRFRF9TWU1CT0xT
X0ZJTEUgPSA7CisKK0dDQ19QUkVGSVhfSEVBREVSID0gOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML01ha2VmaWxlIGIvU291cmNlL1dlYkNvcmUvUEFML01ha2VmaWxlCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg1MzQ2ODE4MzgwY2E4ODk1NzAwNmE0ZDc5ZGMwNjg2MjIwYjJmZDQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvTWFrZWZpbGUKQEAgLTAsMCArMSBAQAoraW5jbHVk
ZSAuLi8uLi9NYWtlZmlsZS5zaGFyZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9Q
QUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzNmZDhiMmExMTMwNzRmYjdkNzBj
MDMwYmUwNjg1MzM2ZDgzNGI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMjQzIEBACisvLyAhJCpV
VEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmpl
Y3RWZXJzaW9uID0gNDY7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNl
Y3Rpb24gKi8KKwkJMUMwOUQwNTMxRTMxQzQ0MTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOUQwNTIxRTMx
QzQ0MTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdC5oICovOyB9OworCQkxQzA5RDA1NjFFMzFDNDY1
MDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDlEMDU1MUUzMUM0NjUwMDcyNUYxOCAv
KiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovOyB9OworCQkxQzA5RDA1ODFFMzFDNTdF
MDA3MjVGMTggLyogY29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQzA5RDA1NzFFMzFDNTdFMDA3MjVGMTggLyogY29uZmlnLmggKi87IH07Cisv
KiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5j
ZSBzZWN0aW9uICovCisJCTFDMDlEMDNEMUUzMUMzMjgwMDcyNUYxOCAvKiBsaWJQQUwuYSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsg
aW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliUEFMLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCTFDMDlEMDUyMUUzMUM0NDEwMDcyNUYxOCAvKiBDcnlwdG9EaWdl
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvRGlnZXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMDlEMDU1MUUzMUM0NjUwMDcyNUYxOCAvKiBD
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDsgcGF0aCA9IGNvbW1vbmNyeXB0
by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQzA5RDA1NzFFMzFDNTdFMDA3MjVGMTggLyogY29uZmlnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQzA5RDA1RDFFMzFDNzdBMDA3MjVGMTggLyogUEFMLnhjY29uZmlnICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC54Y2NvbmZpZzsgcGF0aCA9IFBBTC54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUMwOUQwNjIxRTMxRUMyODAwNzI1RjE4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMDlEMDYzMUUzMUVDMzEwMDcyNUYxOCAvKiBC
YXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBz
ZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
KwkJMUMwOUQwM0ExRTMxQzMyODAwNzI1RjE4IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2Eg
PSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJMUMwOUQwMzQxRTMxQzMyODAw
NzI1RjE4ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5
RDA1QzFFMzFDNzMzMDA3MjVGMTggLyogQ29uZmlndXJhdGlvbnMgKi8sCisJCQkJMUMwOUQwNTcx
RTMxQzU3RTAwNzI1RjE4IC8qIGNvbmZpZy5oICovLAorCQkJCTFDMDlEMDNGMUUzMUMzMjgwMDcy
NUYxOCAvKiBwYWwgKi8sCisJCQkJMUMwOUQwM0UxRTMxQzMyODAwNzI1RjE4IC8qIFByb2R1Y3Rz
ICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDMDlEMDNF
MUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJMUMwOUQwM0QxRTMxQzMyODAwNzI1RjE4IC8qIGxpYlBBTC5h
ICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CisJCTFDMDlEMDNGMUUzMUMzMjgwMDcyNUYxOCAvKiBwYWwgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDUxMUUzMUM0MTIwMDcy
NUYxOCAvKiBjcnlwdG8gKi8sCisJCQkpOworCQkJcGF0aCA9IHBhbDsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CisJCTFDMDlEMDUxMUUzMUM0MTIwMDcyNUYxOCAvKiBjcnlwdG8g
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDU0
MUUzMUM0NTIwMDcyNUYxOCAvKiBjb21tb25jcnlwdG8gKi8sCisJCQkJMUMwOUQwNTIxRTMxQzQ0
MTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdC5oICovLAorCQkJKTsKKwkJCXBhdGggPSBjcnlwdG87
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzA5RDA1NDFFMzFDNDUyMDA3
MjVGMTggLyogY29tbW9uY3J5cHRvICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQkxQzA5RDA1NTFFMzFDNDY1MDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gY29tbW9uY3J5cHRvOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUMwOUQwNUMxRTMxQzczMzAwNzI1RjE4IC8q
IENvbmZpZ3VyYXRpb25zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQkxQzA5RDA1RDFFMzFDNzdBMDA3MjVGMTggLyogUEFMLnhjY29uZmlnICovLAorCQkJ
CTFDMDlEMDYyMUUzMUVDMjgwMDcyNUYxOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8sCisJ
CQkJMUMwOUQwNjMxRTMxRUMzMTAwNzI1RjE4IC8qIEJhc2UueGNjb25maWcgKi8sCisJCQkpOwor
CQkJcGF0aCA9IENvbmZpZ3VyYXRpb25zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEhlYWRlcnNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKwkJMUMwOUQwM0IxRTMxQzMyODAwNzI1RjE4IC8qIEhlYWRlcnMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkxQzA5RDA1ODFFMzFDNTdFMDA3MjVG
MTggLyogY29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQzA5RDA1MzFFMzFDNDQxMDA3MjVG
MTggLyogQ3J5cHRvRGlnZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhIZWFkZXJzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICov
CisJCTFDMDlEMDNDMUUzMUMzMjgwMDcyNUYxOCAvKiBQQUwgKi8gPSB7CisJCQlpc2EgPSBQQlhO
YXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMUMwOUQwNDgxRTMxQzMy
ODAwNzI1RjE4IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJQQUwiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMUMwOUQwMzkxRTMxQzMyODAwNzI1
RjE4IC8qIFNvdXJjZXMgKi8sCisJCQkJMUMwOUQwM0ExRTMxQzMyODAwNzI1RjE4IC8qIEZyYW1l
d29ya3MgKi8sCisJCQkJMUMwOUQwM0IxRTMxQzMyODAwNzI1RjE4IC8qIEhlYWRlcnMgKi8sCisJ
CQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkp
OworCQkJbmFtZSA9IFBBTDsKKwkJCXByb2R1Y3ROYW1lID0gUEFMOworCQkJcHJvZHVjdFJlZmVy
ZW5jZSA9IDFDMDlEMDNEMUUzMUMzMjgwMDcyNUYxOCAvKiBsaWJQQUwuYSAqLzsKKwkJCXByb2R1
Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9Owor
LyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFByb2plY3Qg
c2VjdGlvbiAqLworCQkxQzA5RDAzNTFFMzFDMzI4MDA3MjVGMTggLyogUHJvamVjdCBvYmplY3Qg
Ki8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJYXR0cmlidXRlcyA9IHsKKwkJCQlMYXN0
VXBncmFkZUNoZWNrID0gMDgzMDsKKwkJCQlUYXJnZXRBdHRyaWJ1dGVzID0geworCQkJCQkxQzA5
RDAzQzFFMzFDMzI4MDA3MjVGMTggPSB7CisJCQkJCQlDcmVhdGVkT25Ub29sc1ZlcnNpb24gPSA4
LjM7CisJCQkJCQlQcm92aXNpb25pbmdTdHlsZSA9IEF1dG9tYXRpYzsKKwkJCQkJfTsKKwkJCQl9
OworCQkJfTsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxQzA5RDAzODFFMzFDMzI4MDA3
MjVGMTggLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJQQUwiICov
OworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKKwkJCWRldmVsb3BtZW50
UmVnaW9uID0gRW5nbGlzaDsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOworCQkJa25v
d25SZWdpb25zID0gKAorCQkJCUVuZ2xpc2gsCisJCQkJSmFwYW5lc2UsCisJCQkJRnJlbmNoLAor
CQkJCUdlcm1hbiwKKwkJCQlTcGFuaXNoLAorCQkJCUR1dGNoLAorCQkJCUl0YWxpYW4sCisJCQkp
OworCQkJbWFpbkdyb3VwID0gMUMwOUQwMzQxRTMxQzMyODAwNzI1RjE4OworCQkJcHJvZHVjdFJl
Zkdyb3VwID0gMUMwOUQwM0UxRTMxQzMyODAwNzI1RjE4IC8qIFByb2R1Y3RzICovOworCQkJcHJv
amVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RSb290ID0gIiI7CisJCQl0YXJnZXRzID0gKAor
CQkJCTFDMDlEMDNDMUUzMUMzMjgwMDcyNUYxOCAvKiBQQUwgKi8sCisJCQkpOworCQl9OworLyog
RW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisJCTFDMDlEMDM5MUUzMUMzMjgwMDcyNUYxOCAvKiBTb3VyY2VzICovID0g
eworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMUMwOUQwNTYxRTMxQzQ2NTAwNzI1RjE4IC8q
IENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhT
b3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0
aW9uIHNlY3Rpb24gKi8KKwkJMUMwOUQwNDYxRTMxQzMyODAwNzI1RjE4IC8qIERlYnVnICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDFDMDlEMDYyMUUzMUVDMjgwMDcyNUYxOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25m
aWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCURFQURfQ09ERV9TVFJJUFBJTkcgPSAi
JChERUFEX0NPREVfU1RSSVBQSU5HX2RlYnVnKSI7CisJCQkJREVCVUdfREVGSU5FUyA9ICIkKERF
QlVHX0RFRklORVNfZGVidWcpIjsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gIiQoR0ND
X09QVElNSVpBVElPTl9MRVZFTF9kZWJ1ZykiOworCQkJCVNUUklQX0lOU1RBTExFRF9QUk9EVUNU
ID0gIiQoU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1RfZGVidWcpIjsKKwkJCX07CisJCQluYW1lID0g
RGVidWc7CisJCX07CisJCTFDMDlEMDQ3MUUzMUMzMjgwMDcyNUYxOCAvKiBSZWxlYXNlICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDFDMDlEMDYyMUUzMUVDMjgwMDcyNUYxOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25m
aWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVNUUklQX0lOU1RBTExFRF9QUk9EVUNU
ID0gTk87CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTFDMDlEMDQ5MUUzMUMz
MjgwMDcyNUYxOCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzA5RDA1RDFFMzFDNzdBMDA3MjVG
MTggLyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQlu
YW1lID0gRGVidWc7CisJCX07CisJCTFDMDlEMDRBMUUzMUMzMjgwMDcyNUYxOCAvKiBSZWxlYXNl
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDMDlEMDVEMUUzMUM3N0EwMDcyNUYxOCAvKiBQQUwueGNjb25maWcg
Ki87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9
OworCQkxQzA5RDA1QTFFMzFDNkYwMDA3MjVGMTggLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSAxQzA5RDA2MzFFMzFFQzMxMDA3MjVGMTggLyogQmFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTFDMDlE
MDVCMUUzMUM2RjAwMDcyNUYxOCAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDMDlEMDVE
MUUzMUM3N0EwMDcyNUYxOCAvKiBQQUwueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworLyogRW5kIFhDQnVpbGRDb25m
aWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0
aW9uICovCisJCTFDMDlEMDM4MUUzMUMzMjgwMDcyNUYxOCAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWFByb2plY3QgIlBBTCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkxQzA5RDA0NjFFMzFDMzI4
MDA3MjVGMTggLyogRGVidWcgKi8sCisJCQkJMUMwOUQwNDcxRTMxQzMyODAwNzI1RjE4IC8qIFJl
bGVhc2UgKi8sCisJCQkJMUMwOUQwNUExRTMxQzZGMDAwNzI1RjE4IC8qIFByb2R1Y3Rpb24gKi8s
CisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMUMwOUQwNDgxRTMxQzMy
ODAwNzI1RjE4IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJQQUwiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbnMgPSAoCisJCQkJMUMwOUQwNDkxRTMxQzMyODAwNzI1RjE4IC8qIERlYnVnICov
LAorCQkJCTFDMDlEMDRBMUUzMUMzMjgwMDcyNUYxOCAvKiBSZWxlYXNlICovLAorCQkJCTFDMDlE
MDVCMUUzMUM2RjAwMDcyNUYxOCAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRD
b25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9
IFByb2R1Y3Rpb247CisJCX07CisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICov
CisJfTsKKwlyb290T2JqZWN0ID0gMUMwOUQwMzUxRTMxQzMyODAwNzI1RjE4IC8qIFByb2plY3Qg
b2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oIGIv
U291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0ODhjODBhZGY2YzExZjZj
MzA4MjAzYThlNzJlYTQ4MzY4NmYzZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvY29uZmlnLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICov
CisKKyNpZiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpICYmIEhBVkVfQ09ORklHX0ggJiYgZGVmaW5l
ZChCVUlMRElOR19XSVRIX0NNQUtFKQorI2luY2x1ZGUgImNtYWtlY29uZmlnLmgiCisjZW5kaWYK
KworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaW5jbHVkZSA8d3RmL0V4cG9ydE1hY3Jv
cy5oPgorCisjaWZkZWYgX19BUFBMRV9fCisjZGVmaW5lIEhBVkVfRlVOQ19VU0xFRVAgMQorI2Vu
ZGlmIC8qIF9fQVBQTEVfXyAqLworCisjaWYgT1MoV0lORE9XUykKKworI2lmbmRlZiBfV0lOMzJf
V0lOTlQKKyNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4NjAxCisjZW5kaWYKKworI2lmbmRlZiBXSU5W
RVIKKyNkZWZpbmUgV0lOVkVSIDB4MDYwMQorI2VuZGlmCisKKyNlbmRpZiAvKiBPUyhXSU5ET1dT
KSAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKKworLy8gVGhlc2UgdW5kZWZzIG1hdGNoIHVwIHdp
dGggZGVmaW5lcyBpbiBXZWJDb3JlUHJlZml4LmggZm9yIE1hYyBPUyBYLgorLy8gSGVscHMgdXMg
Y2F0Y2ggaWYgYW55b25lIHVzZXMgbmV3IG9yIGRlbGV0ZSBieSBhY2NpZGVudCBpbiBjb2RlIGFu
ZCBkb2Vzbid0IGluY2x1ZGUgImNvbmZpZy5oIi4KKyN1bmRlZiBuZXcKKyN1bmRlZiBkZWxldGUK
KyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorCisjaW5jbHVkZSA8Y2lzbzY0Nj4KKworI2Vu
ZGlmCisKKyNpbmNsdWRlIDx3dGYvRGlzYWxsb3dDVHlwZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Q01ha2VMaXN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZmNjMwNDA1MjgxYzAzZmY5MDBmMzBlOWI3ODA0
YjkzNGIwZmE2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvQ01h
a2VMaXN0cy50eHQKQEAgLTAsMCArMSw0MyBAQAorc2V0KFBBTF9IRUFERVJTCisgICAgY3J5cHRv
L0NyeXB0b0RpZ2VzdC5oCispCisKK3NldChQQUxfU09VUkNFUworKQorCitzZXQoUEFMX0lOQ0xV
REVfRElSRUNUT1JJRVMKKyAgICAiJHtQQUxfRElSfSIKKyAgICAiJHtQQUxfRElSfS9wYWwiCisg
ICAgIiR7UEFMX0RJUn0vcGFsL2NyeXB0byIKKykKKworc2V0KFBBTF9MSUJSQVJJRVMKKyAgICBX
VEYKKykKKworV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCisKK1dFQktJ
VF9XUkFQX1NPVVJDRUxJU1QoJHtQQUxfU09VUkNFU30pCitXRUJLSVRfRlJBTUVXT1JLKFBBTCkK
KworaWYgKFVOSVgpCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJHRVQgUEFM
CisgICAgICAgIFBPU1RfQlVJTEQKKyAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxF
fSAke1dFQkNPUkVfRElSfS9TY3JpcHRzL0VuZm9yY2VQQUxMYXllcmluZy5weSAkPFRBUkdFVF9G
SUxFOlBBTD4gJHtQQUxfRElSfQorICAgICAgICBWRVJCQVRJTSkKK2VuZGlmICgpCisKK2lmIChN
U1ZDKQorICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgVEFSR0VUIFBBTAorICAgICAg
ICBQUkVfQlVJTEQKKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVRf
TElCUkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0cy9hdXRvLXZlcnNpb24ucGwgJHtERVJJVkVEX1NP
VVJDRVNfRElSfQorICAgICAgICBWRVJCQVRJTSkKKworICAgIGFkZF9jdXN0b21fY29tbWFuZCgK
KyAgICAgICAgVEFSR0VUIFBBTAorICAgICAgICBQT1NUX0JVSUxECisgICAgICAgIENPTU1BTkQg
JHtQRVJMX0VYRUNVVEFCTEV9ICR7V0VCS0lUX0xJQlJBUklFU19ESVJ9L3Rvb2xzL3NjcmlwdHMv
dmVyc2lvbi1zdGFtcC5wbCAke0RFUklWRURfU09VUkNFU19ESVJ9ICQ8VEFSR0VUX0ZJTEU6UEFM
PgorICAgICAgICBWRVJCQVRJTSkKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0
Zm9ybUVmbC5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzVjMTg5ODRhZTg5YjljZWFhYjI1YjU3ZmRhMDZh
MWExNWZjNjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCisg
ICAgY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCispCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzVjMTg5ODRhZTg5YjljZWFh
YjI1YjU3ZmRhMDZhMWExNWZjNjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBB
TF9TT1VSQ0VTCisgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCispCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjk2OGVj
NGQ5OGU0MWY3MzcyOTBmOGY0ZjI4Zjc0ZjZhMmU2MWY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2xp
c3QoQVBQRU5EIFBBTF9TT1VSQ0VTCisgICAgY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdl
c3RDb21tb25DcnlwdG8uY3BwCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdpbi5j
bWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42ZjY5MTlmNzZmMTA4ZjcyZWM4ODdhMWI3MzUwNzgxNzIyYTI1OGE4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdpbi5j
bWFrZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCisgICAgY3J5cHRv
L3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5
cHRvL0NyeXB0b0RpZ2VzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4OGUxMjc3YzQ5NzljYjA0YjAwMWUzNTNl
OGM4ZThlMjk5M2IzMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NyeXB0by9DcnlwdG9EaWdlc3QuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0
Q29udGV4dDsKKworY2xhc3MgQ3J5cHRvRGlnZXN0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShDcnlwdG9EaWdlc3QpOworcHVibGljOgorICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKKyAg
ICAgICAgU0hBXzEsCisgICAgICAgIFNIQV8yMjQsCisgICAgICAgIFNIQV8yNTYsCisgICAgICAg
IFNIQV8zODQsCisgICAgICAgIFNIQV81MTIsCisgICAgfTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0RpZ2VzdD4gY3JlYXRlKEFsZ29yaXRobSk7CisgICAgfkNyeXB0b0RpZ2Vz
dCgpOworCisgICAgdm9pZCBhZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0
aCk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVIYXNoKCk7CisKK3ByaXZhdGU6CisgICAg
Q3J5cHRvRGlnZXN0KCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4
dD4gbV9jb250ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgUEFMCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9u
Q3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0by9D
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2YTI0MWE0ZTIzNTg2YTFj
MTNhZDkyYTllOTExNGViNDJmZGNhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNw
cApAQCAtMCwwICsxLDE3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKKworI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25D
cnlwdG8uaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0
IHsKKyAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07CisgICAgdm9pZCogY2ND
b250ZXh0OworfTsKKworaW5saW5lIENDX1NIQTFfQ1RYKiB0b1NIQTFDb250ZXh0KENyeXB0b0Rp
Z2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9
PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDQ19TSEExX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBMjU2
X0NUWCogdG9TSEEyMjRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7Cisg
ICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzIyNCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250ZXh0
LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjU2Q29udGV4dChD
cnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdv
cml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lubGlu
ZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTM4NENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29u
dGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEyX0NU
WCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEE1
MTJDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNv
bnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQp
OworfQorCitDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCisgICAgOiBtX2NvbnRleHQobmV3
IENyeXB0b0RpZ2VzdENvbnRleHQpCit7Cit9CisKK0NyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2Vz
dCgpCit7CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBkZWxldGUgdG9TSEExQ29udGV4
dChtX2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAgZGVsZXRlIHRvU0hBMjI0Q29udGV4dCht
X2NvbnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgZGVsZXRlIHRvU0hBMjU2Q29udGV4dChtX2Nv
bnRleHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgZGVsZXRlIHRvU0hBMzg0Q29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzUxMjoKKyAgICAgICAgZGVsZXRlIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQu
Z2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCisKK3N0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
IGFsZ29yaXRobSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3Qo
bmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFs
Z29yaXRobTsKKworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKKyAgICAgICAgQ0NfU0hBMV9DVFgqIGNvbnRleHQgPSBu
ZXcgQ0NfU0hBMV9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBj
b250ZXh0OworICAgICAgICBDQ19TSEExX0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBk
aWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6
IHsKKyAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOwor
ICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAg
Q0NfU0hBMjI0X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQor
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKKyAgICAgICAgQ0Nf
U0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOworICAgICAgICBkaWdlc3Qt
Pm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMjU2X0luaXQo
Y29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKKyAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29u
dGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2ND
b250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMzg0X0luaXQoY29udGV4dCk7CisgICAg
ICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV81MTI6IHsKKyAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19T
SEE1MTJfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4
dDsKKyAgICAgICAgQ0NfU0hBNTEyX0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdl
c3Q7CisgICAgfQorICAgIH0KK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0
IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIHN3aXRjaCAobV9jb250ZXh0LT5h
bGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAg
ICAgICAgQ0NfU0hBMV9VcGRhdGUodG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1
dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQ6CisgICAgICAgIENDX1NIQTIyNF9VcGRhdGUodG9TSEEyMjRDb250ZXh0
KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgQ0NfU0hBMjU2
X1VwZGF0ZSh0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
Mzg0OgorICAgICAgICBDQ19TSEEzODRfVXBkYXRlKHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQu
Z2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIENDX1NIQTUxMl9VcGRhdGUodG9T
SEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRl
SGFzaCgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBzd2l0Y2ggKG1fY29u
dGV4dC0+YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzE6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMV9ESUdFU1RfTEVOR1RIKTsKKyAgICAg
ICAgQ0NfU0hBMV9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5n
ZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjI0OgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTIyNF9ESUdFU1RfTEVOR1RI
KTsKKyAgICAgICAgQ0NfU0hBMjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjI0Q29udGV4
dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEyNTZf
RElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NIQTI1Nl9GaW5hbChyZXN1bHQuZGF0YSgpLCB0
b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIHJlc3VsdC5yZXNp
emUoQ0NfU0hBMzg0X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEEzODRfRmluYWwocmVz
dWx0LmRhdGEoKSwgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgorICAgICAg
ICByZXN1bHQucmVzaXplKENDX1NIQTUxMl9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hB
NTEyX0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTc4YWUwYzNi
OGQ3MDA4NjA3NzMzNWFlM2UzMmVmYWE5MTM5NmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKQEAg
LTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICog
Q29weXJpZ2h0IChDKSAyMDE2IFNvZnRBdEhvbWUKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z2NyeXB0Lmg+CisK
K25hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgaW50
IGFsZ29yaXRobTsKKyAgICBnY3J5X21kX2hkX3QgbWQ7Cit9OworCitDcnlwdG9EaWdlc3Q6OkNy
eXB0b0RpZ2VzdCgpCisgICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCit7
Cit9CisKK0NyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7Cit9CisKK3N0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtIGFsZ29yaXRobSkKK3sKKyAgICBpbnQgZ2NyeXB0QWxnb3JpdGhtOworCisgICAgc3dp
dGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MToKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEExOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAgICBn
Y3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTIyNDsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgZ2NyeXB0QWxnb3Jp
dGhtID0gR0NSWV9NRF9TSEEyNTY7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllf
TURfU0hBMzg0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfNTEyOgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTUxMjsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2Vz
dD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdv
cml0aG0gPSBnY3J5cHRBbGdvcml0aG07CisKKyAgICBnY3J5X21kX29wZW4oJmRpZ2VzdC0+bV9j
b250ZXh0LT5tZCwgZ2NyeXB0QWxnb3JpdGhtLCAwKTsKKyAgICBpZiAoIWRpZ2VzdC0+bV9jb250
ZXh0LT5tZCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gZGlnZXN0Owor
fQorCit2b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVf
dCBsZW5ndGgpCit7CisgICAgZ2NyeV9tZF93cml0ZShtX2NvbnRleHQtPm1kLCBpbnB1dCwgbGVu
Z3RoKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQor
eworICAgIGludCBkaWdlc3RMZW4gPSBnY3J5X21kX2dldF9hbGdvX2RsZW4obV9jb250ZXh0LT5h
bGdvcml0aG0pOworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoZGlnZXN0TGVuKTsKKworICAg
IGdjcnlfbWRfZmluYWwobV9jb250ZXh0LT5tZCk7CisgICAgbWVtY3B5KHJlc3VsdC5kYXRhKCks
IGdjcnlfbWRfcmVhZChtX2NvbnRleHQtPm1kLCAwKSwgZGlnZXN0TGVuKTsKKyAgICBnY3J5X21k
X2Nsb3NlKG1fY29udGV4dC0+bWQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBu
YW1lc3BhY2UgUEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9n
bnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5
cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1NmI4ZmJiZGEw
ZjA5MDkzMTk5MWY2YjAxNjY2YzliMzU5YWMwODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcApAQCAt
MCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDxnbnV0bHMvZ251dGxzLmg+CisjaW5jbHVk
ZSA8Z251dGxzL2NyeXB0by5oPgorCituYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0Rp
Z2VzdENvbnRleHQgeworICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgYWxnb3JpdGhtOwor
ICAgIGdudXRsc19oYXNoX2hkX3QgaGFzaDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGln
ZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKwor
Q3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBnbnV0bHNfaGFzaF9kZWluaXQo
bV9jb250ZXh0LT5oYXNoLCAwKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4g
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQor
eworICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgZ251dGxzQWxnb3JpdGhtOworCisgICAg
c3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMTogeworICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTE7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjI0OiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjI0OworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzI1NjogeworICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTI1NjsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8zODQ6IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEzODQ7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfNTEyOiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBNTEyOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0
LT5hbGdvcml0aG0gPSBnbnV0bHNBbGdvcml0aG07CisKKyAgICBpbnQgcmV0ID0gZ251dGxzX2hh
c2hfaW5pdCgmZGlnZXN0LT5tX2NvbnRleHQtPmhhc2gsIGdudXRsc0FsZ29yaXRobSk7CisgICAg
aWYgKHJldCAhPSBHTlVUTFNfRV9TVUNDRVNTKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBkaWdlc3Q7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25z
dCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBnbnV0bHNfaGFzaChtX2NvbnRl
eHQtPmhhc2gsIGlucHV0LCBsZW5ndGgpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGln
ZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBp
bnQgZGlnZXN0TGVuID0gZ251dGxzX2hhc2hfZ2V0X2xlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7
CisgICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RMZW4pOworCisgICAgZ251dGxzX2hhc2hfb3V0cHV0
KG1fY29udGV4dC0+aGFzaCwgcmVzdWx0LmRhdGEoKSk7CisKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE4Mzg4NDE5YmRi
OTYzYTExNDVhYzlhODk2NzRmM2ZiM2ExN2VlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCkBAIC0wLDAgKzEs
MTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0
b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHdpbmNyeXB0Lmg+
CisKK25hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAg
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOworICAgIEhDUllQVFBST1YgaENvbnRl
eHQgeyAwIH07CisgICAgSENSWVBUSEFTSCBoSGFzaCB7IDAgfTsKK307CisKK0NyeXB0b0RpZ2Vz
dDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4
dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBpZiAoSENS
WVBUSEFTSCBoSGFzaCA9IG1fY29udGV4dC0+aEhhc2gpCisgICAgICAgIENyeXB0RGVzdHJveUhh
c2goaEhhc2gpOworICAgIGlmIChIQ1JZUFRQUk9WIGhDb250ZXh0ID0gbV9jb250ZXh0LT5oQ29u
dGV4dCkKKyAgICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ29udGV4dCwgMCk7Cit9CisKK3N0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKEFsZ29yaXRo
bSBhbGdvcml0aG0pCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0
KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBh
bGdvcml0aG07CisgICAgaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZkaWdlc3QtPm1fY29udGV4
dC0+aENvbnRleHQsIG51bGxwdHIsIG51bGxwdHIgLyogdXNlIGRlZmF1bHQgcHJvdmlkZXIgKi8s
IFBST1ZfUlNBX0FFUywgQ1JZUFRfVkVSSUZZQ09OVEVYVCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7CisgICAgc3dpdGNoIChhbGdvcml0aG0p
IHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAgICAgICBz
dWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBD
QUxHX1NIQTEsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Njogewor
ICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhD
b250ZXh0LCBDQUxHX1NIQV8yNTYsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzM4NDogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5t
X2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8zODQsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4
dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzUxMjogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhh
c2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV81MTIsIDAsIDAsICZkaWdl
c3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorICAg
IGlmIChzdWNjZWVkZWQpCisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwg
c2l6ZV90IGxlbmd0aCkKK3sKKyAgICBpZiAoIWlucHV0IHx8ICFsZW5ndGgpCisgICAgICAgIHJl
dHVybjsKKyAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEhhc2hEYXRhKG1fY29udGV4dC0+aEhhc2gs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQllURSo+KGlucHV0KSwgbGVuZ3RoLCAwKSk7Cit9CisK
K1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0
b3I8dWludDhfdD4gcmVzdWx0OworICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlcjsKKyAgICBE
V09SRCBkaWdlc3RMZW5ndGhCdWZmZXJTaXplID0gc2l6ZW9mKGRpZ2VzdExlbmd0aEJ1ZmZlcik7
CisKKyAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNo
LCBIUF9IQVNIU0laRSwgcmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oJmRpZ2VzdExlbmd0aEJ1ZmZl
ciksICZkaWdlc3RMZW5ndGhCdWZmZXJTaXplLCAwKSk7CisgICAgcmVzdWx0LnJlc2l6ZShkaWdl
c3RMZW5ndGhCdWZmZXIpOworCisgICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0o
bV9jb250ZXh0LT5oSGFzaCwgSFBfSEFTSFZBTCwgcmVzdWx0LmRhdGEoKSwgJmRpZ2VzdExlbmd0
aEJ1ZmZlciwgMCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5zaXplKCkgPT0gZGlnZXN0
TGVuZ3RoQnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBQ
QUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZjNhZTg5YjAwZTNkMzRiZDk0NThjNThm
ZmI0NGE4ZWEyNzk2YjNkZC4uMWYwZTEwMzVhZDRhZDJlMWUzZjBiMTcyNWEyYWNlY2VlM2M4MGM5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTY5LDggKzY5LDYgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9lZmwvQXVkaW9CdXNFZmwu
Y3BwCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAK
LQogICAgIHBsYXRmb3JtL2VmbC9DdXJzb3JFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL0RyYWdE
YXRhRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9EcmFnSW1hZ2VFZmwuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtR1RLLmNtYWtlCmluZGV4IDYyNDIxNjI5YzVlZDUwN2E3NzM0YTNlNmRmY2QzNGE3Mjg4MWVi
ZGYuLmIxYzZlNmI4Y2UxMzM3ZTM4YzI4NDYzMTU0YjVmYWUxNzBjZDA0ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC02OCw4ICs2OCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09V
UkNFUwogCiAgICAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1c0dMaWIuY3BwCiAKLSAgICBw
bGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKLQogICAgIHBsYXRm
b3JtL2dhbWVwYWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCiAKICAgICBwbGF0Zm9ybS9nZW9jbHVl
L0dlb2xvY2F0aW9uUHJvdmlkZXJHZW9jbHVlMS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggNGM1MWUyYWE5MDY2NDU4MmFhNDIyMzY3NDU0NTEzOTkxMjRhMTFmMC4uN2RjMWU2ZTg0
Y2UwZTY2NWRlZjc5YjAxNWUxNDUwOTM4Mjk2ZDlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UKQEAgLTMzMyw4ICszMzMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBw
bGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvV2ViQ29yZU5T
RXJyb3JFeHRyYXMubW0KIAotICAgIHBsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRv
RGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2Ft
ZXBhZC5jcHAKICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3Bw
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKaW5kZXggOGQ3ZjUwOGExMjI5NTcxNzkwN2RlZjQx
NGYyZjI2NGRmMTBjMTlhZC4uYTRhOTkwOWIxMjEzNDNjZWViYzY5YmQwMWE4MzVjMThmMTg5MDFm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTczLDggKzczLDYgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldp
bi5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAotCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAogCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5YTQwZGI4MjM5OWZi
MGJmNzBkNTJiNGFjNjNmOTBhODhmOTdiZGE5Li5iNjFmZjNkOTIyOGE3MDYxZTRkNDE4OTQ5NmEx
MGY5ZDhkNGU0MzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC05NzcsNiArOTc3LDcgQEAKIAkJMUMwMTA3MDExOTI1OTRERjAw
OEE0MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRl
eHRCb3hTdHlsZS5oICovOyB9OwogCQkxQzA5MzlFQTFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVk
U1ZHRm9udC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzA5MzlFODFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5jcHAgKi87IH07CiAJ
CTFDMDkzOUVCMUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzA5MzlFOTFBMTNFMTI5MDBCNzg4
RTUgLyogQ2FjaGVkU1ZHRm9udC5oICovOyB9OworCQkxQzA5RDA1OTFFMzFDNkE5MDA3MjVGMTgg
LyogbGliUEFMLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQzA5RDA1MDFFMzFDMzI5MDA3MjVGMTggLyogbGliUEFMLmEgKi87IH07CiAJCTFDMThE
QTU4MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4REE1NjE4MUFGNkE1MDBDNEVGMjIgLyog
VGV4dFBhaW50ZXIuY3BwICovOyB9OwogCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4
dFBhaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDMThEQTU3MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oICovOyB9OwogCQkxQzIx
RTU3QzE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9vbC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzIxRTU3QTE4M0VEMUZGMDAxQzI4OUQg
LyogSU9TdXJmYWNlUG9vbC5jcHAgKi87IH07CkBAIC02MjYyLDggKzYyNjMsNiBAQAogCQlFMUY4
MEI4ODE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGODBCODYxODMxNzI1MjAwNzg4NUMzIC8q
IENyeXB0b0tleVBhaXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMUY4MEI4RDE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjgwQjhC
MTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3BwICovOyB9OwogCQlFMUY4MEI4
RTE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4MEI4QzE4MzE3MkI1MDA3ODg1QzMgLyog
SlNDcnlwdG9LZXlQYWlyLmggKi87IH07Ci0JCUUxRkUxMzY0MTgzNDM1MTEwMDg5MkYxMyAvKiBD
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjIxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2Vz
dENvbW1vbkNyeXB0by5jcHAgKi87IH07Ci0JCUUxRkUxMzY3MTgzNDNBMTAwMDg5MkYxMyAvKiBD
cnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxRkUxMzY2MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCAqLzsgfTsKIAkJ
RTFGRTEzNkExODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzY4MTgz
RkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgKi87IH07CiAJCUUx
RkUxMzZCMTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjkxODNGRTFB
QjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggKi87IH07CiAJCUUxRkUxMzcw
MTgzRkVDRjAwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2RTE4M0ZFQ0Yw
MDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwICovOyB9OwpAQCAtNjg4
OCw2ICs2ODg3LDEzIEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMUMwOUQwNEYxRTMxQzMyOTAw
NzI1RjE4IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDFDMDlEMDRCMUUzMUMzMjgwMDcy
NUYxOCAvKiBQQUwueGNvZGVwcm9qICovOworCQkJcHJveHlUeXBlID0gMjsKKwkJCXJlbW90ZUds
b2JhbElEU3RyaW5nID0gMUMwOUQwM0QxRTMxQzMyODAwNzI1RjE4OworCQkJcmVtb3RlSW5mbyA9
IFBBTDsKKwkJfTsKIAkJNDE3REE2RDQxMzczNEUwRDAwN0M1N0ZCIC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRh
aW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAq
LzsKQEAgLTgwNTQsNiArODA2MCw3IEBACiAJCTFDMDEwNkZGMTkyNTk0REYwMDhBNDIwMSAvKiBJ
bmxpbmVUZXh0Qm94U3R5bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5s
aW5lVGV4dEJveFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMDkzOUU4
MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFNWR0ZvbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQzA5MzlFOTFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRTVkdGb250Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMDlEMDRCMUUzMUMzMjgwMDcyNUYxOCAvKiBQQUwueGNv
ZGVwcm9qICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
IndyYXBwZXIucGItcHJvamVjdCI7IG5hbWUgPSBQQUwueGNvZGVwcm9qOyBwYXRoID0gUEFML1BB
TC54Y29kZXByb2o7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMThEQTU2MTgxQUY2
QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUZXh0UGFpbnRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDMThEQTU3MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0UGFpbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQzIxRTU3QTE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9vbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJT1N1cmZhY2VQb29sLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjcyLDggKzE0Mjc5LDYgQEAKIAkJRTFGODBC
ODYxODMxNzI1MjAwNzg4NUMzIC8qIENyeXB0b0tleVBhaXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ3J5cHRvS2V5UGFpci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUY4MEI4QjE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3J5cHRvS2V5UGFpci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRjgwQjhDMTgzMTcyQjUwMDc4ODVDMyAvKiBK
U0NyeXB0b0tleVBhaXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDcnlw
dG9LZXlQYWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxRkUxMzYyMTgzNDM1
MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFGRTEzNjYxODM0M0ExMDAwODkyRjEzIC8qIENy
eXB0b0RpZ2VzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9EaWdl
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRTEzNjgxODNGRTFBQjAwODky
RjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRTEzNjkxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29y
aXRobVJTQV9PQUVQLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkUxMzZF
MTgzRkVDRjAwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1h
Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDk4Nyw2ICsxNDk5Miw3IEBA
CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkxQzA5RDA1OTFFMzFDNkE5MDA3MjVGMTgg
LyogbGliUEFMLmEgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxMjEyQjA0OEEzMDBFRDk4
QzYgLyogQWNjZWxlcmF0ZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlGRDJEQkYx
MzEyQjA0OEEzMDBFRDk4QzYgLyogQXVkaW9Ub29sYm94LmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovLAogCQkJCTFBQjMzREE1MTI1NTFFMzIwMDI0NDU3QSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLywKQEAgLTE1NDAyLDYgKzE1NDA4LDcgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4
RkMwMkFBQzA3IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMUMwOUQwNEIxRTMxQzMyODAwNzI1RjE4IC8qIFBBTC54Y29kZXByb2ogKi8s
CiAJCQkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8qIGNvbmZpZy5oICovLAogCQkJCUVERUM5
ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggKi8sCiAJCQkJOTMwNzA2MTMw
OUUwQ0E4MjAwQjE3RkU0IC8qIERlcml2ZWRTb3VyY2VzLm1ha2UgKi8sCkBAIC0xNjA4Myw2ICsx
NjA5MCwxNCBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCTFDMDlEMDRDMUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMwOUQwNTAxRTMxQzMyOTAwNzI1
RjE4IC8qIGxpYlBBTC5hICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTFDNUZBRUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJ
bnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
MjI0OTcsNyArMjI1MTIsNiBAQAogCQkJCUZEMzE2MDQwMTJCMDI2QTMwMEMxQTM1OSAvKiBhdWRp
byAqLywKIAkJCQkxQUU0MkY2NzBBQTRCOENCMDBDODYxMkQgLyogY2YgKi8sCiAJCQkJQTVDOTc0
Q0UxMTQ4NUZEQTAwNjZGMkFCIC8qIGNvY29hICovLAotCQkJCUNFNTBEOENFMUM4OTMyRUQwMDcy
RUE1QSAvKiBjcnlwdG8gKi8sCiAJCQkJNTE1QkUxODcxRDU0RjVEQjAwREQ3QzY4IC8qIGdhbWVw
YWQgKi8sCiAJCQkJQjJBMDE1OTEwQUY2Q0Q1MzAwNkJDRTBFIC8qIGdyYXBoaWNzICovLAogCQkJ
CUE1OUUzQzFCMTE1ODBGMzQwMDcyOTI4RSAvKiBpb3MgKi8sCkBAIC0yMjk0MSwyMyArMjI5NTUs
NiBAQAogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0J
CUNFNTBEOENFMUM4OTMyRUQwMDcyRUE1QSAvKiBjcnlwdG8gKi8gPSB7Ci0JCQlpc2EgPSBQQlhH
cm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUNFNTBEOENGMUM4OTMyRkIwMDcyRUE1QSAvKiBj
b21tb25jcnlwdG8gKi8sCi0JCQkJRTFGRTEzNjYxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0Rp
Z2VzdC5oICovLAotCQkJKTsKLQkJCXBhdGggPSBjcnlwdG87Ci0JCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwotCQl9OwotCQlDRTUwRDhDRjFDODkzMkZCMDA3MkVBNUEgLyogY29tbW9uY3J5cHRv
ICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlFMUZFMTM2
MjE4MzQzNTExMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLywKLQkJ
CSk7Ci0JCQlwYXRoID0gY29tbW9uY3J5cHRvOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
LQkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3IC8qIG9iamMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjUyNTAsNyArMjUyNDcsNiBAQAogCQkJ
CUUxOUFDM0YxMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTYuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxOUFDM0YzMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0
aG1TSEEzODQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOUFDM0Y1MTgyNERDNzkwMDM0OTQyNiAv
KiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuaCBpbiBIZWFkZXJzICovLAotCQkJCUUxRkUxMzY3MTgz
NDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNTdB
OEU1MTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
MjVGODRFMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9LZXlBRVMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxMjVGODVFMTgyQzJERjYwMEQ4NENEOSAvKiBDcnlwdG9LZXlEYXRhLmggaW4gSGVhZGVy
cyAqLywKQEAgLTI4NTU2LDYgKzI4NTUyLDEyIEBACiAJCQltYWluR3JvdXAgPSAwODY3RDY5MUZF
ODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICovOwogCQkJcHJvZHVjdFJlZkdyb3VwID0gMDM0NzY4
REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovOwogCQkJcHJvamVjdERpclBhdGggPSAi
IjsKKwkJCXByb2plY3RSZWZlcmVuY2VzID0gKAorCQkJCXsKKwkJCQkJUHJvZHVjdEdyb3VwID0g
MUMwOUQwNEMxRTMxQzMyODAwNzI1RjE4IC8qIFByb2R1Y3RzICovOworCQkJCQlQcm9qZWN0UmVm
ID0gMUMwOUQwNEIxRTMxQzMyODAwNzI1RjE4IC8qIFBBTC54Y29kZXByb2ogKi87CisJCQkJfSwK
KwkJCSk7CiAJCQlwcm9qZWN0Um9vdCA9ICIiOwogCQkJdGFyZ2V0cyA9ICgKIAkJCQk0MTgxNkY3
OTEzODU5QzU1MDA1N0FBQTQgLyogQWxsICovLApAQCAtMjg1NjcsNiArMjg1NjksMTYgQEAKIAkJ
fTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAorLyogQmVnaW4gUEJYUmVmZXJlbmNl
UHJveHkgc2VjdGlvbiAqLworCQkxQzA5RDA1MDFFMzFDMzI5MDA3MjVGMTggLyogbGliUEFMLmEg
Ki8gPSB7CisJCQlpc2EgPSBQQlhSZWZlcmVuY2VQcm94eTsKKwkJCWZpbGVUeXBlID0gYXJjaGl2
ZS5hcjsKKwkJCXBhdGggPSBsaWJQQUwuYTsKKwkJCXJlbW90ZVJlZiA9IDFDMDlEMDRGMUUzMUMz
MjkwMDcyNUYxOCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCQlzb3VyY2VUcmVlID0g
QlVJTFRfUFJPRFVDVFNfRElSOworCQl9OworLyogRW5kIFBCWFJlZmVyZW5jZVByb3h5IHNlY3Rp
b24gKi8KKwogLyogQmVnaW4gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAJCTkz
RjE5OUZEMDgyNDVFNTkwMDFFOUFCQyAvKiBSZXNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhS
ZXNvdXJjZXNCdWlsZFBoYXNlOwpAQCAtMjkwOTMsNyArMjkxMDUsNiBAQAogCQkJCUUxOUFDM0Yw
MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTE5QUMzRjIxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4
NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTlBQzNGNDE4MjREQzc5MDAzNDk0MjYgLyogQ3J5
cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUxRkUxMzY0MTgzNDM1
MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTE1N0E4RTQxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMTI1Rjg0RDE4MjQyODlEMDBEODRDRDkgLyogQ3J5cHRvS2V5QUVTLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxMjVGODYzMTgyQzMwM0EwMEQ4NENEOSAvKiBDcnlwdG9LZXlE
YXRhT2N0ZXRTZXF1ZW5jZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKaW5kZXgg
MGM4ZGZkZGQxZTBhN2FkYmFhMThlZjljNTEyYTcyOGM5NDJhZGUyOS4uYWRkZjg0ZDJiMjNmMjU3
ZWY4ZmM5NjZiZGVhMTlmNzBjOWVkNGY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKQEAgLTI4LDkgKzI4
LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGln
ZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEExOjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBD
cnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxs
YmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVl
dWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdl
c3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CiAgICAgaWYg
KCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwog
ICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hB
MTo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRl
KENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6
OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwCmluZGV4IDZjYTFhZWU1YTZiYjdkODNj
YTA1NjQxOWRjYmViZDUxN2I5ZDYxODUuLjYzNGM1YTNkOTNiODJmYTZiMWVjYjQ1MmY1NTJkMDY4
NjY4NWY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYg
RU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0
b0FsZ29yaXRobVNIQTIyNDo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3Jp
dGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0g
ICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzIyNCk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwogICAgIGlmICghZGln
ZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6
ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBF
eGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1
cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIy
NCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAg
ICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcAppbmRleCA3MzY2MGY1OTlhZjM3Y2E5
ZGU5YTIxOWUzZjRmMjM0OGY0NmFjMmIzLi4wZWEwNTA2Yjk0YTNhYjJlMzlkYjNmMjUxMDM0ZmE3
NGVjNjNhY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lm
IEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlw
dG9BbGdvcml0aG1TSEEyNTY6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29y
aXRobVNIQTI1Njo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewot
ICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yNTYpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICBpZiAoIWRp
Z2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAg
ICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6
OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAog
RXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoY29uc3QgQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25E
YXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6
OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTYpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAg
ICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAKaW5kZXggYzk3NzUyZDgxYzAwNTQy
MzliMGI4OGM2MGFhMzQzZWZhNjVlMTQ3Ny4uODhmMzEzNjI5NmIwNGM1MzgzODYwMzllMjk0ZTlj
NDM5M2U0YWY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNp
ZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5
cHRvQWxnb3JpdGhtU0hBMzg0OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdv
cml0aG1TSEEzODQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxs
YmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsK
LSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMzg0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0Ojpj
cmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CiAgICAgaWYgKCFk
aWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAg
ICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAK
IEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFp
bHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUo
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFM
OjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
Mzg0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwCmluZGV4IDMzZTQ4M2RhMTVkMTBj
Y2RiNzNlZTM4ZjkzYTEzZDZkNzE4NzAyZWYuLjAxMDNmMDk1MzcyYmYzNTk0NmM3Y2QwM2RmNTlj
MTliMWViMGM3OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAj
aWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENy
eXB0b0FsZ29yaXRobVNIQTUxMjo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxn
b3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2Fs
bGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7
Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzUxMik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6
Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOwogICAgIGlmICgh
ZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUx
Mjo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwog
CiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRl
KENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBB
TDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzUxMik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAg
ICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFj
L0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4
IGY2YWI3YTIxNTU1M2I2Y2JmYjQ3MzAzNTVjZmU1MzUyYTlkMDIzNTUuLjBmMGJmOTMxM2ZhYjVj
YTU0ZWQ2NDY5YmYzODZkODI5ZGU5MWVhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVN
YWMuY3BwCkBAIC0zMCwyNiArMzAsMjYgQEAKIAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxp
dGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQu
aCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotaW5saW5lIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hG
dW5jdGlvbikKK2lubGluZSBzdGQ6Om9wdGlvbmFsPFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG0+IGNyeXB0b0RpZ2VzdEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hG
dW5jdGlvbikKIHsKICAgICBzd2l0Y2ggKGhhc2hGdW5jdGlvbikgewogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzE6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzE7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMTsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8y
MjQ6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKKyAg
ICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ7CiAgICAg
Y2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgotICAgICAgICByZXR1cm4g
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CisgICAgICAgIHJldHVybiBQQUw6OkNy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllcjo6U0hBXzM4NDoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMzg0OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NDsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6
Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICAg
ICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CkBAIC02Niw3ICs2Niw3
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHNpZ25SU0FTU0FfUEtDUzFf
djFfNShDcnlwdG9BbGdvcml0aG1JZGVudGlmCiAgICAgYXV0byBjcnlwdG9EaWdlc3RBbGdvcml0
aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaCk7CiAgICAgaWYgKCFjcnlw
dG9EaWdlc3RBbGdvcml0aG0pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OwotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0Rp
Z2VzdEFsZ29yaXRobSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOwogICAgIGlmICghZGlnZXN0KQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICBkaWdlc3QtPmFkZEJ5dGVz
KGRhdGEsIGRhdGFMZW5ndGgpOwpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8
Ym9vbD4gdmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBo
YXNoLAogICAgIGF1dG8gY3J5cHRvRGlnZXN0QWxnb3JpdGhtID0gV2ViQ29yZTo6Y3J5cHRvRGln
ZXN0QWxnb3JpdGhtKGhhc2gpOwogICAgIGlmICghY3J5cHRvRGlnZXN0QWxnb3JpdGhtKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOworICAgIGF1
dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3Jp
dGhtKTsKICAgICBpZiAoIWRpZ2VzdCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJh
dGlvbkVycm9yIH07CiAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLCBkYXRhTGVuZ3RoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGEx
NTdhODRmMGU2NWY4NWY5YzA0OGU1MWMxZDE5MGUyYjg3ZGJmMGEuLmRmNzdjYjRjOWI1YzkxZDQ0
ZTczMzc5OTJkN2Q4YmE3ZDc2NTMwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkNvbnRh
aW5lck5vZGUuaCIKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIK
LSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJET01FZGl0b3IuaCIKICNpbmNs
dWRlICJET01QYXRjaFN1cHBvcnQuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTk2LDYg
Kzk1LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5j
bHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0TWFuYWdlci5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTMxNiw3ICsxMzE2
LDcgQEAgc3RhdGljIFN0cmluZyBjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFz
aChjb25zdCBFbGVtZW50JiBlbGVtZW50KQogICAgIFRleHRFbmNvZGluZyBkb2N1bWVudEVuY29k
aW5nID0gZWxlbWVudC5kb2N1bWVudCgpLnRleHRFbmNvZGluZygpOwogICAgIGNvbnN0IFRleHRF
bmNvZGluZyYgZW5jb2RpbmdUb1VzZSA9IGRvY3VtZW50RW5jb2RpbmcuaXNWYWxpZCgpID8gZG9j
dW1lbnRFbmNvZGluZyA6IFVURjhFbmNvZGluZygpOwogICAgIENTdHJpbmcgY29udGVudCA9IGVu
Y29kaW5nVG9Vc2UuZW5jb2RlKFRleHROb2RlVHJhdmVyc2FsOjpjb250ZW50c0FzU3RyaW5nKGVs
ZW1lbnQpLCBFbnRpdGllc0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgYXV0byBjcnlwdG9EaWdlc3Qg
PSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7
CisgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgIGNyeXB0b0RpZ2VzdC0+YWRk
Qnl0ZXMoY29udGVudC5kYXRhKCksIGNvbnRlbnQubGVuZ3RoKCkpOwogICAgIFZlY3Rvcjx1aW50
OF90PiBkaWdlc3QgPSBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCk7CiAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoInNoYTI1Ni0iLCBiYXNlNjRFbmNvZGUoZGlnZXN0LmRhdGEoKSwgZGlnZXN0LnNp
emUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3Vy
aXR5UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAKaW5kZXggNTM2NzFlNTBhNzRiNzAzZmQ1MWNiMzlkOTVkNTUwYjYzMDI2YjI2OS4u
OTZmYTdhMjMxYjE4MTMxZDIzNmNjMThhZjliYWY5ZjJmOGVhMzRlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0zMyw3ICsz
Myw2IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2luY2x1ZGUg
IkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZUxpc3QuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRl
ICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgpAQCAtNTcsNiArNTYsNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CiAj
aW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KKyNpbmNsdWRlIDxw
YWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0UG9zaXRpb24uaD4KQEAgLTMwMSwxOCArMzAxLDE4IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5
UG9saWN5OjphbGxQb2xpY2llc0FsbG93KFZpb2xhdGVkRGlyZWN0aXZlQ2FsbGJhY2smJiBjYWxs
YmFjCiAgICAgcmV0dXJuIGlzQWxsb3dlZDsKIH0KIAotc3RhdGljIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtIHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hB
bGdvcml0aG0gYWxnb3JpdGhtKQorc3RhdGljIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0g
dG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRo
bSBhbGdvcml0aG0pCiB7CiAgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKICAgICBjYXNlIENvbnRl
bnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CiAgICAgY2FzZSBDb250ZW50U2VjdXJpdHlQ
b2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFs
Z29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfNTEyOworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzUxMjsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAgIHJldHVybiBQQUw6OkNyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNh
dGU+CkBAIC0zMzMsNyArMzMzLDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIYXNoSW5FbmZv
cmNlZEFuZFJlcG9ydE9ubHlQb2xpY2llc1BhaXIgQ29udGVudFNlY3VyaXR5UG8KICAgICBib29s
IGZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyA9IGZhbHNlOwogICAgIGJvb2wgZm91bmRIYXNo
SW5SZXBvcnRPbmx5UG9saWNpZXMgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8gYWxnb3JpdGhtIDog
YWxnb3JpdGhtcykgewotICAgICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOworICAgICAgICBhdXRv
IGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RB
bGdvcml0aG0oYWxnb3JpdGhtKSk7CiAgICAgICAgIGNyeXB0b0RpZ2VzdC0+YWRkQnl0ZXMoY29u
dGVudENTdHJpbmcuZGF0YSgpLCBjb250ZW50Q1N0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgIENv
bnRlbnRTZWN1cml0eVBvbGljeUhhc2ggaGFzaCA9IHsgYWxnb3JpdGhtLCBjcnlwdG9EaWdlc3Qt
PmNvbXB1dGVIYXNoKCkgfTsKICAgICAgICAgaWYgKCFmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNp
ZXMgJiYgYWxsUG9saWNpZXNXaXRoRGlzcG9zaXRpb25BbGxvdyhDb250ZW50U2VjdXJpdHlQb2xp
Y3k6OkRpc3Bvc2l0aW9uOjpFbmZvcmNlLCBzdGQ6OmZvcndhcmQ8UHJlZGljYXRlPihwcmVkaWNh
dGUpLCBoYXNoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9D
cnlwdG9EaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9DcnlwdG9EaWdl
c3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFmMDc1YWEzN2NiMzQ2MjA5ODQ3
YTU5OWUxZjU0Mjg0ZjlmMzgxOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBDcnlwdG9EaWdlc3RfaAotI2RlZmluZSBDcnlwdG9EaWdlc3RfaAotCi0jaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0OwotCi1jbGFzcyBDcnlwdG9EaWdl
c3QgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0RpZ2VzdCk7Ci1wdWJsaWM6Ci0g
ICAgZW51bSBjbGFzcyBBbGdvcml0aG0gewotICAgICAgICBTSEFfMSwKLSAgICAgICAgU0hBXzIy
NCwKLSAgICAgICAgU0hBXzI1NiwKLSAgICAgICAgU0hBXzM4NCwKLSAgICAgICAgU0hBXzUxMiwK
LSAgICB9OwotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBjcmVhdGUo
QWxnb3JpdGhtKTsKLSAgICB+Q3J5cHRvRGlnZXN0KCk7Ci0KLSAgICB2b2lkIGFkZEJ5dGVzKGNv
bnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKLSAgICBWZWN0b3I8dWludDhfdD4gY29t
cHV0ZUhhc2goKTsKLQotcHJpdmF0ZToKLSAgICBDcnlwdG9EaWdlc3QoKTsKLQotICAgIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBtX2NvbnRleHQ7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDcnlwdG9EaWdlc3RfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RD
b21tb25DcnlwdG8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNy
eXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlM2ZmYzU2MDUyMjZiNjRiNDkzNzNiZWE2ODVlOTIzZjAxOTliYjRlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8Q29tbW9uQ3J5
cHRvL0NvbW1vbkNyeXB0by5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlw
dG9EaWdlc3RDb250ZXh0IHsKLSAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07
Ci0gICAgdm9pZCogY2NDb250ZXh0OwotfTsKLQotaW5saW5lIENDX1NIQTFfQ1RYKiB0b1NIQTFD
b250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRl
eHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDQ19TSEExX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1p
bmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyMjRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQq
IGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1
Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTI1Nl9DVFgqIHRv
U0hBMjU2Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VS
VChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250
ZXh0KTsKLX0KLWlubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTM4NENvbnRleHQoQ3J5cHRvRGln
ZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hB
NTEyX0NUWCogdG9TSEE1MTJDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17
Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzUxMik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250
ZXh0LT5jY0NvbnRleHQpOwotfQotCi1DcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAg
OiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2Vz
dDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci0gICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkg
ewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICBkZWxl
dGUgdG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgZGVsZXRlIHRv
U0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgZGVsZXRlIHRvU0hB
MjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgZGVsZXRlIHRvU0hBMzg0
Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgZGVsZXRlIHRvU0hBNTEyQ29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi0KLXN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
RGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQt
PmFsZ29yaXRobSA9IGFsZ29yaXRobTsKLQotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKLSAgICAgICAgQ0NfU0hBMV9D
VFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMV9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0
LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEExX0luaXQoY29udGV4dCk7Ci0g
ICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQ6IHsKLSAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBD
Q19TSEEyNTZfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29u
dGV4dDsKLSAgICAgICAgQ0NfU0hBMjI0X0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBk
aWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6
IHsKLSAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOwot
ICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAg
Q0NfU0hBMjU2X0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQot
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAgQ0Nf
U0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOwotICAgICAgICBkaWdlc3Qt
Pm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBMzg0X0luaXQo
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKLSAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29u
dGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2ND
b250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBNTEyX0luaXQoY29udGV4dCk7Ci0gICAg
ICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIH0KLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6
OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIHN3aXRj
aCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMToKLSAgICAgICAgQ0NfU0hBMV9VcGRhdGUodG9TSEExQ29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIENDX1NIQTIyNF9VcGRhdGUo
dG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAg
ICAgICAgQ0NfU0hBMjU2X1VwZGF0ZSh0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwg
aW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICBDQ19TSEEzODRfVXBkYXRlKHRvU0hBMzg0Q29u
dGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIENDX1NI
QTUxMl9VcGRhdGUodG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5n
dGgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRv
RGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAg
ICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzE6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMV9ESUdFU1Rf
TEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBMV9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250
ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTIy
NF9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBMjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCks
IHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgcmVzdWx0LnJl
c2l6ZShDQ19TSEEyNTZfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTI1Nl9GaW5hbChy
ZXN1bHQuZGF0YSgpLCB0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAg
ICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMzg0X0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19T
SEEzODRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQo
KSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfNTEyOgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTUxMl9ESUdFU1RfTEVOR1RIKTsK
LSAgICAgICAgQ0NfU0hBNTEyX0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBNTEyQ29udGV4dCht
X2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEzYzhiZjI0M2RjMDcyYWJiYTg0NjE4OTcz
M2EwZjUzZmQ2YzA0ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdD
cnlwdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IElnYWxpYSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0SG9tZQot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0Lmgi
Ci0KLSNpbmNsdWRlIDxnY3J5cHQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3Qg
Q3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAgaW50IGFsZ29yaXRobTsKLSAgICBnY3J5X21kX2hk
X3QgbWQ7Ci19OwotCi1DcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRl
eHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0
b0RpZ2VzdCgpCi17Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBp
bnQgZ2NyeXB0QWxnb3JpdGhtOwotCi0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGht
ID0gR0NSWV9NRF9TSEExOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NI
QTIyNDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzI1NjoKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEyNTY7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0g
ICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMzg0OwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICBnY3J5
cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTUxMjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0g
ICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3Qp
OwotICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnY3J5cHRBbGdvcml0aG07Ci0K
LSAgICBnY3J5X21kX29wZW4oJmRpZ2VzdC0+bV9jb250ZXh0LT5tZCwgZ2NyeXB0QWxnb3JpdGht
LCAwKTsKLSAgICBpZiAoIWRpZ2VzdC0+bV9jb250ZXh0LT5tZCkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICByZXR1cm4gZGlnZXN0OwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRk
Qnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgZ2NyeV9tZF93
cml0ZShtX2NvbnRleHQtPm1kLCBpbnB1dCwgbGVuZ3RoKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+
IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIGludCBkaWdlc3RMZW4gPSBnY3J5
X21kX2dldF9hbGdvX2RsZW4obV9jb250ZXh0LT5hbGdvcml0aG0pOwotICAgIFZlY3Rvcjx1aW50
OF90PiByZXN1bHQoZGlnZXN0TGVuKTsKLQotICAgIGdjcnlfbWRfZmluYWwobV9jb250ZXh0LT5t
ZCk7Ci0gICAgbWVtY3B5KHJlc3VsdC5kYXRhKCksIGdjcnlfbWRfcmVhZChtX2NvbnRleHQtPm1k
LCAwKSwgZGlnZXN0TGVuKTsKLSAgICBnY3J5X21kX2Nsb3NlKG1fY29udGV4dC0+bWQpOwotCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVU
TFMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdl
c3RHbnVUTFMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWE1ZDgxZjJiNGJl
MjczMmNlZTNlNTI2MzM4NmVkNTljYjIxNGRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nbnV0bHMv
Q3J5cHRvRGlnZXN0R251VExTLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3Qu
aCIKLQotI2luY2x1ZGUgPGdudXRscy9nbnV0bHMuaD4KLSNpbmNsdWRlIDxnbnV0bHMvY3J5cHRv
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQg
ewotICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgYWxnb3JpdGhtOwotICAgIGdudXRsc19o
YXNoX2hkX3QgaGFzaDsKLX07Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6
IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0
Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLSAgICBnbnV0bHNfaGFzaF9kZWluaXQobV9jb250ZXh0LT5o
YXNoLCAwKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQotewotICAgIGdudXRs
c19kaWdlc3RfYWxnb3JpdGhtX3QgZ251dGxzQWxnb3JpdGhtOwotCi0gICAgc3dpdGNoIChhbGdv
cml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewotICAg
ICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTE7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7Ci0gICAg
ICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjI0OwotICAgICAgICBicmVhazsK
LSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogewotICAg
ICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTI1NjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKLSAg
ICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEzODQ7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0g
ICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBNTEyOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgfQotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGln
ZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0g
PSBnbnV0bHNBbGdvcml0aG07Ci0KLSAgICBpbnQgcmV0ID0gZ251dGxzX2hhc2hfaW5pdCgmZGln
ZXN0LT5tX2NvbnRleHQtPmhhc2gsIGdudXRsc0FsZ29yaXRobSk7Ci0gICAgaWYgKHJldCAhPSBH
TlVUTFNfRV9TVUNDRVNTKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBk
aWdlc3Q7Ci19Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1
dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBnbnV0bHNfaGFzaChtX2NvbnRleHQtPmhhc2gsIGlu
cHV0LCBsZW5ndGgpOwotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRl
SGFzaCgpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBpbnQgZGlnZXN0TGVu
ID0gZ251dGxzX2hhc2hfZ2V0X2xlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7Ci0gICAgcmVzdWx0
LnJlc2l6ZShkaWdlc3RMZW4pOwotCi0gICAgZ251dGxzX2hhc2hfb3V0cHV0KG1fY29udGV4dC0+
aGFzaCwgcmVzdWx0LmRhdGEoKSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlw
dG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlw
dG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDc2Y2MxOTJjMmIzMDM5NTk0MzBmMjQ5YzczNjM0YjEzOWM3YThhNDQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRv
RGlnZXN0LmgiCi0KLSNpbmNsdWRlIDx3aW5jcnlwdC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKLSAgICBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobSBhbGdvcml0aG07Ci0gICAgSENSWVBUUFJPViBoQ29udGV4dCB7IDAgfTsKLSAgICBIQ1JZ
UFRIQVNIIGhIYXNoIHsgMCB9OwotfTsKLQotQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQot
ICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQotewotfQotCi1DcnlwdG9E
aWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotICAgIGlmIChIQ1JZUFRIQVNIIGhIYXNoID0gbV9j
b250ZXh0LT5oSGFzaCkKLSAgICAgICAgQ3J5cHREZXN0cm95SGFzaChoSGFzaCk7Ci0gICAgaWYg
KEhDUllQVFBST1YgaENvbnRleHQgPSBtX2NvbnRleHQtPmhDb250ZXh0KQotICAgICAgICBDcnlw
dFJlbGVhc2VDb250ZXh0KGhDb250ZXh0LCAwKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7
Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRobTsKLSAgICBpZiAo
IUNyeXB0QWNxdWlyZUNvbnRleHQoJmRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgbnVsbHB0
ciwgbnVsbHB0ciAvKiB1c2UgZGVmYXVsdCBwcm92aWRlciAqLywgUFJPVl9SU0FfQUVTLCBDUllQ
VF9WRVJJRllDT05URVhUKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYm9vbCBzdWNj
ZWVkZWQgPSBmYWxzZTsKLSAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3Jl
YXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBMSwgMCwgMCwgJmRp
Z2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9
IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzI1
NiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7Ci0gICAgICAg
IHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQs
IENBTEdfU0hBXzM4NCwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEy
OiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4
dC0+aENvbnRleHQsIENBTEdfU0hBXzUxMiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFz
aCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0gICAgaWYgKHN1Y2NlZWRlZCkKLSAg
ICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBDcnlw
dG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewot
ICAgIGlmICghaW5wdXQgfHwgIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuOwotICAgIFJFTEVBU0Vf
QVNTRVJUKENyeXB0SGFzaERhdGEobV9jb250ZXh0LT5oSGFzaCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBCWVRFKj4oaW5wdXQpLCBsZW5ndGgsIDApKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENy
eXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQotewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7
Ci0gICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyOwotICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1
ZmZlclNpemUgPSBzaXplb2YoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKLQotICAgIFJFTEVBU0VfQVNT
RVJUKENyeXB0R2V0SGFzaFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hTSVpFLCByZWlu
dGVycHJldF9jYXN0PEJZVEUqPigmZGlnZXN0TGVuZ3RoQnVmZmVyKSwgJmRpZ2VzdExlbmd0aEJ1
ZmZlclNpemUsIDApKTsKLSAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbmd0aEJ1ZmZlcik7Ci0K
LSAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBI
UF9IQVNIVkFMLCByZXN1bHQuZGF0YSgpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyLCAwKSk7Ci0gICAg
UkVMRUFTRV9BU1NFUlQocmVzdWx0LnNpemUoKSA9PSBkaWdlc3RMZW5ndGhCdWZmZXIpOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vz
c2lvbi5jcHAKaW5kZXggODUyYjliOGJlZWJmYTExYmNmMzE0NWZhNmJiNjFjMjUwOTMwYmYzOC4u
MjZkYjdmMjdkMGE2MWU5YzkwOTUwODJiOWExY2ZiZTZmOGQyN2Y5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vz
c2lvbi5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24u
aCIKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCi0jaW5jbHVkZSAiQ3J5
cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkdVbmlxdWVQ
dHJTb3VwLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2luY2x1
ZGUgIlNvdXBOZXR3b3JrUHJveHlTZXR0aW5ncy5oIgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+
CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9E
aWdlc3QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtNzgsNyArNzgsNyBA
QCBwcml2YXRlOgogICAgICAgICBpZiAoIWNlcnRpZmljYXRlRGF0YSkKICAgICAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAotICAgICAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICAgICAgYXV0byBkaWdl
c3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yNTYpOwogICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGNlcnRpZmljYXRlRGF0YS0+
ZGF0YSwgY2VydGlmaWNhdGVEYXRhLT5sZW4pOwogCiAgICAgICAgIGF1dG8gaGFzaCA9IGRpZ2Vz
dC0+Y29tcHV0ZUhhc2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFr
ZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZQppbmRleCAyOWEwOTY5MDM4ZmFhNzQ0ZTFh
OGM1OGYzNTZhZDA3M2YwMDUyNWJkLi41MTMwZmZjYmNjN2M5Y2U3NTE0YWY0ZDU1M2JkOGE0ZjA1
MDE0NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UKKysrIGIvU291
cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlCkBAIC0xMCw2ICsxMCw5IEBAIGVuZGlmICgpCiBpZiAo
Tk9UIFdFQkNPUkVfRElSKQogICAgIHNldChXRUJDT1JFX0RJUiAiJHtDTUFLRV9TT1VSQ0VfRElS
fS9Tb3VyY2UvV2ViQ29yZSIpCiBlbmRpZiAoKQoraWYgKE5PVCBQQUxfRElSKQorICAgIHNldChQ
QUxfRElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJDb3JlL1BBTCIpCitlbmRpZiAo
KQogaWYgKE5PVCBXRUJLSVRfRElSKQogICAgIHNldChXRUJLSVRfRElSICIke0NNQUtFX1NPVVJD
RV9ESVJ9L1NvdXJjZS9XZWJLaXQiKQogZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvYnVpbGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggM2JlMmJi
NGVjZTdkYjY4NzI2N2ZlY2ZlZWRkNjRhYjgzYzM0ZDBlZS4uYTg1MGQ3OTFmZGQ1OTRiYjY5YzJk
NWZiM2U4MGViMmQyNWQ0MzNiZiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJr
aXQKKysrIGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTE0Myw3ICsxNDMsNyBAQCBz
ZXRDb25maWd1cmF0aW9uKCk7CiBteSAkcHJvZHVjdERpciA9IHByb2R1Y3REaXIoKTsKIAogIyBD
aGVjayB0aGF0IGFsbCB0aGUgcHJvamVjdCBkaXJlY3RvcmllcyBhcmUgdGhlcmUuCi1teSBAcHJv
amVjdHMgPSAoIlNvdXJjZS9KYXZhU2NyaXB0Q29yZSIsICJTb3VyY2UvV2ViQ29yZSIsICJTb3Vy
Y2UvV2ViS2l0Iik7CitteSBAcHJvamVjdHMgPSAoIlNvdXJjZS9KYXZhU2NyaXB0Q29yZSIsICJT
b3VyY2UvV2ViQ29yZS9QQUwiLCAiU291cmNlL1dlYkNvcmUiLCAiU291cmNlL1dlYktpdCIpOwog
CiAjIEJ1aWxkIFdURiBhcyBhIHNlcGFyYXRlIHN0YXRpYyBsaWJyYXJ5IG9uIHBvcnRzIHdoaWNo
IHN1cHBvcnQgaXQuCiBzcGxpY2UgQHByb2plY3RzLCAwLCAwLCAiU291cmNlL1dURiIgaWYgaXNB
cHBsZVdlYktpdCgpIG9yIGlzV2luQ2Fpcm8oKTsKZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0
IGIvQ01ha2VMaXN0cy50eHQKaW5kZXggYmYzYzRlZmFiMGVhZjJjYWMyNmFlNzY2Yzc2N2MxYTY2
OTliN2I0NC4uYmIzMzE4YzJiNjUxZmZmNmIzYTlkMTdmYmQzZDYyZjEyNTcxMmEyNiAxMDA2NDQK
LS0tIGEvQ01ha2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50eHQKQEAgLTExNCw2ICsxMTQs
NyBAQCBlbHNlICgpCiBlbmRpZiAoKQogCiBzZXQoSmF2YVNjcmlwdENvcmVfTElCUkFSWV9UWVBF
IFNIQVJFRCkKK3NldChQQUxfTElCUkFSWV9UWVBFIFNUQVRJQykKIHNldChXZWJLaXRfTElCUkFS
WV9UWVBFIFNIQVJFRCkKIHNldChXZWJLaXQyX0xJQlJBUllfVFlQRSBTSEFSRUQpCiBzZXQoV2Vi
Q29yZVRlc3RTdXBwb3J0X0xJQlJBUllfVFlQRSBTVEFUSUMpCmRpZmYgLS1naXQgYS9DaGFuZ2VM
b2cgYi9DaGFuZ2VMb2cKaW5kZXggNjQ5NDVhNDc2MmMxZjNlOWVjZmQ0YjkyMGQ5MGNhMjFmYTMx
YjRlNi4uNGU5YzQyYTBhMzQyZjExYzlmMzBmODYyOTljYWQ5MzBiNzI5NGI1MSAxMDA2NDQKLS0t
IGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAxLTE5
ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50
cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIFNvdXJjZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
V2ViS2l0RlMuY21ha2U6CisKIDIwMTctMDEtMTcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KIAogICAgICAgICBFTkFCTEUoVVNFUl9USU1JTkcpIE5vdCBEZWZpbmVkIGZv
ciBBcHBsZSBXaW5kb3dzIG9yIE9TIFggUG9ydHMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299333</attachid>
            <date>2017-01-20 00:53:59 -0800</date>
            <delta_ts>2017-01-20 01:12:34 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-143358-20170120005158.patch</filename>
            <type>text/plain</type>
            <size>96632</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQwZTFlNjFkMTIzNWZm
ZDcxZmRlMGNlMGQyYWI5Y2JmMDM2MmI5Mi4uYTU3NmU4MWRjMDMzZjJiMzFmNTliODBiNGE0Y2U5
N2Q1ZDU3OTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTAxLTE5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNv
cmUueGNjb25maWc6CisgICAgICAgICogUEFML0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6
IEFkZGVkLgorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25m
aWc6IEFkZGVkLgorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIFBBTC9NYWtlZmlsZTogQWRkZWQuCisgICAgICAgICogUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvY29uZmlnLmg6
IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwvQ01ha2VMaXN0cy50eHQ6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9wYWwvUGxhdGZvcm1FZmwuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwv
UGxhdGZvcm1HVEsuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwvUGxhdGZvcm1NYWMu
Y21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwvUGxhdGZvcm1XaW4uY21ha2U6IEFkZGVk
LgorICAgICAgICAqIFBBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oLgorICAgICAgICAq
IFBBTC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0
by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwLgorICAgICAgICAqIFBBTC9wYWwvY3J5cHRv
L2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwLgorICAgICAg
ICAqIFBBTC9wYWwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RH
bnVUTFMuY3BwLgorICAgICAgICAqIFBBTC9wYWwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4u
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9Dcnlw
dG9EaWdlc3RXaW4uY3BwLgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAg
ICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdCk6
CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KToKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOgorICAgICAgICAqIGNy
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
eXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjpzaWduUlNBU1NBX1BLQ1Mx
X3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFzaCk6CisgICAgICAgICogcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5
cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhv
c3RUTFNDZXJ0aWZpY2F0ZVNldDo6Y29tcHV0ZUNlcnRpZmljYXRlSGFzaCk6CisKIDIwMTctMDEt
MTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBpdGVyYWJsZTw+
IHNob3VsZCBiZSBlbmFibGVkIG9uIFdLMQpkaWZmIC0tZ2l0IGEvU291cmNlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFiOGEyZGNiNTA0ZmI1NTZhYmM1ZjU4
M2I3NmJlMzhkOTJmMGZkZjEuLjE1ZmRmMjI0YTg5NjZiZTExZGNmNjNlMmZhOGY1ODdhMDNlNzI2
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvQ01ha2VM
aXN0cy50eHQKQEAgLTQ2LDYgKzQ2LDcgQEAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFH
UyhXVEYgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKIFdFQktJVF9TRVRfRVhUUkFfQ09N
UElMRVJfRkxBR1MoSmF2YVNjcmlwdENvcmUgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkK
IAogaWYgKEVOQUJMRV9XRUJDT1JFKQorICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxB
R1MoUEFMICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAgICAgV0VCS0lUX1NFVF9FWFRS
QV9DT01QSUxFUl9GTEFHUyhXZWJDb3JlVGVzdFN1cHBvcnQgJHtBRERJVElPTkFMX0NPTVBJTEVS
X0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmUgJHtB
RERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVS
X0ZMQUdTKFdlYkNvcmVEZXJpdmVkU291cmNlcyAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9
KQpkaWZmIC0tZ2l0IGEvU291cmNlL01ha2VmaWxlIGIvU291cmNlL01ha2VmaWxlCmluZGV4IDk5
ZDJkZjZhOWQ5NTk2MDMzYWVjYjE4YjAwYmE4ZTVmNzkzMzI0NTYuLjI2YTMzOWYxMTRkYWZkOGNl
MmI5Y2QyYTY5ODA2ZjYwODk4MDAzOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9NYWtlZmlsZQorKysg
Yi9Tb3VyY2UvTWFrZWZpbGUKQEAgLTEsNCArMSw0IEBACi1NT0RVTEVTID0gYm1hbGxvYyBXVEYg
SmF2YVNjcmlwdENvcmUgVGhpcmRQYXJ0eS9BTkdMRSBXZWJDb3JlIFdlYkluc3BlY3RvclVJIFdl
YktpdCBXZWJLaXQyCitNT0RVTEVTID0gYm1hbGxvYyBXVEYgSmF2YVNjcmlwdENvcmUgVGhpcmRQ
YXJ0eS9BTkdMRSBXZWJDb3JlL1BBTCBXZWJDb3JlIFdlYkluc3BlY3RvclVJIFdlYktpdCBXZWJL
aXQyCiAKIGlmbmVxICgsJChTREtST09UKSkKIAlpZmVxICgsJChmaW5kc3RyaW5nIG1hY29zeCwk
KFNES1JPT1QpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjUwNDNjNTA3NTZhNDRmODQ2YjNj
NjVjYjJmYTU1NjY0MDRjMTUzNC4uNjhhNTk3MzljZjFkODU4MTY5M2E4YzE0N2QzODViOWM2Mjdh
ZmNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEsNiArMSw3IEBACiBjbWFrZV9taW5pbXVt
X3JlcXVpcmVkKFZFUlNJT04gMi44LjEyKQogaW5jbHVkZShXZWJLaXRDb21tb24pCiBzZXRfcHJv
cGVydHkoRElSRUNUT1JZIC4gUFJPUEVSVFkgRk9MREVSICJXZWJDb3JlIikKK2FkZF9zdWJkaXJl
Y3RvcnkoUEFML3BhbCkKIAogc2V0KFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e0NNQUtFX0JJTkFSWV9ESVJ9IgpAQCAtMjk0NSw2ICsyOTQ2LDcgQEAgc2V0KFdlYkNvcmVfUExV
R19JTlNfUkVTT1VSQ0VTCiBzZXQoV2ViQ29yZV9MSUJSQVJJRVMKICAgICAke0lDVV9MSUJSQVJJ
RVN9CiAgICAgSmF2YVNjcmlwdENvcmUke0RFQlVHX1NVRkZJWH0KKyAgICBQQUwke0RFQlVHX1NV
RkZJWH0KICkKIAogaWYgKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKaW5kZXggNmIxOWFjZjY0
NWNkODk5NmQ2MDNiNGEwMDE0NGVhYjg2ZGM4YjQzNy4uZDViZjI5ODU2ZTA3ZTMxMjY1OTdiNmU3
MzQxMTA5NDA5NGQwM2Y2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlv
bnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9X
ZWJDb3JlLnhjY29uZmlnCkBAIC00Niw3ICs0Niw3IEBAIE9USEVSX0NQTFVTUExVU0ZMQUdTID0g
JChPVEhFUl9DRkxBR1MpOwogCiBXRUJLSVRBRERJVElPTlNfSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnMg
JChTREtST09UKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnM7CiAKLUhFQURFUl9T
RUFSQ0hfUEFUSFMgPSBGb3J3YXJkaW5nSGVhZGVycyBpY3UgL3Vzci9pbmNsdWRlL2xpYnhzbHQg
L3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNl
cy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAkKFdF
QktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
OworSEVBREVSX1NFQVJDSF9QQVRIUyA9IFBBTCBGb3J3YXJkaW5nSGVhZGVycyBpY3UgL3Vzci9p
bmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJTFRfUFJPRFVDVFNfRElS
KS9EZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2Nh
bC9pbmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKEhFQURF
Ul9TRUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwogSU5TVEFMTF9Q
QVRIID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzOwogSU5TVEFMTF9Q
QVRIW3Nkaz1tYWNvc3gqXSA9ICQoV0VCQ09SRV9GUkFNRVdPUktTX0RJUik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0
ZTI1MmJjY2NkZDk1MDUzNDE5MWQ5YWRkNTc0MGJhZjllNDdjYTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtMCww
ICsxLDI0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8g
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisv
LyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8g
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
Ky8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNsdWRl
ICIuLi8uLi9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNjJiMDhiZTBlZTEyZTE1NmJlZjg0NDBjMTYzNzE0M2EwMzQ1N2MzNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2Uu
eGNjb25maWcKQEAgLTAsMCArMSwyNCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
Ly8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisv
LyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorCisjaW5jbHVkZSAiLi4vLi4vQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29u
ZmlnIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL1BBTC54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzE1MmMxMWRkYjM0MGM1YmQ1M2NlMzYyZjUzMzQ3NmRlOWRkYTQ5NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9QQUwueGNj
b25maWcKQEAgLTAsMCArMSwzOCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8g
YXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorCisjaW5jbHVkZSAiLi4vLi4vQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZyIKKwor
SU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfJChDT05GSUdVUkFUSU9OKSk7CitJTlNUQUxM
X1BBVEhfUHJvZHVjdGlvbiA9IC91c3IvbG9jYWwvbGliOworCitTS0lQX0lOU1RBTEwgPSAkKFNL
SVBfSU5TVEFMTF8kKEZPUkNFX1RPT0xfSU5TVEFMTCkpOworU0tJUF9JTlNUQUxMXyA9IFlFUzsK
K1NLSVBfSU5TVEFMTF9OTyA9IFlFUzsKK1NLSVBfSU5TVEFMTF9ZRVMgPSBOTzsKKworUFJPRFVD
VF9OQU1FID0gUEFMOworRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CitFWFBPUlRFRF9TWU1CT0xT
X0ZJTEUgPSA7CisKK0dDQ19QUkVGSVhfSEVBREVSID0gOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML01ha2VmaWxlIGIvU291cmNlL1dlYkNvcmUvUEFML01ha2VmaWxlCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNmNmQzNmZhMGUwMWRlYzAwNGZlN2EyMjY1ZGNjODM5NzA2Njg1MjEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvTWFrZWZpbGUKQEAgLTAsMCArMSwyIEBACitTQ1JJ
UFRTX1BBVEggPSAuLi8uLi8uLi9Ub29scy9TY3JpcHRzCitpbmNsdWRlIC4uLy4uLy4uL01ha2Vm
aWxlLnNoYXJlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3M2ZkOGIyYTExMzA3NGZiN2Q3MGMwMzBiZTA2ODUzMzZk
ODM0YjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTAsMCArMSwyNDMgQEAKKy8vICEkKlVURjgqJCEKK3sKKwlh
cmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA0
NjsKKwlvYmplY3RzID0geworCisvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQkx
QzA5RDA1MzFFMzFDNDQxMDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzA5RDA1MjFFMzFDNDQxMDA3MjVGMTgg
LyogQ3J5cHRvRGlnZXN0LmggKi87IH07CisJCTFDMDlEMDU2MUUzMUM0NjUwMDcyNUYxOCAvKiBD
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUMwOUQwNTUxRTMxQzQ2NTAwNzI1RjE4IC8qIENyeXB0b0RpZ2Vz
dENvbW1vbkNyeXB0by5jcHAgKi87IH07CisJCTFDMDlEMDU4MUUzMUM1N0UwMDcyNUYxOCAvKiBj
b25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
MDlEMDU3MUUzMUM1N0UwMDcyNUYxOCAvKiBjb25maWcuaCAqLzsgfTsKKy8qIEVuZCBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
KwkJMUMwOUQwM0QxRTMxQzMyODAwNzI1RjE4IC8qIGxpYlBBTC5hICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRl
eCA9IDA7IHBhdGggPSBsaWJQQUwuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKKwkJMUMwOUQwNTIxRTMxQzQ0MTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9EaWdlc3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUMwOUQwNTUxRTMxQzQ2NTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdENv
bW1vbkNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwOyBwYXRoID0gY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2Vz
dENvbW1vbkNyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMDlEMDU3
MUUzMUM1N0UwMDcyNUYxOCAvKiBjb25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gY29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMDlEMDVEMUUz
MUM3N0EwMDcyNUYxOCAvKiBQQUwueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gUEFMLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzA5RDA2
MjFFMzFFQzI4MDA3MjVGMTggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMUMwOUQwNjMxRTMxRUMzMTAwNzI1RjE4IC8qIEJhc2UueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKy8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwor
LyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkxQzA5RDAzQTFF
MzFDMzI4MDA3MjVGMTggLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29y
a3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVz
ID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwor
CQl9OworLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYR3JvdXAgc2VjdGlvbiAqLworCQkxQzA5RDAzNDFFMzFDMzI4MDA3MjVGMTggPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDVDMUUzMUM3MzMw
MDcyNUYxOCAvKiBDb25maWd1cmF0aW9ucyAqLywKKwkJCQkxQzA5RDA1NzFFMzFDNTdFMDA3MjVG
MTggLyogY29uZmlnLmggKi8sCisJCQkJMUMwOUQwM0YxRTMxQzMyODAwNzI1RjE4IC8qIHBhbCAq
LywKKwkJCQkxQzA5RDAzRTFFMzFDMzI4MDA3MjVGMTggLyogUHJvZHVjdHMgKi8sCisJCQkpOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUMwOUQwM0UxRTMxQzMyODAwNzI1
RjE4IC8qIFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQkxQzA5RDAzRDFFMzFDMzI4MDA3MjVGMTggLyogbGliUEFMLmEgKi8sCisJCQkpOwor
CQkJbmFtZSA9IFByb2R1Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJ
MUMwOUQwM0YxRTMxQzMyODAwNzI1RjE4IC8qIHBhbCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMwOUQwNTExRTMxQzQxMjAwNzI1RjE4IC8qIGNyeXB0
byAqLywKKwkJCSk7CisJCQlwYXRoID0gcGFsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJMUMwOUQwNTExRTMxQzQxMjAwNzI1RjE4IC8qIGNyeXB0byAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMwOUQwNTQxRTMxQzQ1MjAwNzI1
RjE4IC8qIGNvbW1vbmNyeXB0byAqLywKKwkJCQkxQzA5RDA1MjFFMzFDNDQxMDA3MjVGMTggLyog
Q3J5cHRvRGlnZXN0LmggKi8sCisJCQkpOworCQkJcGF0aCA9IGNyeXB0bzsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDMDlEMDU0MUUzMUM0NTIwMDcyNUYxOCAvKiBjb21t
b25jcnlwdG8gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTFDMDlEMDU1MUUzMUM0NjUwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3Bw
ICovLAorCQkJKTsKKwkJCW5hbWUgPSBjb21tb25jcnlwdG87CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OworCQkxQzA5RDA1QzFFMzFDNzMzMDA3MjVGMTggLyogQ29uZmlndXJhdGlv
bnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlE
MDVEMUUzMUM3N0EwMDcyNUYxOCAvKiBQQUwueGNjb25maWcgKi8sCisJCQkJMUMwOUQwNjIxRTMx
RUMyODAwNzI1RjE4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLywKKwkJCQkxQzA5RDA2MzFF
MzFFQzMxMDA3MjVGMTggLyogQmFzZS54Y2NvbmZpZyAqLywKKwkJCSk7CisJCQlwYXRoID0gQ29u
ZmlndXJhdGlvbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworLyogRW5kIFBC
WEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCQkxQzA5RDAzQjFFMzFDMzI4MDA3MjVGMTggLyogSGVhZGVycyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEhlYWRlcnNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJCTFDMDlEMDU4MUUzMUM1N0UwMDcyNUYxOCAvKiBjb25maWcu
aCBpbiBIZWFkZXJzICovLAorCQkJCTFDMDlEMDUzMUUzMUM0NDEwMDcyNUYxOCAvKiBDcnlwdG9E
aWdlc3QuaCBpbiBIZWFkZXJzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKworLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMUMwOUQwM0Mx
RTMxQzMyODAwNzI1RjE4IC8qIFBBTCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsK
KwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxQzA5RDA0ODFFMzFDMzI4MDA3MjVGMTggLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIgKi87CisJ
CQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxQzA5RDAzOTFFMzFDMzI4MDA3MjVGMTggLyogU291cmNl
cyAqLywKKwkJCQkxQzA5RDAzQTFFMzFDMzI4MDA3MjVGMTggLyogRnJhbWV3b3JrcyAqLywKKwkJ
CQkxQzA5RDAzQjFFMzFDMzI4MDA3MjVGMTggLyogSGVhZGVycyAqLywKKwkJCSk7CisJCQlidWls
ZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0g
UEFMOworCQkJcHJvZHVjdE5hbWUgPSBQQUw7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMUMwOUQw
M0QxRTMxQzMyODAwNzI1RjE4IC8qIGxpYlBBTC5hICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29t
LmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyI7CisJCX07CisvKiBFbmQgUEJYTmF0
aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJ
CTFDMDlEMDM1MUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlz
YSA9IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJCUxhc3RVcGdyYWRlQ2hlY2sg
PSAwODMwOworCQkJCVRhcmdldEF0dHJpYnV0ZXMgPSB7CisJCQkJCTFDMDlEMDNDMUUzMUMzMjgw
MDcyNUYxOCA9IHsKKwkJCQkJCUNyZWF0ZWRPblRvb2xzVmVyc2lvbiA9IDguMzsKKwkJCQkJCVBy
b3Zpc2lvbmluZ1N0eWxlID0gQXV0b21hdGljOworCQkJCQl9OworCQkJCX07CisJCQl9OworCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFDMDlEMDM4MUUzMUMzMjgwMDcyNUYxOCAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIlBBTCIgKi87CisJCQljb21wYXRp
YmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmds
aXNoOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CisJCQlrbm93blJlZ2lvbnMgPSAo
CisJCQkJRW5nbGlzaCwKKwkJCQlKYXBhbmVzZSwKKwkJCQlGcmVuY2gsCisJCQkJR2VybWFuLAor
CQkJCVNwYW5pc2gsCisJCQkJRHV0Y2gsCisJCQkJSXRhbGlhbiwKKwkJCSk7CisJCQltYWluR3Jv
dXAgPSAxQzA5RDAzNDFFMzFDMzI4MDA3MjVGMTg7CisJCQlwcm9kdWN0UmVmR3JvdXAgPSAxQzA5
RDAzRTFFMzFDMzI4MDA3MjVGMTggLyogUHJvZHVjdHMgKi87CisJCQlwcm9qZWN0RGlyUGF0aCA9
ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJCXRhcmdldHMgPSAoCisJCQkJMUMwOUQwM0Mx
RTMxQzMyODAwNzI1RjE4IC8qIFBBTCAqLywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVj
dCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
KwkJMUMwOUQwMzkxRTMxQzMyODAwNzI1RjE4IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCQkxQzA5RDA1NjFFMzFDNDY1MDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0
Q29tbW9uQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAq
LworCQkxQzA5RDA0NjFFMzFDMzI4MDA3MjVGMTggLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMw
OUQwNjIxRTMxRUMyODAwNzI1RjE4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJREVBRF9DT0RFX1NUUklQUElORyA9ICIkKERFQURfQ09ERV9T
VFJJUFBJTkdfZGVidWcpIjsKKwkJCQlERUJVR19ERUZJTkVTID0gIiQoREVCVUdfREVGSU5FU19k
ZWJ1ZykiOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAiJChHQ0NfT1BUSU1JWkFUSU9O
X0xFVkVMX2RlYnVnKSI7CisJCQkJU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgPSAiJChTVFJJUF9J
TlNUQUxMRURfUFJPRFVDVF9kZWJ1ZykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsK
KwkJMUMwOUQwNDcxRTMxQzMyODAwNzI1RjE4IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMw
OUQwNjIxRTMxRUMyODAwNzI1RjE4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgPSBOTzsKKwkJCX07
CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMUMwOUQwNDkxRTMxQzMyODAwNzI1RjE4IC8q
IERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29u
ZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDMDlEMDVEMUUzMUM3N0EwMDcyNUYxOCAvKiBQQUwueGNj
b25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsK
KwkJfTsKKwkJMUMwOUQwNEExRTMxQzMyODAwNzI1RjE4IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gMUMwOUQwNUQxRTMxQzc3QTAwNzI1RjE4IC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTFDMDlEMDVB
MUUzMUM2RjAwMDcyNUYxOCAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDMDlEMDYzMUUz
MUVDMzEwMDcyNUYxOCAvKiBCYXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMUMwOUQwNUIxRTMxQzZGMDAw
NzI1RjE4IC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNUQxRTMxQzc3QTAwNzI1
RjE4IC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJ
bmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2Vj
dGlvbiAqLworCisvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMUMw
OUQwMzgxRTMxQzMyODAwNzI1RjE4IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
UHJvamVjdCAiUEFMIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTFDMDlEMDQ2MUUzMUMzMjgwMDcyNUYxOCAvKiBE
ZWJ1ZyAqLywKKwkJCQkxQzA5RDA0NzFFMzFDMzI4MDA3MjVGMTggLyogUmVsZWFzZSAqLywKKwkJ
CQkxQzA5RDA1QTFFMzFDNkYwMDA3MjVGMTggLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkxQzA5RDA0ODFFMzFDMzI4MDA3MjVGMTggLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIlBBTCIgKi8gPSB7
CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKKwkJCQkxQzA5RDA0OTFFMzFDMzI4MDA3MjVGMTggLyogRGVidWcgKi8sCisJCQkJMUMwOUQw
NEExRTMxQzMyODAwNzI1RjE4IC8qIFJlbGVhc2UgKi8sCisJCQkJMUMwOUQwNUIxRTMxQzZGMDAw
NzI1RjE4IC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25J
c1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsK
KwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJvb3RP
YmplY3QgPSAxQzA5RDAzNTFFMzFDMzI4MDA3MjVGMTggLyogUHJvamVjdCBvYmplY3QgKi87Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvY29uZmlnLmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQ4OGM4MGFkZjZjMTFmNmMzMDgyMDNhOGU3MmVh
NDgzNjg2ZjNmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcu
aApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmIGRlZmlu
ZWQoSEFWRV9DT05GSUdfSCkgJiYgSEFWRV9DT05GSUdfSCAmJiBkZWZpbmVkKEJVSUxESU5HX1dJ
VEhfQ01BS0UpCisjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisKKyNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CisKKyNpZmRl
ZiBfX0FQUExFX18KKyNkZWZpbmUgSEFWRV9GVU5DX1VTTEVFUCAxCisjZW5kaWYgLyogX19BUFBM
RV9fICovCisKKyNpZiBPUyhXSU5ET1dTKQorCisjaWZuZGVmIF9XSU4zMl9XSU5OVAorI2RlZmlu
ZSBfV0lOMzJfV0lOTlQgMHg2MDEKKyNlbmRpZgorCisjaWZuZGVmIFdJTlZFUgorI2RlZmluZSBX
SU5WRVIgMHgwNjAxCisjZW5kaWYKKworI2VuZGlmIC8qIE9TKFdJTkRPV1MpICovCisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworCisvLyBUaGVzZSB1bmRlZnMgbWF0Y2ggdXAgd2l0aCBkZWZpbmVzIGlu
IFdlYkNvcmVQcmVmaXguaCBmb3IgTWFjIE9TIFguCisvLyBIZWxwcyB1cyBjYXRjaCBpZiBhbnlv
bmUgdXNlcyBuZXcgb3IgZGVsZXRlIGJ5IGFjY2lkZW50IGluIGNvZGUgYW5kIGRvZXNuJ3QgaW5j
bHVkZSAiY29uZmlnLmgiLgorI3VuZGVmIG5ldworI3VuZGVmIGRlbGV0ZQorI2luY2x1ZGUgPHd0
Zi9GYXN0TWFsbG9jLmg+CisKKyNpbmNsdWRlIDxjaXNvNjQ2PgorCisjZW5kaWYKKworI2luY2x1
ZGUgPHd0Zi9EaXNhbGxvd0NUeXBlLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hZmY2MzA0MDUyODFjMDNmZjkwMGYzMGU5Yjc4MDRiOTM0YjBmYTYwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9DTWFrZUxpc3RzLnR4dApA
QCAtMCwwICsxLDQzIEBACitzZXQoUEFMX0hFQURFUlMKKyAgICBjcnlwdG8vQ3J5cHRvRGlnZXN0
LmgKKykKKworc2V0KFBBTF9TT1VSQ0VTCispCisKK3NldChQQUxfSU5DTFVERV9ESVJFQ1RPUklF
UworICAgICIke1BBTF9ESVJ9IgorICAgICIke1BBTF9ESVJ9L3BhbCIKKyAgICAiJHtQQUxfRElS
fS9wYWwvY3J5cHRvIgorKQorCitzZXQoUEFMX0xJQlJBUklFUworICAgIFdURgorKQorCitXRUJL
SVRfSU5DTFVERV9DT05GSUdfRklMRVNfSUZfRVhJU1RTKCkKKworV0VCS0lUX1dSQVBfU09VUkNF
TElTVCgke1BBTF9TT1VSQ0VTfSkKK1dFQktJVF9GUkFNRVdPUksoUEFMKQorCitpZiAoVU5JWCkK
KyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAgIFRBUkdFVCBQQUwKKyAgICAgICAgUE9T
VF9CVUlMRAorICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7V0VCQ09SRV9E
SVJ9L1NjcmlwdHMvRW5mb3JjZVBBTExheWVyaW5nLnB5ICQ8VEFSR0VUX0ZJTEU6UEFMPiAke1BB
TF9ESVJ9CisgICAgICAgIFZFUkJBVElNKQorZW5kaWYgKCkKKworaWYgKE1TVkMpCisgICAgYWRk
X2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJHRVQgUEFMCisgICAgICAgIFBSRV9CVUlMRAor
ICAgICAgICBDT01NQU5EICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVF9MSUJSQVJJRVNfRElS
fS90b29scy9zY3JpcHRzL2F1dG8tdmVyc2lvbi5wbCAke0RFUklWRURfU09VUkNFU19ESVJ9Cisg
ICAgICAgIFZFUkJBVElNKQorCisgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICAgICBUQVJH
RVQgUEFMCisgICAgICAgIFBPU1RfQlVJTEQKKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VU
QUJMRX0gJHtXRUJLSVRfTElCUkFSSUVTX0RJUn0vdG9vbHMvc2NyaXB0cy92ZXJzaW9uLXN0YW1w
LnBsICR7REVSSVZFRF9TT1VSQ0VTX0RJUn0gJDxUQVJHRVRfRklMRTpQQUw+CisgICAgICAgIFZF
UkJBVElNKQorZW5kaWYgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxh
dGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtl
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc3NWMxODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmExYTE1ZmM2M2IKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtl
CkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2Ny
eXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRm
b3JtR1RLLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3NWMxODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmEx
YTE1ZmM2M2IKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRm
b3JtR1RLLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAg
ICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmOTY4ZWM0ZDk4ZTQxZjczNzI5
MGY4ZjRmMjhmNzRmNmEyZTYxZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFM
X1NPVVJDRVMKKyAgICBjcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0
by5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW4u
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZmNjkxOWY3NmYxMDhmNzJlYzg4N2ExYjczNTA3ODE3MjJhMjU4YTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0wLDAg
KzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vd2luL0NyeXB0b0Rp
Z2VzdFdpbi5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L0NyeXB0b0RpZ2VzdC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vQ3J5cHRvRGln
ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTg4ZTEyNzdjNDk3OWNiMDRiMDAxZTM1M2U4YzhlOGUyOTkzYjMy
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL0NyeXB0
b0RpZ2VzdC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0OworCitj
bGFzcyBDcnlwdG9EaWdlc3QgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0RpZ2Vz
dCk7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBBbGdvcml0aG0geworICAgICAgICBTSEFfMSwK
KyAgICAgICAgU0hBXzIyNCwKKyAgICAgICAgU0hBXzI1NiwKKyAgICAgICAgU0hBXzM4NCwKKyAg
ICAgICAgU0hBXzUxMiwKKyAgICB9OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
RGlnZXN0PiBjcmVhdGUoQWxnb3JpdGhtKTsKKyAgICB+Q3J5cHRvRGlnZXN0KCk7CisKKyAgICB2
b2lkIGFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBWZWN0
b3I8dWludDhfdD4gY29tcHV0ZUhhc2goKTsKKworcHJpdmF0ZToKKyAgICBDcnlwdG9EaWdlc3Qo
KTsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBtX2NvbnRleHQ7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENv
bW1vbkNyeXB0by5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZhMjQxYTRlMjM1ODZhMWMxM2FkOTJhOWU5MTE0
ZWI0MmZkY2FjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5
cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCkBAIC0wLDAgKzEs
MTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0
b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCitu
YW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKKyAgICB2b2lkKiBjY0NvbnRleHQ7Cit9Owor
CitpbmxpbmUgQ0NfU0hBMV9DVFgqIHRvU0hBMUNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCog
Y29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTFfQ1RY
Kj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTIy
NENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29u
dGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7
Cit9CitpbmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyNTZDb250ZXh0KENyeXB0b0RpZ2VzdENv
bnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEND
X1NIQTI1Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTUxMl9D
VFgqIHRvU0hBMzg0Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAg
IEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8zODQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+
Y2NDb250ZXh0KTsKK30KK2lubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTUxMkNvbnRleHQoQ3J5
cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3Jp
dGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CisKK0NyeXB0
b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0
Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBz
d2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzE6CisgICAgICAgIGRlbGV0ZSB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5n
ZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjI0OgorICAgICAgICBkZWxldGUgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQo
KSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjU2OgorICAgICAgICBkZWxldGUgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
Mzg0OgorICAgICAgICBkZWxldGUgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEy
OgorICAgICAgICBkZWxldGUgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9Cit9CisKKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4g
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQor
eworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGln
ZXN0KTsKKyAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3JpdGhtOworCisg
ICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMTogeworICAgICAgICBDQ19TSEExX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEExX0NU
WDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAg
ICAgIENDX1NIQTFfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9
CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDogeworICAgICAgICBD
Q19TSEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7CisgICAgICAgIGRpZ2Vz
dC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEEyMjRfSW5p
dChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogeworICAgICAgICBDQ19TSEEyNTZfQ1RYKiBj
b250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5j
Y0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEEyNTZfSW5pdChjb250ZXh0KTsKKyAg
ICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzM4NDogeworICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IEND
X1NIQTUxMl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250
ZXh0OworICAgICAgICBDQ19TSEEzODRfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRp
Z2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjog
eworICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7Cisg
ICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBD
Q19TSEE1MTJfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9Cisg
ICAgfQorfQorCit2b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQs
IHNpemVfdCBsZW5ndGgpCit7CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewor
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBDQ19TSEEx
X1VwZGF0ZSh0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIy
NDoKKyAgICAgICAgQ0NfU0hBMjI0X1VwZGF0ZSh0b1NIQTIyNENvbnRleHQobV9jb250ZXh0Lmdl
dCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAgICBDQ19TSEEyNTZfVXBkYXRlKHRvU0hB
MjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAgICAg
IENDX1NIQTM4NF9VcGRhdGUodG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0
LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzUxMjoKKyAgICAgICAgQ0NfU0hBNTEyX1VwZGF0ZSh0b1NIQTUxMkNvbnRleHQo
bV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAg
ICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0
aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAgICAgICAg
cmVzdWx0LnJlc2l6ZShDQ19TSEExX0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEExX0Zp
bmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Cisg
ICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjI0X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBD
Q19TSEEyMjRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5n
ZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjU2OgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RI
KTsKKyAgICAgICAgQ0NfU0hBMjU2X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjU2Q29udGV4
dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEzODRf
RElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NIQTM4NF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0
b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIHJlc3VsdC5yZXNp
emUoQ0NfU0hBNTEyX0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEE1MTJfRmluYWwocmVz
dWx0LmRhdGEoKSwgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgUEFM
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRv
RGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9D
cnlwdG9EaWdlc3RHQ3J5cHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhNzhhZTBjM2I4ZDcwMDg2MDc3MzM1
YWUzZTMyZWZhYTkxMzk2ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApAQCAtMCwwICsxLDk3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgU29mdEF0SG9tZQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDxnY3J5cHQuaD4KKworbmFtZXNwYWNlIFBB
TCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKKyAgICBpbnQgYWxnb3JpdGhtOwor
ICAgIGdjcnlfbWRfaGRfdCBtZDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkK
KyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRv
RGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Rp
Z2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3Jp
dGhtKQoreworICAgIGludCBnY3J5cHRBbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRo
bSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBn
Y3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIGdjcnlwdEFsZ29yaXRo
bSA9IEdDUllfTURfU0hBMjI0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01E
X1NIQTI1NjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NDoKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEzODQ7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6
CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBNTEyOworICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3
IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdjcnlw
dEFsZ29yaXRobTsKKworICAgIGdjcnlfbWRfb3BlbigmZGlnZXN0LT5tX2NvbnRleHQtPm1kLCBn
Y3J5cHRBbGdvcml0aG0sIDApOworICAgIGlmICghZGlnZXN0LT5tX2NvbnRleHQtPm1kKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBkaWdlc3Q7Cit9CisKK3ZvaWQgQ3J5
cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sK
KyAgICBnY3J5X21kX3dyaXRlKG1fY29udGV4dC0+bWQsIGlucHV0LCBsZW5ndGgpOworfQorCitW
ZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgaW50IGRp
Z2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW4pOworCisgICAgZ2NyeV9tZF9maW5h
bChtX2NvbnRleHQtPm1kKTsKKyAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSwgZ2NyeV9tZF9yZWFk
KG1fY29udGV4dC0+bWQsIDApLCBkaWdlc3RMZW4pOworICAgIGdjcnlfbWRfY2xvc2UobV9jb250
ZXh0LT5tZCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBQQUwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2dudXRscy9DcnlwdG9E
aWdlc3RHbnVUTFMuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ251dGxzL0Ny
eXB0b0RpZ2VzdEdudVRMUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTU2YjhmYmJkYTBmMDkwOTMxOTkxZjZi
MDE2NjZjOWIzNTlhYzA4MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCkBAIC0wLDAgKzEsMTAyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9EaWdl
c3QuaCIKKworI2luY2x1ZGUgPGdudXRscy9nbnV0bHMuaD4KKyNpbmNsdWRlIDxnbnV0bHMvY3J5
cHRvLmg+CisKK25hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7
CisgICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBhbGdvcml0aG07CisgICAgZ251dGxzX2hh
c2hfaGRfdCBoYXNoOworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDog
bV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6
On5DcnlwdG9EaWdlc3QoKQoreworICAgIGdudXRsc19oYXNoX2RlaW5pdChtX2NvbnRleHQtPmhh
c2gsIDApOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgZ251dGxz
X2RpZ2VzdF9hbGdvcml0aG1fdCBnbnV0bHNBbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29y
aXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAg
ICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6IHsKKyAgICAg
ICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEyMjQ7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAg
ICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjU2OworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAg
ICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTM4NDsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKKyAg
ICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEE1MTI7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdl
c3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9
IGdudXRsc0FsZ29yaXRobTsKKworICAgIGludCByZXQgPSBnbnV0bHNfaGFzaF9pbml0KCZkaWdl
c3QtPm1fY29udGV4dC0+aGFzaCwgZ251dGxzQWxnb3JpdGhtKTsKKyAgICBpZiAocmV0ICE9IEdO
VVRMU19FX1NVQ0NFU1MpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRp
Z2VzdDsKK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0
LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGdudXRsc19oYXNoKG1fY29udGV4dC0+aGFzaCwgaW5w
dXQsIGxlbmd0aCk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVI
YXNoKCkKK3sKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAgIGludCBkaWdlc3RMZW4g
PSBnbnV0bHNfaGFzaF9nZXRfbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKKyAgICByZXN1bHQu
cmVzaXplKGRpZ2VzdExlbik7CisKKyAgICBnbnV0bHNfaGFzaF9vdXRwdXQobV9jb250ZXh0LT5o
YXNoLCByZXN1bHQuZGF0YSgpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vd2lu
L0NyeXB0b0RpZ2VzdFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by93aW4v
Q3J5cHRvRGlnZXN0V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTgzODg0MTliZGI5NjNhMTE0NWFjOWE4
OTY3NGYzZmIzYTE3ZWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisK
KyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d2luY3J5cHQuaD4KKworbmFtZXNwYWNl
IFBBTCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKKyAgICBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobSBhbGdvcml0aG07CisgICAgSENSWVBUUFJPViBoQ29udGV4dCB7IDAgfTsKKyAg
ICBIQ1JZUFRIQVNIIGhIYXNoIHsgMCB9OworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdl
c3QoKQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitD
cnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQoreworICAgIGlmIChIQ1JZUFRIQVNIIGhIYXNo
ID0gbV9jb250ZXh0LT5oSGFzaCkKKyAgICAgICAgQ3J5cHREZXN0cm95SGFzaChoSGFzaCk7Cisg
ICAgaWYgKEhDUllQVFBST1YgaENvbnRleHQgPSBtX2NvbnRleHQtPmhDb250ZXh0KQorICAgICAg
ICBDcnlwdFJlbGVhc2VDb250ZXh0KGhDb250ZXh0LCAwKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQWxnb3JpdGhtIGFsZ29yaXRobSkK
K3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0Rp
Z2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRobTsKKyAg
ICBpZiAoIUNyeXB0QWNxdWlyZUNvbnRleHQoJmRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwg
bnVsbHB0ciwgbnVsbHB0ciAvKiB1c2UgZGVmYXVsdCBwcm92aWRlciAqLywgUFJPVl9SU0FfQUVT
LCBDUllQVF9WRVJJRllDT05URVhUKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYm9v
bCBzdWNjZWVkZWQgPSBmYWxzZTsKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIHN1Y2NlZWRlZCA9IENy
eXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBMSwgMCwg
MCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIHN1Y2Nl
ZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdf
U0hBXzI1NiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7Cisg
ICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENv
bnRleHQsIENBTEdfU0hBXzM4NCwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfNTEyOiB7CisgICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1f
Y29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzUxMiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0
LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisgICAgaWYgKHN1Y2NlZWRl
ZCkKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9p
ZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3Ro
KQoreworICAgIGlmICghaW5wdXQgfHwgIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworICAgIFJF
TEVBU0VfQVNTRVJUKENyeXB0SGFzaERhdGEobV9jb250ZXh0LT5oSGFzaCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBCWVRFKj4oaW5wdXQpLCBsZW5ndGgsIDApKTsKK30KKworVmVjdG9yPHVpbnQ4
X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQoreworICAgIFZlY3Rvcjx1aW50OF90PiBy
ZXN1bHQ7CisgICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyOworICAgIERXT1JEIGRpZ2VzdExl
bmd0aEJ1ZmZlclNpemUgPSBzaXplb2YoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKworICAgIFJFTEVB
U0VfQVNTRVJUKENyeXB0R2V0SGFzaFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hTSVpF
LCByZWludGVycHJldF9jYXN0PEJZVEUqPigmZGlnZXN0TGVuZ3RoQnVmZmVyKSwgJmRpZ2VzdExl
bmd0aEJ1ZmZlclNpemUsIDApKTsKKyAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbmd0aEJ1ZmZl
cik7CisKKyAgICBSRUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhI
YXNoLCBIUF9IQVNIVkFMLCByZXN1bHQuZGF0YSgpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyLCAwKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0LnNpemUoKSA9PSBkaWdlc3RMZW5ndGhCdWZmZXIp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQppbmRleCBmM2FlODliMDBlM2QzNGJkOTQ1OGM1OGZmYjQ0YThlYTI3OTZi
M2RkLi4xZjBlMTAzNWFkNGFkMmUxZTNmMGIxNzI1YTJhY2VjZWUzYzgwYzk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUVmbC5jbWFrZQpAQCAtNjksOCArNjksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKIAogICAgIHBsYXRmb3JtL2F1ZGlvL2VmbC9BdWRpb0J1c0VmbC5jcHAKIAotICAgIHBs
YXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZv
cm0vZWZsL0N1cnNvckVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCiAg
ICAgcGxhdGZvcm0vZWZsL0RyYWdJbWFnZUVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UK
aW5kZXggNjI0MjE2MjljNWVkNTA3YTc3MzRhM2U2ZGZjZDM0YTcyODgxZWJkZi4uYjFjNmU2Yjhj
ZTEzMzdlMzhjMjg0NjMxNTRiNWZhZTE3MGNkMDRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21h
a2UKQEAgLTY4LDggKzY4LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBw
bGF0Zm9ybS9hdWRpby9nbGliL0F1ZGlvQnVzR0xpYi5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0
by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9n
bGliL0dhbWVwYWRzR2xpYi5jcHAKIAogICAgIHBsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Q
cm92aWRlckdlb2NsdWUxLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA0YzUxZTJh
YTkwNjY0NTgyYWE0MjIzNjc0NTQ1MTM5OTEyNGExMWYwLi43ZGMxZTZlODRjZTBlNjY1ZGVmNzli
MDE1ZTE0NTA5MzgyOTZkOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzMzLDgg
KzMzMyw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2NvY29h
L1RoZW1lQ29jb2EubW0KICAgICBwbGF0Zm9ybS9jb2NvYS9XZWJDb3JlTlNFcnJvckV4dHJhcy5t
bQogCi0gICAgcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25D
cnlwdG8uY3BwCi0KICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAogICAg
IHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybVdpbi5jbWFrZQppbmRleCA4ZDdmNTA4YTEyMjk1NzE3OTA3ZGVmNDE0ZjJmMjY0ZGYxMGMx
OWFkLi5hNGE5OTA5YjEyMTM0M2NlZWJjNjliZDAxYTgzNWMxOGYxODkwMWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybVdpbi5jbWFrZQpAQCAtNzMsOCArNzMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKIAogICAgIHBsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAogCi0gICAg
cGxhdGZvcm0vY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCi0KICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlhNDBkYjgyMzk5ZmIwYmY3MGQ1MmI0YWM2
M2Y5MGE4OGY5N2JkYTkuLmI2MWZmM2Q5MjI4YTcwNjFlNGQ0MTg5NDk2YTEwZjlkOGQ0ZTQzN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTk3Nyw2ICs5NzcsNyBAQAogCQkxQzAxMDcwMTE5MjU5NERGMDA4QTQyMDEgLyogSW5s
aW5lVGV4dEJveFN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmgg
Ki87IH07CiAJCTFDMDkzOUVBMUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDkzOUU4MUEx
M0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmNwcCAqLzsgfTsKIAkJMUMwOTM5RUIxQTEz
RTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDkzOUU5MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRT
VkdGb250LmggKi87IH07CisJCTFDMDlEMDU5MUUzMUM2QTkwMDcyNUYxOCAvKiBsaWJQQUwuYSBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDlEMDUw
MUUzMUMzMjkwMDcyNUYxOCAvKiBsaWJQQUwuYSAqLzsgfTsKIAkJMUMxOERBNTgxODFBRjZBNTAw
QzRFRjIyIC8qIFRleHRQYWludGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFDMThEQTU2MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5j
cHAgKi87IH07CiAJCTFDMThEQTU5MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxOERBNTcxODFB
RjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggKi87IH07CiAJCTFDMjFFNTdDMTgzRUQxRkYw
MDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjFFNTdBMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQ
b29sLmNwcCAqLzsgfTsKQEAgLTYyNjIsOCArNjI2Myw2IEBACiAJCUUxRjgwQjg4MTgzMTcyNTIw
MDc4ODVDMyAvKiBDcnlwdG9LZXlQYWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMUY4MEI4NjE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFp
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUx
RjgwQjhEMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGODBCOEIxODMxNzJCNTAwNzg4
NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5jcHAgKi87IH07CiAJCUUxRjgwQjhFMTgzMTcyQjUwMDc4
ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxRjgwQjhDMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBh
aXIuaCAqLzsgfTsKLQkJRTFGRTEzNjQxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENv
bW1vbkNyeXB0by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUZFMTM2MjE4MzQzNTExMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRv
LmNwcCAqLzsgfTsKLQkJRTFGRTEzNjcxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjYx
ODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oICovOyB9OwogCQlFMUZFMTM2QTE4M0ZF
MUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjgxODNGRTFBQjAwODkyRjEz
IC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcCAqLzsgfTsKIAkJRTFGRTEzNkIxODNGRTFB
QjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyog
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCAqLzsgfTsKIAkJRTFGRTEzNzAxODNGRUNGMDAwODky
RjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzZFMTgzRkVDRjAwMDg5MkYxMyAvKiBD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgKi87IH07CkBAIC02ODg4LDYgKzY4ODcsMTMg
QEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCQkxQzA5RDA0RjFFMzFDMzI5MDA3MjVGMTggLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5
OworCQkJY29udGFpbmVyUG9ydGFsID0gMUMwOUQwNEIxRTMxQzMyODAwNzI1RjE4IC8qIFBBTC54
Y29kZXByb2ogKi87CisJCQlwcm94eVR5cGUgPSAyOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcg
PSAxQzA5RDAzRDFFMzFDMzI4MDA3MjVGMTg7CisJCQlyZW1vdGVJbmZvID0gUEFMOworCQl9Owog
CQk0MTdEQTZENDEzNzM0RTBEMDA3QzU3RkIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0g
ewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0g
MDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtODA1NCw2
ICs4MDYwLDcgQEAKIAkJMUMwMTA2RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hT
dHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVUZXh0Qm94U3R5
bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOTM5RTgxQTEzRTEyOTAwQjc4
OEU1IC8qIENhY2hlZFNWR0ZvbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2FjaGVkU1ZHRm9udC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
MDkzOUU5MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFNWR0ZvbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUMwOUQwNEIxRTMxQzMyODAwNzI1RjE4IC8qIFBBTC54Y29kZXByb2ogKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAid3JhcHBlci5wYi1w
cm9qZWN0IjsgbmFtZSA9IFBBTC54Y29kZXByb2o7IHBhdGggPSBQQUwvUEFMLnhjb2RlcHJvajsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxOERBNTYxODFBRjZBNTAwQzRFRjIyIC8q
IFRleHRQYWludGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRl
eHRQYWludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxOERBNTcxODFB
RjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRleHRQYWludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMjFF
NTdBMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElPU3VyZmFjZVBvb2wuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQyNzIsOCArMTQyNzksNiBAQAogCQlFMUY4MEI4NjE4MzE3MjUyMDA3
ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDcnlwdG9LZXlQYWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRjgwQjhC
MTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNDcnlwdG9LZXlQYWlyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTFGODBCOEMxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFp
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NyeXB0b0tleVBhaXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFGRTEzNjIxODM0MzUxMTAwODkyRjEzIC8q
IENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlFMUZFMTM2NjE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0RpZ2VzdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2ODE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRv
QWxnb3JpdGhtUlNBX09BRVAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09B
RVAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRTEzNkUxODNGRUNGMDAwODky
RjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0OTg3LDYgKzE0OTkyLDcgQEAKIAkJCWlzYSA9IFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
IAkJCWZpbGVzID0gKAorCQkJCTFDMDlEMDU5MUUzMUM2QTkwMDcyNUYxOCAvKiBsaWJQQUwuYSBp
biBGcmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjEyMTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVy
YXRlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjEzMTJCMDQ4QTMwMEVE
OThDNiAvKiBBdWRpb1Rvb2xib3guZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJMUFC
MzNEQTUxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
LApAQCAtMTU0MDIsNiArMTU0MDgsNyBAQAogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyog
V2ViS2l0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkx
QzA5RDA0QjFFMzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLywKIAkJCQk2NUM5N0FG
MjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8sCiAJCQkJRURFQzk4MDIwQUVEN0UxNzAw
NTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLywKIAkJCQk5MzA3MDYxMzA5RTBDQTgyMDBCMTdG
RTQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAqLywKQEAgLTE2MDgzLDYgKzE2MDkwLDE0IEBACiAJ
CQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMUMwOUQw
NEMxRTMxQzMyODAwNzI1RjE4IC8qIFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDA1MDFFMzFDMzI5MDA3MjVGMTggLyogbGliUEFM
LmEgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4Rjc4IC8qIEluc3BlY3RvciAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yMjQ5Nyw3ICsyMjUx
Miw2IEBACiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAwQzFBMzU5IC8qIGF1ZGlvICovLAogCQkJCTFB
RTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKIAkJCQlBNUM5NzRDRTExNDg1RkRBMDA2
NkYyQUIgLyogY29jb2EgKi8sCi0JCQkJQ0U1MEQ4Q0UxQzg5MzJFRDAwNzJFQTVBIC8qIGNyeXB0
byAqLywKIAkJCQk1MTVCRTE4NzFENTRGNURCMDBERDdDNjggLyogZ2FtZXBhZCAqLywKIAkJCQlC
MkEwMTU5MTBBRjZDRDUzMDA2QkNFMEUgLyogZ3JhcGhpY3MgKi8sCiAJCQkJQTU5RTNDMUIxMTU4
MEYzNDAwNzI5MjhFIC8qIGlvcyAqLywKQEAgLTIyOTQxLDIzICsyMjk1NSw2IEBACiAJCQlwYXRo
ID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJQ0U1MEQ4Q0UxQzg5
MzJFRDAwNzJFQTVBIC8qIGNyeXB0byAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hp
bGRyZW4gPSAoCi0JCQkJQ0U1MEQ4Q0YxQzg5MzJGQjAwNzJFQTVBIC8qIGNvbW1vbmNyeXB0byAq
LywKLQkJCQlFMUZFMTM2NjE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0LmggKi8sCi0J
CQkpOwotCQkJcGF0aCA9IGNyeXB0bzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07
Ci0JCUNFNTBEOENGMUM4OTMyRkIwMDcyRUE1QSAvKiBjb21tb25jcnlwdG8gKi8gPSB7Ci0JCQlp
c2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUUxRkUxMzYyMTgzNDM1MTEwMDg5
MkYxMyAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwICovLAotCQkJKTsKLQkJCXBhdGgg
PSBjb21tb25jcnlwdG87Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQlERjlB
RkQ2RjEzRkMzMUIwMDAxNUZFQjcgLyogb2JqYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCkBAIC0yNTI1MCw3ICsyNTI0Nyw2IEBACiAJCQkJRTE5QUMzRjExODI0
REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1Ni5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTE5QUMzRjMxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTM4NC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTE5QUMzRjUxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29y
aXRobVNIQTUxMi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTFGRTEzNjcxODM0M0ExMDAwODkyRjEz
IC8qIENyeXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE1N0E4RTUxODE3M0EzQTAw
OUY4MjFEIC8qIENyeXB0b0tleS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNUY4NEUxODI0Mjg5
RDAwRDg0Q0Q5IC8qIENyeXB0b0tleUFFUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNUY4NUUx
ODJDMkRGNjAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjg1
NTYsNiArMjg1NTIsMTIgQEAKIAkJCW1haW5Hcm91cCA9IDA4NjdENjkxRkU4NDAyOEZDMDJBQUMw
NyAvKiBXZWJLaXQgKi87CiAJCQlwcm9kdWN0UmVmR3JvdXAgPSAwMzQ3NjhERkZGMzhBNTA0MTFE
QjlDOEIgLyogUHJvZHVjdHMgKi87CiAJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVj
dFJlZmVyZW5jZXMgPSAoCisJCQkJeworCQkJCQlQcm9kdWN0R3JvdXAgPSAxQzA5RDA0QzFFMzFD
MzI4MDA3MjVGMTggLyogUHJvZHVjdHMgKi87CisJCQkJCVByb2plY3RSZWYgPSAxQzA5RDA0QjFF
MzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLzsKKwkJCQl9LAorCQkJKTsKIAkJCXBy
b2plY3RSb290ID0gIiI7CiAJCQl0YXJnZXRzID0gKAogCQkJCTQxODE2Rjc5MTM4NTlDNTUwMDU3
QUFBNCAvKiBBbGwgKi8sCkBAIC0yODU2Nyw2ICsyODU2OSwxNiBAQAogCQl9OwogLyogRW5kIFBC
WFByb2plY3Qgc2VjdGlvbiAqLwogCisvKiBCZWdpbiBQQlhSZWZlcmVuY2VQcm94eSBzZWN0aW9u
ICovCisJCTFDMDlEMDUwMUUzMUMzMjkwMDcyNUYxOCAvKiBsaWJQQUwuYSAqLyA9IHsKKwkJCWlz
YSA9IFBCWFJlZmVyZW5jZVByb3h5OworCQkJZmlsZVR5cGUgPSBhcmNoaXZlLmFyOworCQkJcGF0
aCA9IGxpYlBBTC5hOworCQkJcmVtb3RlUmVmID0gMUMwOUQwNEYxRTMxQzMyOTAwNzI1RjE4IC8q
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJCXNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7CisJCX07CisvKiBFbmQgUEJYUmVmZXJlbmNlUHJveHkgc2VjdGlvbiAqLworCiAvKiBC
ZWdpbiBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAkJOTNGMTk5RkQwODI0NUU1
OTAwMUU5QUJDIC8qIFJlc291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxk
UGhhc2U7CkBAIC0yOTA5Myw3ICsyOTEwNSw2IEBACiAJCQkJRTE5QUMzRjAxODI0REM3OTAwMzQ5
NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTlB
QzNGMjE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxOUFDM0Y0MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1T
SEE1MTIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTFGRTEzNjQxODM0MzUxMTAwODkyRjEzIC8q
IENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTU3QThF
NDE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
MjVGODREMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9LZXlBRVMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTEyNUY4NjMxODJDMzAzQTAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGFPY3RldFNlcXVl
bmNlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcAppbmRleCAwYzhkZmRkZDFlMGE3
YWRiYWExOGVmOWM1MTJhNzI4Yzk0MmFkZTI5Li5hZGRmODRkMmIyM2YyNTdlZjhmYzk2NmJkZWEx
OWY3MGM5ZWQ0ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYg
RU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0
b0FsZ29yaXRobVNIQTE6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRo
bVNIQTE6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYm
IGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBh
dXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewog
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVy
bjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVj
dG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWwKIAogRXhjZXB0aW9u
T3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwg
VmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
KQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8xKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0
OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwogICAgIGlmICgh
ZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTIyNC5jcHAKaW5kZXggNmNhMWFlZTVhNmJiN2Q4M2NhMDU2NDE5ZGNiZWJk
NTE3YjlkNjE4NS4uNjM0YzVhM2Q5M2I4MmZhNmIxZWNiNDUyZjU1MmQwNjg2Njg1ZjYzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMjI0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEyMjQuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExF
X0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8
cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hB
MjI0OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRp
Z2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBA
IC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9y
PHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQog
ewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yMjQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKICAgICBpZiAo
IWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTI1Ni5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEEyNTYuY3BwCmluZGV4IDczNjYwZjU5OWFmMzdjYTlkZTlhMjE5ZTNmNGYy
MzQ4ZjQ2YWMyYjMuLjBlYTA1MDZiOTRhM2FiMmUzOWRiM2YyNTEwMzRmYTc0ZWM2M2FjZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTI1Ni5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMjU2LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRM
RV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
PHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNI
QTI1Njo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2Ojpk
aWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFj
aywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
Nik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAg
ICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KFZlY3Rv
cjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2
b2lkPiBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykK
IHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0
OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgaWYg
KCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEzODQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMzg0LmNwcAppbmRleCBjOTc3NTJkODFjMDA1NDIzOWIwYjg4YzYwYWEz
NDNlZmE2NWUxNDc3Li44OGYzMTM2Mjk2YjA0YzUzODM4NjAzOWUyOTRlOWM0MzkzZTRhZjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1TSEEzODQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTM4NC5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJU
TEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRl
IDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1T
SEEzODQ6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6
ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJh
Y2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8z
ODQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAg
ICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsK
QEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChWZWN0
b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8
dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBW
ZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2sp
CiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOwogICAgIGlm
ICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4g
eyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBNTEyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKaW5kZXggMzNlNDgzZGExNWQxMGNjZGI3M2VlMzhmOTNh
MTNkNmQ3MTg3MDJlZi4uMDEwM2YwOTUzNzJiZjM1OTQ2YzdjZDAzZGY1OWMxOWIxZWIwYzc5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBNTEyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEE1MTIuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VC
VExFX0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGht
U0hBNTEyOjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6
OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRp
Z2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
NTEyKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAg
ICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47
CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVj
dG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9y
PHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwg
VmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
KQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTIpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdl
c3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKICAgICBp
ZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJu
IHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKaW5kZXggZjZhYjdhMjE1NTUz
YjZjYmZiNDczMDM1NWNmZTUzNTJhOWQwMjM1NS4uMGYwYmY5MzEzZmFiNWNhNTRlZDY0NjliZjM4
NmQ4MjlkZTkxZWE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKQEAgLTMw
LDI2ICszMCwyNiBAQAogCiAjaW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiQ3J5cHRvQWxnb3JpdGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZC5oIgotI2luY2x1ZGUg
IkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5j
bHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1pbmxpbmUgc3RkOjpvcHRpb25hbDxDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGln
ZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQoraW5s
aW5lIHN0ZDo6b3B0aW9uYWw8UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGln
ZXN0QWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQogewog
ICAgIHN3aXRjaCAoaGFzaEZ1bmN0aW9uKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyOjpTSEFfMToKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMTsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKLSAgICAgICAg
cmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OworICAgICAgICByZXR1cm4g
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKICAgICBjYXNlIENyeXB0b0Fs
Z29yaXRobUlkZW50aWZpZXI6OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzI1NjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yNTY7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpT
SEFfMzg0OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7
CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0Owog
ICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAgICAgICAgcmV0
dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAgICAgICByZXR1cm4gUEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKICAgICBkZWZhdWx0OgogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIEV4
Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gc2lnblJTQVNTQV9QS0NTMV92MV81KENyeXB0b0Fs
Z29yaXRobUlkZW50aWYKICAgICBhdXRvIGNyeXB0b0RpZ2VzdEFsZ29yaXRobSA9IFdlYkNvcmU6
OmNyeXB0b0RpZ2VzdEFsZ29yaXRobShoYXNoKTsKICAgICBpZiAoIWNyeXB0b0RpZ2VzdEFsZ29y
aXRobSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0gICAg
YXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGht
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0Rp
Z2VzdEFsZ29yaXRobSk7CiAgICAgaWYgKCFkaWdlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBPcGVyYXRpb25FcnJvciB9OwogICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YSwgZGF0YUxl
bmd0aCk7CkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiB2ZXJpZnlS
U0FTU0FfUEtDUzFfdjFfNShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsCiAgICAgYXV0
byBjcnlwdG9EaWdlc3RBbGdvcml0aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0o
aGFzaCk7CiAgICAgaWYgKCFjcnlwdG9EaWdlc3RBbGdvcml0aG0pCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGln
ZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CisgICAgYXV0byBkaWdlc3QgPSBQ
QUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOwogICAgIGlm
ICghZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsK
ICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEsIGRhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYTE1N2E4NGYwZTY1Zjg1
ZjljMDQ4ZTUxYzFkMTkwZTJiODdkYmYwYS4uZGY3N2NiNGM5YjVjOTFkNDRlNzMzNzk5MmQ3ZDhi
YTdkNzY1MzBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgog
I2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgotI2luY2x1ZGUgIkNy
eXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkRPTUVkaXRvci5oIgogI2luY2x1ZGUgIkRPTVBhdGNo
U3VwcG9ydC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAtOTYsNiArOTUsNyBAQAogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRl
IDxydW50aW1lL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBzdGF0aWMg
U3RyaW5nIGNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgVGV4dEVuY29kaW5nIGRvY3VtZW50RW5jb2RpbmcgPSBlbGVtZW50
LmRvY3VtZW50KCkudGV4dEVuY29kaW5nKCk7CiAgICAgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNv
ZGluZ1RvVXNlID0gZG9jdW1lbnRFbmNvZGluZy5pc1ZhbGlkKCkgPyBkb2N1bWVudEVuY29kaW5n
IDogVVRGOEVuY29kaW5nKCk7CiAgICAgQ1N0cmluZyBjb250ZW50ID0gZW5jb2RpbmdUb1VzZS5l
bmNvZGUoVGV4dE5vZGVUcmF2ZXJzYWw6OmNvbnRlbnRzQXNTdHJpbmcoZWxlbWVudCksIEVudGl0
aWVzRm9yVW5lbmNvZGFibGVzKTsKLSAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IENyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGNy
eXB0b0RpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgY3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250ZW50
LmRhdGEoKSwgY29udGVudC5sZW5ndGgoKSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRpZ2VzdCA9
IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKICAgICByZXR1cm4gbWFrZVN0cmluZygic2hh
MjU2LSIsIGJhc2U2NEVuY29kZShkaWdlc3QuZGF0YSgpLCBkaWdlc3Quc2l6ZSgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRl
eCA1MzY3MWU1MGE3NGI3MDNmZDUxY2IzOWQ5NWQ1NTBiNjMwMjZiMjY5Li45NmZhN2EyMzFiMTgx
MzFkMjM2Y2MxOGFmOWJhZjlmMmY4ZWEzNGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNs
dWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5U291cmNlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNl
TGlzdC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xp
c3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgi
CkBAIC01Nyw2ICs1Niw3IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
PgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNw
ZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5
cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5o
PgpAQCAtMzAxLDE4ICszMDEsMTggQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbFBv
bGljaWVzQWxsb3coVmlvbGF0ZWREaXJlY3RpdmVDYWxsYmFjayYmIGNhbGxiYWMKICAgICByZXR1
cm4gaXNBbGxvd2VkOwogfQogCi1zdGF0aWMgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9Dcnlw
dG9EaWdlc3RBbGdvcml0aG0oQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSBhbGdv
cml0aG0pCitzdGF0aWMgUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSB0b0NyeXB0b0RpZ2Vz
dEFsZ29yaXRobShDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtIGFsZ29yaXRobSkK
IHsKICAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewogICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9s
aWN5SGFzaEFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzI1NjsKICAgICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdv
cml0aG06OlNIQV8zODQ6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzM4NDsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8zODQ7CiAgICAgY2FzZSBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFf
NTEyOgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7Cisg
ICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV81MTI7CisgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV81MTI7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4KQEAgLTMzMyw3
ICszMzMsNyBAQCBDb250ZW50U2VjdXJpdHlQb2xpY3k6Okhhc2hJbkVuZm9yY2VkQW5kUmVwb3J0
T25seVBvbGljaWVzUGFpciBDb250ZW50U2VjdXJpdHlQbwogICAgIGJvb2wgZm91bmRIYXNoSW5F
bmZvcmNlZFBvbGljaWVzID0gZmFsc2U7CiAgICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9ubHlQ
b2xpY2llcyA9IGZhbHNlOwogICAgIGZvciAoYXV0byBhbGdvcml0aG0gOiBhbGdvcml0aG1zKSB7
Ci0gICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUodG9Dcnlw
dG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7CisgICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0
ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdv
cml0aG0pKTsKICAgICAgICAgY3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250ZW50Q1N0cmluZy5k
YXRhKCksIGNvbnRlbnRDU3RyaW5nLmxlbmd0aCgpKTsKICAgICAgICAgQ29udGVudFNlY3VyaXR5
UG9saWN5SGFzaCBoYXNoID0geyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2go
KSB9OwogICAgICAgICBpZiAoIWZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyAmJiBhbGxQb2xp
Y2llc1dpdGhEaXNwb3NpdGlvbkFsbG93KENvbnRlbnRTZWN1cml0eVBvbGljeTo6RGlzcG9zaXRp
b246OkVuZm9yY2UsIHN0ZDo6Zm9yd2FyZDxQcmVkaWNhdGU+KHByZWRpY2F0ZSksIGhhc2gpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWYwNzVhYTM3Y2IzNDYyMDk4NDdhNTk5ZTFmNTQyODRm
OWYzODE5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaAorKysgL2Rldi9udWxs
CkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENyeXB0b0RpZ2Vz
dF9oCi0jZGVmaW5lIENyeXB0b0RpZ2VzdF9oCi0KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IENyeXB0b0RpZ2VzdENvbnRleHQ7Ci0KLWNsYXNzIENyeXB0b0RpZ2VzdCB7Ci0gICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ3J5cHRvRGlnZXN0KTsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNz
IEFsZ29yaXRobSB7Ci0gICAgICAgIFNIQV8xLAotICAgICAgICBTSEFfMjI0LAotICAgICAgICBT
SEFfMjU2LAotICAgICAgICBTSEFfMzg0LAotICAgICAgICBTSEFfNTEyLAotICAgIH07Ci0gICAg
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGNyZWF0ZShBbGdvcml0aG0pOwot
ICAgIH5DcnlwdG9EaWdlc3QoKTsKLQotICAgIHZvaWQgYWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5w
dXQsIHNpemVfdCBsZW5ndGgpOwotICAgIFZlY3Rvcjx1aW50OF90PiBjb21wdXRlSGFzaCgpOwot
Ci1wcml2YXRlOgotICAgIENyeXB0b0RpZ2VzdCgpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0RpZ2VzdENvbnRleHQ+IG1fY29udGV4dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIENyeXB0b0RpZ2VzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0Rp
Z2VzdENvbW1vbkNyeXB0by5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzZmZj
NTYwNTIyNmI2NGI0OTM3M2JlYTY4NWU5MjNmMDE5OWJiNGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRv
L2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTc5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5
cHRvLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRl
eHQgewotICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKLSAgICB2b2lkKiBj
Y0NvbnRleHQ7Ci19OwotCi1pbmxpbmUgQ0NfU0hBMV9DVFgqIHRvU0hBMUNvbnRleHQoQ3J5cHRv
RGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGht
ID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PENDX1NIQTFfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlubGluZSBDQ19TSEEy
NTZfQ1RYKiB0b1NIQTIyNENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsK
LSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjI0KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRl
eHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyNTZDb250ZXh0
KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFs
Z29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5s
aW5lIENDX1NIQTUxMl9DVFgqIHRvU0hBMzg0Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBj
b250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8zODQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEE1MTJf
Q1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NI
QTUxMkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQo
Y29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4
dCk7Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChu
ZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGln
ZXN0KCkKLXsKLSAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTFDb250
ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAgICBkZWxldGUgdG9TSEEyMjRDb250ZXh0
KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICBkZWxldGUgdG9TSEEyNTZDb250ZXh0KG1f
Y29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICBkZWxldGUgdG9TSEEzODRDb250ZXh0KG1fY29u
dGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfNTEyOgotICAgICAgICBkZWxldGUgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4
dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLQotc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG0gYWxnb3JpdGhtKQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2Vz
dChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0g
YWxnb3JpdGhtOwotCi0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewotICAgICAgICBDQ19TSEExX0NUWCogY29udGV4dCA9
IG5ldyBDQ19TSEExX0NUWDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9
IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTFfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJu
IGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIy
NDogewotICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7
Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAg
ICBDQ19TSEEyMjRfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogewotICAgICAgICBD
Q19TSEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7Ci0gICAgICAgIGRpZ2Vz
dC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEEyNTZfSW5p
dChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogewotICAgICAgICBDQ19TSEE1MTJfQ1RYKiBj
b250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5j
Y0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEEzODRfSW5pdChjb250ZXh0KTsKLSAg
ICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzUxMjogewotICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IEND
X1NIQTUxMl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250
ZXh0OwotICAgICAgICBDQ19TSEE1MTJfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRp
Z2VzdDsKLSAgICB9Ci0gICAgfQotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29u
c3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgc3dpdGNoIChtX2NvbnRleHQt
PmFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgot
ICAgICAgICBDQ19TSEExX1VwZGF0ZSh0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlu
cHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgQ0NfU0hBMjI0X1VwZGF0ZSh0b1NIQTIyNENvbnRl
eHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICBDQ19TSEEy
NTZfVXBkYXRlKHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3Ro
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8zODQ6Ci0gICAgICAgIENDX1NIQTM4NF9VcGRhdGUodG9TSEEzODRDb250ZXh0KG1fY29udGV4
dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgQ0NfU0hBNTEyX1VwZGF0ZSh0
b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1
dGVIYXNoKCkKLXsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgIHN3aXRjaCAobV9j
b250ZXh0LT5hbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMToKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEExX0RJR0VTVF9MRU5HVEgpOwotICAg
ICAgICBDQ19TSEExX0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMUNvbnRleHQobV9jb250ZXh0
LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yMjQ6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjI0X0RJR0VTVF9MRU5H
VEgpOwotICAgICAgICBDQ19TSEEyMjRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyMjRDb250
ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTI1
Nl9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBMjU2X0ZpbmFsKHJlc3VsdC5kYXRhKCks
IHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgcmVzdWx0LnJl
c2l6ZShDQ19TSEEzODRfRElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTM4NF9GaW5hbChy
ZXN1bHQuZGF0YSgpLCB0b1NIQTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAg
ICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBNTEyX0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19T
SEE1MTJfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQo
KSkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwYTNjOGJmMjQzZGMwNzJhYmJhODQ2MTg5NzMzYTBmNTNmZDZjMDRl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdh
bGlhIFMuTC4KLSAqIENvcHlyaWdodCAoQykgMjAxNiBTb2Z0QXRIb21lCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUg
PGdjcnlwdC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RD
b250ZXh0IHsKLSAgICBpbnQgYWxnb3JpdGhtOwotICAgIGdjcnlfbWRfaGRfdCBtZDsKLX07Ci0K
LUNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRv
RGlnZXN0Q29udGV4dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsK
LX0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUo
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQotewotICAgIGludCBnY3J5cHRBbGdv
cml0aG07Ci0KLSAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NI
QTE7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8yMjQ6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjI0OwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAg
ICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTI1NjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgZ2NyeXB0
QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEzODQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9
IEdDUllfTURfU0hBNTEyOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0
LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdjcnlwdEFsZ29yaXRobTsKLQotICAgIGdjcnlfbWRf
b3BlbigmZGlnZXN0LT5tX2NvbnRleHQtPm1kLCBnY3J5cHRBbGdvcml0aG0sIDApOwotICAgIGlm
ICghZGlnZXN0LT5tX2NvbnRleHQtPm1kKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IHJldHVybiBkaWdlc3Q7Ci19Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2
b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBnY3J5X21kX3dyaXRlKG1fY29udGV4
dC0+bWQsIGlucHV0LCBsZW5ndGgpOwotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0
Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAgaW50IGRpZ2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29f
ZGxlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChk
aWdlc3RMZW4pOwotCi0gICAgZ2NyeV9tZF9maW5hbChtX2NvbnRleHQtPm1kKTsKLSAgICBtZW1j
cHkocmVzdWx0LmRhdGEoKSwgZ2NyeV9tZF9yZWFkKG1fY29udGV4dC0+bWQsIDApLCBkaWdlc3RM
ZW4pOwotICAgIGdjcnlfbWRfY2xvc2UobV9jb250ZXh0LT5tZCk7Ci0KLSAgICByZXR1cm4gcmVz
dWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5YTVkODFmMmI0YmUyNzMyY2VlM2U1MjYz
Mzg2ZWQ1OWNiMjE0ZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RH
bnVUTFMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVk
ZSA8Z251dGxzL2dudXRscy5oPgotI2luY2x1ZGUgPGdudXRscy9jcnlwdG8uaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAgZ251dGxz
X2RpZ2VzdF9hbGdvcml0aG1fdCBhbGdvcml0aG07Ci0gICAgZ251dGxzX2hhc2hfaGRfdCBoYXNo
OwotfTsKLQotQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5l
dyBDcnlwdG9EaWdlc3RDb250ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdl
c3QoKQotewotICAgIGdudXRsc19oYXNoX2RlaW5pdChtX2NvbnRleHQtPmhhc2gsIDApOwotfQot
Ci1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCi17Ci0gICAgZ251dGxzX2RpZ2VzdF9hbGdv
cml0aG1fdCBnbnV0bHNBbGdvcml0aG07Ci0KLSAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7Ci0gICAgICAgIGdudXRsc0Fs
Z29yaXRobSA9IEdOVVRMU19ESUdfU0hBMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6IHsKLSAgICAgICAgZ251dGxzQWxn
b3JpdGhtID0gR05VVExTX0RJR19TSEEyMjQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7Ci0gICAgICAgIGdudXRsc0Fs
Z29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjU2OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogewotICAgICAgICBnbnV0bHNB
bGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTM4NDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKLSAgICAgICAgZ251dGxz
QWxnb3JpdGhtID0gR05VVExTX0RJR19TSEE1MTI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICB9Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0
b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdudXRsc0FsZ29y
aXRobTsKLQotICAgIGludCByZXQgPSBnbnV0bHNfaGFzaF9pbml0KCZkaWdlc3QtPm1fY29udGV4
dC0+aGFzaCwgZ251dGxzQWxnb3JpdGhtKTsKLSAgICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NF
U1MpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGRpZ2VzdDsKLX0KLQot
dm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVu
Z3RoKQotewotICAgIGdudXRsc19oYXNoKG1fY29udGV4dC0+aGFzaCwgaW5wdXQsIGxlbmd0aCk7
Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAg
ICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgIGludCBkaWdlc3RMZW4gPSBnbnV0bHNfaGFz
aF9nZXRfbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKLSAgICByZXN1bHQucmVzaXplKGRpZ2Vz
dExlbik7Ci0KLSAgICBnbnV0bHNfaGFzaF9vdXRwdXQobV9jb250ZXh0LT5oYXNoLCByZXN1bHQu
ZGF0YSgpKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRv
RGlnZXN0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRv
RGlnZXN0V2luLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZjYzE5MmMyYjMw
Mzk1OTQzMGYyNDljNzM2MzRiMTM5YzdhOGE0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0Ny
eXB0b0RpZ2VzdFdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQot
I2luY2x1ZGUgPHdpbmNyeXB0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENy
eXB0b0RpZ2VzdENvbnRleHQgewotICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRo
bTsKLSAgICBIQ1JZUFRQUk9WIGhDb250ZXh0IHsgMCB9OwotICAgIEhDUllQVEhBU0ggaEhhc2gg
eyAwIH07Ci19OwotCi1DcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRl
eHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0
b0RpZ2VzdCgpCi17Ci0gICAgaWYgKEhDUllQVEhBU0ggaEhhc2ggPSBtX2NvbnRleHQtPmhIYXNo
KQotICAgICAgICBDcnlwdERlc3Ryb3lIYXNoKGhIYXNoKTsKLSAgICBpZiAoSENSWVBUUFJPViBo
Q29udGV4dCA9IG1fY29udGV4dC0+aENvbnRleHQpCi0gICAgICAgIENyeXB0UmVsZWFzZUNvbnRl
eHQoaENvbnRleHQsIDApOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShBbGdvcml0aG0gYWxnb3JpdGhtKQotewotICAgIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3Qt
Pm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3JpdGhtOwotICAgIGlmICghQ3J5cHRBY3F1aXJl
Q29udGV4dCgmZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBudWxscHRyLCBudWxscHRyIC8q
IHVzZSBkZWZhdWx0IHByb3ZpZGVyICovLCBQUk9WX1JTQV9BRVMsIENSWVBUX1ZFUklGWUNPTlRF
WFQpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBib29sIHN1Y2NlZWRlZCA9IGZhbHNl
OwotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzE6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2Vz
dC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEExLCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRl
eHQtPmhIYXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVI
YXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMjU2LCAwLCAwLCAmZGln
ZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAgc3VjY2VlZGVkID0g
Q3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMzg0
LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKLSAgICAgICAg
c3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwg
Q0FMR19TSEFfNTEyLCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIH0KLSAgICBpZiAoc3VjY2VlZGVkKQotICAgICAgICByZXR1cm4g
ZGlnZXN0OwotICAgIHJldHVybiBudWxscHRyOwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRk
Qnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgaWYgKCFpbnB1
dCB8fCAhbGVuZ3RoKQotICAgICAgICByZXR1cm47Ci0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRI
YXNoRGF0YShtX2NvbnRleHQtPmhIYXNoLCByZWludGVycHJldF9jYXN0PGNvbnN0IEJZVEUqPihp
bnB1dCksIGxlbmd0aCwgMCkpOwotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpj
b21wdXRlSGFzaCgpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBEV09SRCBk
aWdlc3RMZW5ndGhCdWZmZXI7Ci0gICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSA9IHNp
emVvZihkaWdlc3RMZW5ndGhCdWZmZXIpOwotCi0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRI
YXNoUGFyYW0obV9jb250ZXh0LT5oSGFzaCwgSFBfSEFTSFNJWkUsIHJlaW50ZXJwcmV0X2Nhc3Q8
QllURSo+KCZkaWdlc3RMZW5ndGhCdWZmZXIpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSwgMCkp
OwotICAgIHJlc3VsdC5yZXNpemUoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKLQotICAgIFJFTEVBU0Vf
QVNTRVJUKENyeXB0R2V0SGFzaFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hWQUwsIHJl
c3VsdC5kYXRhKCksICZkaWdlc3RMZW5ndGhCdWZmZXIsIDApKTsKLSAgICBSRUxFQVNFX0FTU0VS
VChyZXN1bHQuc2l6ZSgpID09IGRpZ2VzdExlbmd0aEJ1ZmZlcik7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRl
eCA4NTJiOWI4YmVlYmZhMTFiY2YzMTQ1ZmE2YmI2MWMyNTA5MzBiZjM4Li4yNmRiN2YyN2QwYTYx
ZTljOTA5NTA4MmI5YTFjZmJlNmY4ZDI3ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAt
MzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIK
ICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCkBAIC0zOCw2ICszNyw3IEBACiAjaW5jbHVkZSAiU291cE5ldHdv
cmtQcm94eVNldHRpbmdzLmgiCiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDxs
aWJzb3VwL3NvdXAuaD4KKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGlmICghY2VydGlmaWNhdGVEYXRhKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCi0gICAgICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5
cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7
CiAgICAgICAgIGRpZ2VzdC0+YWRkQnl0ZXMoY2VydGlmaWNhdGVEYXRhLT5kYXRhLCBjZXJ0aWZp
Y2F0ZURhdGEtPmxlbik7CiAKICAgICAgICAgYXV0byBoYXNoID0gZGlnZXN0LT5jb21wdXRlSGFz
aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlIGIvU291cmNlL2Nt
YWtlL1dlYktpdEZTLmNtYWtlCmluZGV4IDI5YTA5NjkwMzhmYWE3NDRlMWE4YzU4ZjM1NmFkMDcz
ZjAwNTI1YmQuLjUxMzBmZmNiY2M3YzljZTc1MTRhZjRkNTUzYmQ4YTRmMDUwMTQ1NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2Vi
S2l0RlMuY21ha2UKQEAgLTEwLDYgKzEwLDkgQEAgZW5kaWYgKCkKIGlmIChOT1QgV0VCQ09SRV9E
SVIpCiAgICAgc2V0KFdFQkNPUkVfRElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJD
b3JlIikKIGVuZGlmICgpCitpZiAoTk9UIFBBTF9ESVIpCisgICAgc2V0KFBBTF9ESVIgIiR7Q01B
S0VfU09VUkNFX0RJUn0vU291cmNlL1dlYkNvcmUvUEFMIikKK2VuZGlmICgpCiBpZiAoTk9UIFdF
QktJVF9ESVIpCiAgICAgc2V0KFdFQktJVF9ESVIgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291cmNl
L1dlYktpdCIpCiBlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJr
aXQgYi9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAppbmRleCAzYmUyYmI0ZWNlN2RiNjg3MjY3
ZmVjZmVlZGQ2NGFiODNjMzRkMGVlLi5hODUwZDc5MWZkZDU5NGJiNjljMmQ1ZmIzZTgwZWIyZDI1
ZDQzM2JmIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdAorKysgYi9Ub29s
cy9TY3JpcHRzL2J1aWxkLXdlYmtpdApAQCAtMTQzLDcgKzE0Myw3IEBAIHNldENvbmZpZ3VyYXRp
b24oKTsKIG15ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwogCiAjIENoZWNrIHRoYXQgYWxs
IHRoZSBwcm9qZWN0IGRpcmVjdG9yaWVzIGFyZSB0aGVyZS4KLW15IEBwcm9qZWN0cyA9ICgiU291
cmNlL0phdmFTY3JpcHRDb3JlIiwgIlNvdXJjZS9XZWJDb3JlIiwgIlNvdXJjZS9XZWJLaXQiKTsK
K215IEBwcm9qZWN0cyA9ICgiU291cmNlL0phdmFTY3JpcHRDb3JlIiwgIlNvdXJjZS9XZWJDb3Jl
L1BBTCIsICJTb3VyY2UvV2ViQ29yZSIsICJTb3VyY2UvV2ViS2l0Iik7CiAKICMgQnVpbGQgV1RG
IGFzIGEgc2VwYXJhdGUgc3RhdGljIGxpYnJhcnkgb24gcG9ydHMgd2hpY2ggc3VwcG9ydCBpdC4K
IHNwbGljZSBAcHJvamVjdHMsIDAsIDAsICJTb3VyY2UvV1RGIiBpZiBpc0FwcGxlV2ViS2l0KCkg
b3IgaXNXaW5DYWlybygpOwpkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3Rz
LnR4dAppbmRleCBiZjNjNGVmYWIwZWFmMmNhYzI2YWU3NjZjNzY3YzFhNjY5OWI3YjQ0Li5iYjMz
MThjMmI2NTFmZmY2YjNhOWQxN2ZiZDNkNjJmMTI1NzEyYTI2IDEwMDY0NAotLS0gYS9DTWFrZUxp
c3RzLnR4dAorKysgYi9DTWFrZUxpc3RzLnR4dApAQCAtMTE0LDYgKzExNCw3IEBAIGVsc2UgKCkK
IGVuZGlmICgpCiAKIHNldChKYXZhU2NyaXB0Q29yZV9MSUJSQVJZX1RZUEUgU0hBUkVEKQorc2V0
KFBBTF9MSUJSQVJZX1RZUEUgU1RBVElDKQogc2V0KFdlYktpdF9MSUJSQVJZX1RZUEUgU0hBUkVE
KQogc2V0KFdlYktpdDJfTElCUkFSWV9UWVBFIFNIQVJFRCkKIHNldChXZWJDb3JlVGVzdFN1cHBv
cnRfTElCUkFSWV9UWVBFIFNUQVRJQykKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxv
ZwppbmRleCA2NDk0NWE0NzYyYzFmM2U5ZWNmZDRiOTIwZDkwY2EyMWZhMzFiNGU2Li40ZTljNDJh
MGEzNDJmMTFjOWYzMGY4NjI5OWNhZDkzMGI3Mjk0YjUxIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cK
KysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTctMDEtMTkgIE15bGVzIEMuIE1h
eGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2luZyB0aGUg
UGxhdGZvcm0gQWJzdHJhY3Rpb24gTGF5ZXIgKFBBTCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzM1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU291
cmNlL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFr
ZToKKwogMjAxNy0wMS0xNyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIEVOQUJMRShVU0VSX1RJTUlORykgTm90IERlZmluZWQgZm9yIEFwcGxlIFdpbmRv
d3Mgb3IgT1MgWCBQb3J0cwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299334</attachid>
            <date>2017-01-20 01:02:09 -0800</date>
            <delta_ts>2017-01-20 10:20:49 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-143358-20170120010007.patch</filename>
            <type>text/plain</type>
            <size>96073</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQwZTFlNjFkMTIzNWZm
ZDcxZmRlMGNlMGQyYWI5Y2JmMDM2MmI5Mi4uYTU3NmU4MWRjMDMzZjJiMzFmNTliODBiNGE0Y2U5
N2Q1ZDU3OTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE3LTAxLTE5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNp
bmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYkNv
cmUueGNjb25maWc6CisgICAgICAgICogUEFML0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6
IEFkZGVkLgorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25m
aWc6IEFkZGVkLgorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIFBBTC9NYWtlZmlsZTogQWRkZWQuCisgICAgICAgICogUEFML1BBTC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvY29uZmlnLmg6
IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwvQ01ha2VMaXN0cy50eHQ6IEFkZGVkLgorICAgICAg
ICAqIFBBTC9wYWwvUGxhdGZvcm1FZmwuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwv
UGxhdGZvcm1HVEsuY21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwvUGxhdGZvcm1NYWMu
Y21ha2U6IEFkZGVkLgorICAgICAgICAqIFBBTC9wYWwvUGxhdGZvcm1XaW4uY21ha2U6IEFkZGVk
LgorICAgICAgICAqIFBBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oLgorICAgICAgICAq
IFBBTC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0
by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwLgorICAgICAgICAqIFBBTC9wYWwvY3J5cHRv
L2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwLgorICAgICAg
ICAqIFBBTC9wYWwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RH
bnVUTFMuY3BwLgorICAgICAgICAqIFBBTC9wYWwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4u
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9Dcnlw
dG9EaWdlc3RXaW4uY3BwLgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAq
IFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAg
ICAqIFBsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEExLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdCk6
CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KToKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOgorICAgICAgICAqIGNy
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdCk6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNy
eXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KToKKyAgICAgICAgKiBjcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
eXB0b0RpZ2VzdEFsZ29yaXRobSk6CisgICAgICAgIChXZWJDb3JlOjpzaWduUlNBU1NBX1BLQ1Mx
X3YxXzUpOgorICAgICAgICAoV2ViQ29yZTo6dmVyaWZ5UlNBU1NBX1BLQ1MxX3YxXzUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFzaCk6CisgICAgICAgICogcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvQ3J5
cHRvRGlnZXN0QWxnb3JpdGhtKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBv
bGljeTo6ZmluZEhhc2hPZkNvbnRlbnRJblBvbGljaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhv
c3RUTFNDZXJ0aWZpY2F0ZVNldDo6Y29tcHV0ZUNlcnRpZmljYXRlSGFzaCk6CisKIDIwMTctMDEt
MTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBpdGVyYWJsZTw+
IHNob3VsZCBiZSBlbmFibGVkIG9uIFdLMQpkaWZmIC0tZ2l0IGEvU291cmNlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFiOGEyZGNiNTA0ZmI1NTZhYmM1ZjU4
M2I3NmJlMzhkOTJmMGZkZjEuLjE1ZmRmMjI0YTg5NjZiZTExZGNmNjNlMmZhOGY1ODdhMDNlNzI2
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvQ01ha2VM
aXN0cy50eHQKQEAgLTQ2LDYgKzQ2LDcgQEAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFH
UyhXVEYgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKIFdFQktJVF9TRVRfRVhUUkFfQ09N
UElMRVJfRkxBR1MoSmF2YVNjcmlwdENvcmUgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkK
IAogaWYgKEVOQUJMRV9XRUJDT1JFKQorICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxB
R1MoUEFMICR7QURESVRJT05BTF9DT01QSUxFUl9GTEFHU30pCiAgICAgV0VCS0lUX1NFVF9FWFRS
QV9DT01QSUxFUl9GTEFHUyhXZWJDb3JlVGVzdFN1cHBvcnQgJHtBRERJVElPTkFMX0NPTVBJTEVS
X0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmUgJHtB
RERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVS
X0ZMQUdTKFdlYkNvcmVEZXJpdmVkU291cmNlcyAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiNTA0M2M1MDc1NmE0NGY4NDZiM2M2NWNiMmZhNTU2
NjQwNGMxNTM0Li42OGE1OTczOWNmMWQ4NTgxNjkzYThjMTQ3ZDM4NWI5YzYyN2FmY2IxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMSw2ICsxLDcgQEAKIGNtYWtlX21pbmltdW1fcmVxdWlyZWQo
VkVSU0lPTiAyLjguMTIpCiBpbmNsdWRlKFdlYktpdENvbW1vbikKIHNldF9wcm9wZXJ0eShESVJF
Q1RPUlkgLiBQUk9QRVJUWSBGT0xERVIgIldlYkNvcmUiKQorYWRkX3N1YmRpcmVjdG9yeShQQUwv
cGFsKQogCiBzZXQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7Q01BS0VfQklO
QVJZX0RJUn0iCkBAIC0yOTQ1LDYgKzI5NDYsNyBAQCBzZXQoV2ViQ29yZV9QTFVHX0lOU19SRVNP
VVJDRVMKIHNldChXZWJDb3JlX0xJQlJBUklFUwogICAgICR7SUNVX0xJQlJBUklFU30KICAgICBK
YXZhU2NyaXB0Q29yZSR7REVCVUdfU1VGRklYfQorICAgIFBBTCR7REVCVUdfU1VGRklYfQogKQog
CiBpZiAoRU5BQkxFX0xFR0FDWV9FTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZwppbmRleCA2YjE5YWNmNjQ1Y2Q4OTk2ZDYw
M2I0YTAwMTQ0ZWFiODZkYzhiNDM3Li5kNWJmMjk4NTZlMDdlMzEyNjU5N2I2ZTczNDExMDk0MDk0
ZDAzZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3Jl
LnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNj
b25maWcKQEAgLTQ2LDcgKzQ2LDcgQEAgT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKE9USEVSX0NG
TEFHUyk7CiAKIFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9ucyAkKFNES1JPT1Qp
L3Vzci9sb2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9uczsKIAotSEVBREVSX1NFQVJDSF9QQVRI
UyA9IEZvcndhcmRpbmdIZWFkZXJzIGljdSAvdXNyL2luY2x1ZGUvbGlieHNsdCAvdXNyL2luY2x1
ZGUvbGlieG1sMiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUi
ICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJ
T05TX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CitIRUFERVJf
U0VBUkNIX1BBVEhTID0gUEFMIEZvcndhcmRpbmdIZWFkZXJzIGljdSAvdXNyL2luY2x1ZGUvbGli
eHNsdCAvdXNyL2luY2x1ZGUvbGlieG1sMiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUiICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUi
ICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoSEVBREVSX1NFQVJDSF9Q
QVRIUyk7CiBJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CiBJTlNUQUxMX1BBVEggPSAkKFNZ
U1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3M7CiBJTlNUQUxMX1BBVEhbc2RrPW1h
Y29zeCpdID0gJChXRUJDT1JFX0ZSQU1FV09SS1NfRElSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUv
UEFML0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRlMjUyYmNjY2Rk
OTUwNTM0MTkxZDlhZGQ1NzQwYmFmOWU0N2NhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsMjQgQEAK
Ky8vIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKworI2luY2x1ZGUgIi4uLy4uL0Nv
bmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWciCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUv
UEFML0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmIw
OGJlMGVlMTJlMTU2YmVmODQ0MGMxNjM3MTQzYTAzNDU3YzM2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZwpA
QCAtMCwwICsxLDI0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0
OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNp
bmNsdWRlICIuLi8uLi9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWciCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnIGIv
U291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMTUyYzExZGRiMzQwYzViZDUzY2UzNjJmNTMzNDc2ZGU5ZGRhNDk1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZwpAQCAt
MCwwICsxLDM4IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0Ogor
Ly8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
Ly8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNs
dWRlICIuLi8uLi9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnIgorCitJTlNUQUxMX1BB
VEggPSAkKElOU1RBTExfUEFUSF8kKENPTkZJR1VSQVRJT04pKTsKK0lOU1RBTExfUEFUSF9Qcm9k
dWN0aW9uID0gL3Vzci9sb2NhbC9saWI7CisKK1NLSVBfSU5TVEFMTCA9ICQoU0tJUF9JTlNUQUxM
XyQoRk9SQ0VfVE9PTF9JTlNUQUxMKSk7CitTS0lQX0lOU1RBTExfID0gWUVTOworU0tJUF9JTlNU
QUxMX05PID0gWUVTOworU0tJUF9JTlNUQUxMX1lFUyA9IE5POworCitQUk9EVUNUX05BTUUgPSBQ
QUw7CitFWEVDVVRBQkxFX1BSRUZJWCA9IGxpYjsKK0VYUE9SVEVEX1NZTUJPTFNfRklMRSA9IDsK
KworR0NDX1BSRUZJWF9IRUFERVIgPSA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
UEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTczZmQ4YjJhMTEzMDc0ZmI3ZDcw
YzAzMGJlMDY4NTMzNmQ4MzRiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMCwwICsxLDI0MyBAQAorLy8gISQq
VVRGOCokIQoreworCWFyY2hpdmVWZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2Jq
ZWN0VmVyc2lvbiA9IDQ2OworCW9iamVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCisJCTFDMDlEMDUzMUUzMUM0NDEwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDlEMDUyMUUz
MUM0NDEwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3QuaCAqLzsgfTsKKwkJMUMwOUQwNTYxRTMxQzQ2
NTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzA5RDA1NTFFMzFDNDY1MDA3MjVGMTgg
LyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLzsgfTsKKwkJMUMwOUQwNTgxRTMxQzU3
RTAwNzI1RjE4IC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUMwOUQwNTcxRTMxQzU3RTAwNzI1RjE4IC8qIGNvbmZpZy5oICovOyB9Owor
LyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLworCQkxQzA5RDAzRDFFMzFDMzI4MDA3MjVGMTggLyogbGliUEFMLmEgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7
IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYlBBTC5hOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQkxQzA5RDA1MjFFMzFDNDQxMDA3MjVGMTggLyogQ3J5cHRvRGln
ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0RpZ2VzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzA5RDA1NTFFMzFDNDY1MDA3MjVGMTggLyog
Q3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA7IHBhdGggPSBjb21tb25jcnlw
dG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUMwOUQwNTcxRTMxQzU3RTAwNzI1RjE4IC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMUMwOUQwNUQxRTMxQzc3QTAwNzI1RjE4IC8qIFBBTC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueGNjb25maWc7IHBhdGggPSBQQUwueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDMDlEMDYyMUUzMUVDMjgwMDcyNUYxOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzA5RDA2MzFFMzFFQzMxMDA3MjVGMTggLyog
QmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29u
ZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisJCTFDMDlEMDNBMUUzMUMzMjgwMDcyNUYxOCAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTFDMDlEMDM0MUUzMUMzMjgw
MDcyNUYxOCA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMw
OUQwNUMxRTMxQzczMzAwNzI1RjE4IC8qIENvbmZpZ3VyYXRpb25zICovLAorCQkJCTFDMDlEMDU3
MUUzMUM1N0UwMDcyNUYxOCAvKiBjb25maWcuaCAqLywKKwkJCQkxQzA5RDAzRjFFMzFDMzI4MDA3
MjVGMTggLyogcGFsICovLAorCQkJCTFDMDlEMDNFMUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9kdWN0
cyAqLywKKwkJCSk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzA5RDAz
RTFFMzFDMzI4MDA3MjVGMTggLyogUHJvZHVjdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDNEMUUzMUMzMjgwMDcyNUYxOCAvKiBsaWJQQUwu
YSAqLywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworCQkxQzA5RDAzRjFFMzFDMzI4MDA3MjVGMTggLyogcGFsICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDA1MTFFMzFDNDEyMDA3
MjVGMTggLyogY3J5cHRvICovLAorCQkJKTsKKwkJCXBhdGggPSBwYWw7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQkxQzA5RDA1MTFFMzFDNDEyMDA3MjVGMTggLyogY3J5cHRv
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDA1
NDFFMzFDNDUyMDA3MjVGMTggLyogY29tbW9uY3J5cHRvICovLAorCQkJCTFDMDlEMDUyMUUzMUM0
NDEwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3QuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY3J5cHRv
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUMwOUQwNTQxRTMxQzQ1MjAw
NzI1RjE4IC8qIGNvbW1vbmNyeXB0byAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJMUMwOUQwNTUxRTMxQzQ2NTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdENv
bW1vbkNyeXB0by5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGNvbW1vbmNyeXB0bzsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDMDlEMDVDMUUzMUM3MzMwMDcyNUYxOCAv
KiBDb25maWd1cmF0aW9ucyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJMUMwOUQwNUQxRTMxQzc3QTAwNzI1RjE4IC8qIFBBTC54Y2NvbmZpZyAqLywKKwkJ
CQkxQzA5RDA2MjFFMzFFQzI4MDA3MjVGMTggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovLAor
CQkJCTFDMDlEMDYzMUUzMUVDMzEwMDcyNUYxOCAvKiBCYXNlLnhjY29uZmlnICovLAorCQkJKTsK
KwkJCXBhdGggPSBDb25maWd1cmF0aW9uczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhIZWFkZXJzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTFDMDlEMDNCMUUzMUMzMjgwMDcyNUYxOCAvKiBIZWFkZXJz
ICovID0geworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMUMwOUQwNTgxRTMxQzU3RTAwNzI1
RjE4IC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMwOUQwNTMxRTMxQzQ0MTAwNzI1
RjE4IC8qIENyeXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYSGVhZGVyc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAq
LworCQkxQzA5RDAzQzFFMzFDMzI4MDA3MjVGMTggLyogUEFMICovID0geworCQkJaXNhID0gUEJY
TmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFDMDlEMDQ4MUUzMUMz
MjgwMDcyNUYxOCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdl
dCAiUEFMIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTFDMDlEMDM5MUUzMUMzMjgwMDcy
NUYxOCAvKiBTb3VyY2VzICovLAorCQkJCTFDMDlEMDNBMUUzMUMzMjgwMDcyNUYxOCAvKiBGcmFt
ZXdvcmtzICovLAorCQkJCTFDMDlEMDNCMUUzMUMzMjgwMDcyNUYxOCAvKiBIZWFkZXJzICovLAor
CQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJ
KTsKKwkJCW5hbWUgPSBQQUw7CisJCQlwcm9kdWN0TmFtZSA9IFBBTDsKKwkJCXByb2R1Y3RSZWZl
cmVuY2UgPSAxQzA5RDAzRDFFMzFDMzI4MDA3MjVGMTggLyogbGliUEFMLmEgKi87CisJCQlwcm9k
dWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsK
Ky8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0
IHNlY3Rpb24gKi8KKwkJMUMwOUQwMzUxRTMxQzMyODAwNzI1RjE4IC8qIFByb2plY3Qgb2JqZWN0
ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFz
dFVwZ3JhZGVDaGVjayA9IDA4MzA7CisJCQkJVGFyZ2V0QXR0cmlidXRlcyA9IHsKKwkJCQkJMUMw
OUQwM0MxRTMxQzMyODAwNzI1RjE4ID0geworCQkJCQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9uID0g
OC4zOworCQkJCQkJUHJvdmlzaW9uaW5nU3R5bGUgPSBBdXRvbWF0aWM7CisJCQkJCX07CisJCQkJ
fTsKKwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMUMwOUQwMzgxRTMxQzMyODAw
NzI1RjE4IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUEFMIiAq
LzsKKwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMiI7CisJCQlkZXZlbG9wbWVu
dFJlZ2lvbiA9IEVuZ2xpc2g7CisJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKKwkJCWtu
b3duUmVnaW9ucyA9ICgKKwkJCQlFbmdsaXNoLAorCQkJCUphcGFuZXNlLAorCQkJCUZyZW5jaCwK
KwkJCQlHZXJtYW4sCisJCQkJU3BhbmlzaCwKKwkJCQlEdXRjaCwKKwkJCQlJdGFsaWFuLAorCQkJ
KTsKKwkJCW1haW5Hcm91cCA9IDFDMDlEMDM0MUUzMUMzMjgwMDcyNUYxODsKKwkJCXByb2R1Y3RS
ZWZHcm91cCA9IDFDMDlEMDNFMUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9kdWN0cyAqLzsKKwkJCXBy
b2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgK
KwkJCQkxQzA5RDAzQzFFMzFDMzI4MDA3MjVGMTggLyogUEFMICovLAorCQkJKTsKKwkJfTsKKy8q
IEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLworCQkxQzA5RDAzOTFFMzFDMzI4MDA3MjVGMTggLyogU291cmNlcyAqLyA9
IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTFDMDlEMDU2MUUzMUM0NjUwMDcyNUYxOCAv
KiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJY
U291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJh
dGlvbiBzZWN0aW9uICovCisJCTFDMDlEMDQ2MUUzMUMzMjgwMDcyNUYxOCAvKiBEZWJ1ZyAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSAxQzA5RDA2MjFFMzFFQzI4MDA3MjVGMTggLyogRGVidWdSZWxlYXNlLnhjY29u
ZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlERUFEX0NPREVfU1RSSVBQSU5HID0g
IiQoREVBRF9DT0RFX1NUUklQUElOR19kZWJ1ZykiOworCQkJCURFQlVHX0RFRklORVMgPSAiJChE
RUJVR19ERUZJTkVTX2RlYnVnKSI7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9ICIkKEdD
Q19PUFRJTUlaQVRJT05fTEVWRUxfZGVidWcpIjsKKwkJCQlTVFJJUF9JTlNUQUxMRURfUFJPRFVD
VCA9ICIkKFNUUklQX0lOU1RBTExFRF9QUk9EVUNUX2RlYnVnKSI7CisJCQl9OworCQkJbmFtZSA9
IERlYnVnOworCQl9OworCQkxQzA5RDA0NzFFMzFDMzI4MDA3MjVGMTggLyogUmVsZWFzZSAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSAxQzA5RDA2MjFFMzFFQzI4MDA3MjVGMTggLyogRGVidWdSZWxlYXNlLnhjY29u
ZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlTVFJJUF9JTlNUQUxMRURfUFJPRFVD
VCA9IE5POworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxQzA5RDA0OTFFMzFD
MzI4MDA3MjVGMTggLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNUQxRTMxQzc3QTAwNzI1
RjE4IC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJ
bmFtZSA9IERlYnVnOworCQl9OworCQkxQzA5RDA0QTFFMzFDMzI4MDA3MjVGMTggLyogUmVsZWFz
ZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSAxQzA5RDA1RDFFMzFDNzdBMDA3MjVGMTggLyogUEFMLnhjY29uZmln
ICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJ
fTsKKwkJMUMwOUQwNUExRTMxQzZGMDAwNzI1RjE4IC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNl
ID0gMUMwOUQwNjMxRTMxRUMzMTAwNzI1RjE4IC8qIEJhc2UueGNjb25maWcgKi87CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkxQzA5
RDA1QjFFMzFDNkYwMDA3MjVGMTggLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzA5RDA1
RDFFMzFDNzdBMDA3MjVGMTggLyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29u
ZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2Vj
dGlvbiAqLworCQkxQzA5RDAzODFFMzFDMzI4MDA3MjVGMTggLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhQcm9qZWN0ICJQQUwiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0
aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMUMwOUQwNDYxRTMxQzMy
ODAwNzI1RjE4IC8qIERlYnVnICovLAorCQkJCTFDMDlEMDQ3MUUzMUMzMjgwMDcyNUYxOCAvKiBS
ZWxlYXNlICovLAorCQkJCTFDMDlEMDVBMUUzMUM2RjAwMDcyNUYxOCAvKiBQcm9kdWN0aW9uICov
LAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTFDMDlEMDQ4MUUzMUMz
MjgwMDcyNUYxOCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdl
dCAiUEFMIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENv
bmZpZ3VyYXRpb25zID0gKAorCQkJCTFDMDlEMDQ5MUUzMUMzMjgwMDcyNUYxOCAvKiBEZWJ1ZyAq
LywKKwkJCQkxQzA5RDA0QTFFMzFDMzI4MDA3MjVGMTggLyogUmVsZWFzZSAqLywKKwkJCQkxQzA5
RDA1QjFFMzFDNkYwMDA3MjVGMTggLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0
Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUg
PSBQcm9kdWN0aW9uOworCQl9OworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAq
LworCX07CisJcm9vdE9iamVjdCA9IDFDMDlEMDM1MUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9qZWN0
IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDg4YzgwYWRmNmMxMWY2
YzMwODIwM2E4ZTcyZWE0ODM2ODZmM2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML2NvbmZpZy5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaWYgZGVmaW5lZChIQVZFX0NPTkZJR19IKSAmJiBIQVZFX0NPTkZJR19IICYmIGRlZmlu
ZWQoQlVJTERJTkdfV0lUSF9DTUFLRSkKKyNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgorI2VuZGlm
CisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNy
b3MuaD4KKworI2lmZGVmIF9fQVBQTEVfXworI2RlZmluZSBIQVZFX0ZVTkNfVVNMRUVQIDEKKyNl
bmRpZiAvKiBfX0FQUExFX18gKi8KKworI2lmIE9TKFdJTkRPV1MpCisKKyNpZm5kZWYgX1dJTjMy
X1dJTk5UCisjZGVmaW5lIF9XSU4zMl9XSU5OVCAweDYwMQorI2VuZGlmCisKKyNpZm5kZWYgV0lO
VkVSCisjZGVmaW5lIFdJTlZFUiAweDA2MDEKKyNlbmRpZgorCisjZW5kaWYgLyogT1MoV0lORE9X
UykgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKy8vIFRoZXNlIHVuZGVmcyBtYXRjaCB1cCB3
aXRoIGRlZmluZXMgaW4gV2ViQ29yZVByZWZpeC5oIGZvciBNYWMgT1MgWC4KKy8vIEhlbHBzIHVz
IGNhdGNoIGlmIGFueW9uZSB1c2VzIG5ldyBvciBkZWxldGUgYnkgYWNjaWRlbnQgaW4gY29kZSBh
bmQgZG9lc24ndCBpbmNsdWRlICJjb25maWcuaCIuCisjdW5kZWYgbmV3CisjdW5kZWYgZGVsZXRl
CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworI2luY2x1ZGUgPGNpc282NDY+CisKKyNl
bmRpZgorCisjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L0NNYWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmZjYzMDQwNTI4MWMwM2ZmOTAwZjMwZTliNzgw
NGI5MzRiMGZhNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0NN
YWtlTGlzdHMudHh0CkBAIC0wLDAgKzEsNDMgQEAKK3NldChQQUxfSEVBREVSUworICAgIGNyeXB0
by9DcnlwdG9EaWdlc3QuaAorKQorCitzZXQoUEFMX1NPVVJDRVMKKykKKworc2V0KFBBTF9JTkNM
VURFX0RJUkVDVE9SSUVTCisgICAgIiR7UEFMX0RJUn0iCisgICAgIiR7UEFMX0RJUn0vcGFsIgor
ICAgICIke1BBTF9ESVJ9L3BhbC9jcnlwdG8iCispCisKK3NldChQQUxfTElCUkFSSUVTCisgICAg
V1RGCispCisKK1dFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQorCitXRUJL
SVRfV1JBUF9TT1VSQ0VMSVNUKCR7UEFMX1NPVVJDRVN9KQorV0VCS0lUX0ZSQU1FV09SSyhQQUwp
CisKK2lmIChVTklYKQorICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgVEFSR0VUIFBB
TAorICAgICAgICBQT1NUX0JVSUxECisgICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJM
RX0gJHtXRUJDT1JFX0RJUn0vU2NyaXB0cy9FbmZvcmNlUEFMTGF5ZXJpbmcucHkgJDxUQVJHRVRf
RklMRTpQQUw+ICR7UEFMX0RJUn0KKyAgICAgICAgVkVSQkFUSU0pCitlbmRpZiAoKQorCitpZiAo
TVNWQykKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgICAgICAgIFRBUkdFVCBQQUwKKyAgICAg
ICAgUFJFX0JVSUxECisgICAgICAgIENPTU1BTkQgJHtQRVJMX0VYRUNVVEFCTEV9ICR7V0VCS0lU
X0xJQlJBUklFU19ESVJ9L3Rvb2xzL3NjcmlwdHMvYXV0by12ZXJzaW9uLnBsICR7REVSSVZFRF9T
T1VSQ0VTX0RJUn0KKyAgICAgICAgVkVSQkFUSU0pCisKKyAgICBhZGRfY3VzdG9tX2NvbW1hbmQo
CisgICAgICAgIFRBUkdFVCBQQUwKKyAgICAgICAgUE9TVF9CVUlMRAorICAgICAgICBDT01NQU5E
ICR7UEVSTF9FWEVDVVRBQkxFfSAke1dFQktJVF9MSUJSQVJJRVNfRElSfS90b29scy9zY3JpcHRz
L3ZlcnNpb24tc3RhbXAucGwgJHtERVJJVkVEX1NPVVJDRVNfRElSfSAkPFRBUkdFVF9GSUxFOlBB
TD4KKyAgICAgICAgVkVSQkFUSU0pCitlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxh
dGZvcm1FZmwuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc1YzE4OTg0YWU4OWI5Y2VhYWIyNWI1N2ZkYTA2
YTFhMTVmYzYzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxh
dGZvcm1FZmwuY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQQUxfU09VUkNFUwor
ICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvUGxhdGZvcm1HVEsuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc1YzE4OTg0YWU4OWI5Y2Vh
YWIyNWI1N2ZkYTA2YTFhMTVmYzYzYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQ
QUxfU09VUkNFUworICAgIGNyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY5Njhl
YzRkOThlNDFmNzM3MjkwZjhmNGYyOGY3NGY2YTJlNjFmOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTAsMCArMSwzIEBACits
aXN0KEFQUEVORCBQQUxfU09VUkNFUworICAgIGNyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGln
ZXN0Q29tbW9uQ3J5cHRvLmNwcAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW4u
Y21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmY2OTE5Zjc2ZjEwOGY3MmVjODg3YTFiNzM1MDc4MTcyMmEyNThh
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW4u
Y21ha2UKQEAgLTAsMCArMSwzIEBACitsaXN0KEFQUEVORCBQQUxfU09VUkNFUworICAgIGNyeXB0
by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAorKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Ny
eXB0by9DcnlwdG9EaWdlc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODhlMTI3N2M0OTc5Y2IwNGIwMDFlMzUz
ZThjOGU4ZTI5OTNiMzJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2Vz
dENvbnRleHQ7CisKK2NsYXNzIENyeXB0b0RpZ2VzdCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ3J5cHRvRGlnZXN0KTsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7Cisg
ICAgICAgIFNIQV8xLAorICAgICAgICBTSEFfMjI0LAorICAgICAgICBTSEFfMjU2LAorICAgICAg
ICBTSEFfMzg0LAorICAgICAgICBTSEFfNTEyLAorICAgIH07CisgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGNyZWF0ZShBbGdvcml0aG0pOworICAgIH5DcnlwdG9EaWdl
c3QoKTsKKworICAgIHZvaWQgYWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5n
dGgpOworICAgIFZlY3Rvcjx1aW50OF90PiBjb21wdXRlSGFzaCgpOworCitwcml2YXRlOgorICAg
IENyeXB0b0RpZ2VzdCgpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRl
eHQ+IG1fY29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1v
bkNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9jb21tb25jcnlwdG8v
Q3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmEyNDFhNGUyMzU4NmEx
YzEzYWQ5MmE5ZTkxMTRlYjQyZmRjYWMzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5j
cHAKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9u
Q3J5cHRvLmg+CisKK25hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4
dCB7CisgICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOworICAgIHZvaWQqIGNj
Q29udGV4dDsKK307CisKK2lubGluZSBDQ19TSEExX0NUWCogdG9TSEExQ29udGV4dChDcnlwdG9E
aWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0g
PT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q0NfU0hBMV9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTI1
Nl9DVFgqIHRvU0hBMjI0Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQorewor
ICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yMjQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4
dC0+Y2NDb250ZXh0KTsKK30KK2lubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTI1NkNvbnRleHQo
Q3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxn
b3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9Citpbmxp
bmUgQ0NfU0hBNTEyX0NUWCogdG9TSEEzODRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNv
bnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzM4NCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9D
VFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTUxMl9DVFgqIHRvU0hB
NTEyQ29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChj
b250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0
KTsKK30KKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0KG5l
dyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdl
c3QoKQoreworICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAgICAgICAgZGVsZXRlIHRvU0hBMUNvbnRl
eHQobV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIGRlbGV0ZSB0b1NIQTIyNENvbnRleHQo
bV9jb250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIGRlbGV0ZSB0b1NIQTI1NkNvbnRleHQobV9j
b250ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIGRlbGV0ZSB0b1NIQTM4NENvbnRleHQobV9jb250
ZXh0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV81MTI6CisgICAgICAgIGRlbGV0ZSB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0
LmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworCitzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bSBhbGdvcml0aG0pCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0
KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBh
bGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIENDX1NIQTFfQ1RYKiBjb250ZXh0ID0g
bmV3IENDX1NIQTFfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0g
Y29udGV4dDsKKyAgICAgICAgQ0NfU0hBMV9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4g
ZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0
OiB7CisgICAgICAgIENDX1NIQTI1Nl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMjU2X0NUWDsK
KyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAg
IENDX1NIQTIyNF9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0K
KyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIEND
X1NIQTI1Nl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMjU2X0NUWDsKKyAgICAgICAgZGlnZXN0
LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTI1Nl9Jbml0
KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7CisgICAgICAgIENDX1NIQTUxMl9DVFgqIGNv
bnRleHQgPSBuZXcgQ0NfU0hBNTEyX0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNj
Q29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTM4NF9Jbml0KGNvbnRleHQpOworICAg
ICAgICByZXR1cm4gZGlnZXN0OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfNTEyOiB7CisgICAgICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQgPSBuZXcgQ0Nf
U0hBNTEyX0NUWDsKKyAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRl
eHQ7CisgICAgICAgIENDX1NIQTUxMl9Jbml0KGNvbnRleHQpOworICAgICAgICByZXR1cm4gZGln
ZXN0OworICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25z
dCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBzd2l0Y2ggKG1fY29udGV4dC0+
YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Cisg
ICAgICAgIENDX1NIQTFfVXBkYXRlKHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5w
dXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMjI0OgorICAgICAgICBDQ19TSEEyMjRfVXBkYXRlKHRvU0hBMjI0Q29udGV4
dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIENDX1NIQTI1
Nl9VcGRhdGUodG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzM4NDoKKyAgICAgICAgQ0NfU0hBMzg0X1VwZGF0ZSh0b1NIQTM4NENvbnRleHQobV9jb250ZXh0
LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgorICAgICAgICBDQ19TSEE1MTJfVXBkYXRlKHRv
U0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KK30KKworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0
ZUhhc2goKQoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CisgICAgc3dpdGNoIChtX2Nv
bnRleHQtPmFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8xOgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTFfRElHRVNUX0xFTkdUSCk7CisgICAg
ICAgIENDX1NIQTFfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEExQ29udGV4dChtX2NvbnRleHQu
Z2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzIyNDoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEyMjRfRElHRVNUX0xFTkdU
SCk7CisgICAgICAgIENDX1NIQTIyNF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTIyNENvbnRl
eHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjU2
X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEEyNTZfRmluYWwocmVzdWx0LmRhdGEoKSwg
dG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgorICAgICAgICByZXN1bHQucmVz
aXplKENDX1NIQTM4NF9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBMzg0X0ZpbmFsKHJl
c3VsdC5kYXRhKCksIHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKKyAgICAg
ICAgcmVzdWx0LnJlc2l6ZShDQ19TSEE1MTJfRElHRVNUX0xFTkdUSCk7CisgICAgICAgIENDX1NI
QTUxMl9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0LmdldCgp
KSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8v
IG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE3OGFlMGMz
YjhkNzAwODYwNzczMzVhZTNlMzJlZmFhOTEzOTZkOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCkBA
IC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNiBTb2Z0QXRIb21lCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKKworI2luY2x1ZGUgPGdjcnlwdC5oPgor
CituYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIGlu
dCBhbGdvcml0aG07CisgICAgZ2NyeV9tZF9oZF90IG1kOworfTsKKworQ3J5cHRvRGlnZXN0OjpD
cnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQor
eworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQoreworfQorCitzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobSBhbGdvcml0aG0pCit7CisgICAgaW50IGdjcnlwdEFsZ29yaXRobTsKKworICAgIHN3
aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzE6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAg
Z2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEyMjQ7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6CisgICAgICAgIGdjcnlwdEFsZ29y
aXRobSA9IEdDUllfTURfU0hBMjU2OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZ
X01EX1NIQTM4NDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzUxMjoKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEE1MTI7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdl
c3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxn
b3JpdGhtID0gZ2NyeXB0QWxnb3JpdGhtOworCisgICAgZ2NyeV9tZF9vcGVuKCZkaWdlc3QtPm1f
Y29udGV4dC0+bWQsIGdjcnlwdEFsZ29yaXRobSwgMCk7CisgICAgaWYgKCFkaWdlc3QtPm1fY29u
dGV4dC0+bWQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRpZ2VzdDsK
K30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXpl
X3QgbGVuZ3RoKQoreworICAgIGdjcnlfbWRfd3JpdGUobV9jb250ZXh0LT5tZCwgaW5wdXQsIGxl
bmd0aCk7Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkK
K3sKKyAgICBpbnQgZGlnZXN0TGVuID0gZ2NyeV9tZF9nZXRfYWxnb19kbGVuKG1fY29udGV4dC0+
YWxnb3JpdGhtKTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGRpZ2VzdExlbik7CisKKyAg
ICBnY3J5X21kX2ZpbmFsKG1fY29udGV4dC0+bWQpOworICAgIG1lbWNweShyZXN1bHQuZGF0YSgp
LCBnY3J5X21kX3JlYWQobV9jb250ZXh0LT5tZCwgMCksIGRpZ2VzdExlbik7CisgICAgZ2NyeV9t
ZF9jbG9zZShtX2NvbnRleHQtPm1kKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8v
Z251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Ny
eXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTZiOGZiYmRh
MGYwOTA5MzE5OTFmNmIwMTY2NmM5YjM1OWFjMDgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKQEAg
LTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z251dGxzL2dudXRscy5oPgorI2luY2x1
ZGUgPGdudXRscy9jcnlwdG8uaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlwdG9E
aWdlc3RDb250ZXh0IHsKKyAgICBnbnV0bHNfZGlnZXN0X2FsZ29yaXRobV90IGFsZ29yaXRobTsK
KyAgICBnbnV0bHNfaGFzaF9oZF90IGhhc2g7Cit9OworCitDcnlwdG9EaWdlc3Q6OkNyeXB0b0Rp
Z2VzdCgpCisgICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCit7Cit9CisK
K0NyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7CisgICAgZ251dGxzX2hhc2hfZGVpbml0
KG1fY29udGV4dC0+aGFzaCwgMCk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+
IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkK
K3sKKyAgICBnbnV0bHNfZGlnZXN0X2FsZ29yaXRobV90IGdudXRsc0FsZ29yaXRobTsKKworICAg
IHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzE6IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEExOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzIyNDogeworICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTIyNDsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8yNTY6IHsKKyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEyNTY7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMzg0OiB7CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMzg0Owor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzUxMjogeworICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTUxMjsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBkaWdlc3QtPm1fY29udGV4
dC0+YWxnb3JpdGhtID0gZ251dGxzQWxnb3JpdGhtOworCisgICAgaW50IHJldCA9IGdudXRsc19o
YXNoX2luaXQoJmRpZ2VzdC0+bV9jb250ZXh0LT5oYXNoLCBnbnV0bHNBbGdvcml0aG0pOworICAg
IGlmIChyZXQgIT0gR05VVExTX0VfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gZGlnZXN0OworfQorCit2b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29u
c3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCit7CisgICAgZ251dGxzX2hhc2gobV9jb250
ZXh0LT5oYXNoLCBpbnB1dCwgbGVuZ3RoKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0Rp
Z2VzdDo6Y29tcHV0ZUhhc2goKQoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CisgICAg
aW50IGRpZ2VzdExlbiA9IGdudXRsc19oYXNoX2dldF9sZW4obV9jb250ZXh0LT5hbGdvcml0aG0p
OworICAgIHJlc3VsdC5yZXNpemUoZGlnZXN0TGVuKTsKKworICAgIGdudXRsc19oYXNoX291dHB1
dChtX2NvbnRleHQtPmhhc2gsIHJlc3VsdC5kYXRhKCkpOworCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworfSAvLyBuYW1lc3BhY2UgUEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxODM4ODQxOWJk
Yjk2M2ExMTQ1YWM5YTg5Njc0ZjNmYjNhMTdlZWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcApAQCAtMCwwICsx
LDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlw
dG9EaWdlc3QuaCIKKworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3aW5jcnlwdC5o
PgorCituYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAg
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKKyAgICBIQ1JZUFRQUk9WIGhDb250
ZXh0IHsgMCB9OworICAgIEhDUllQVEhBU0ggaEhhc2ggeyAwIH07Cit9OworCitDcnlwdG9EaWdl
c3Q6OkNyeXB0b0RpZ2VzdCgpCisgICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRl
eHQpCit7Cit9CisKK0NyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7CisgICAgaWYgKEhD
UllQVEhBU0ggaEhhc2ggPSBtX2NvbnRleHQtPmhIYXNoKQorICAgICAgICBDcnlwdERlc3Ryb3lI
YXNoKGhIYXNoKTsKKyAgICBpZiAoSENSWVBUUFJPViBoQ29udGV4dCA9IG1fY29udGV4dC0+aENv
bnRleHQpCisgICAgICAgIENyeXB0UmVsZWFzZUNvbnRleHQoaENvbnRleHQsIDApOworfQorCitz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShBbGdvcml0
aG0gYWxnb3JpdGhtKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2Vz
dChuZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0g
YWxnb3JpdGhtOworICAgIGlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmZGlnZXN0LT5tX2NvbnRl
eHQtPmhDb250ZXh0LCBudWxscHRyLCBudWxscHRyIC8qIHVzZSBkZWZhdWx0IHByb3ZpZGVyICov
LCBQUk9WX1JTQV9BRVMsIENSWVBUX1ZFUklGWUNPTlRFWFQpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBib29sIHN1Y2NlZWRlZCA9IGZhbHNlOworICAgIHN3aXRjaCAoYWxnb3JpdGht
KSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKKyAgICAgICAg
c3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwg
Q0FMR19TSEExLCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsK
KyAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5o
Q29udGV4dCwgQ0FMR19TSEFfMjU2LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8zODQ6IHsKKyAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+
bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMzg0LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRl
eHQtPmhIYXNoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTI6IHsKKyAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVI
YXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfNTEyLCAwLCAwLCAmZGln
ZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKyAg
ICBpZiAoc3VjY2VlZGVkKQorICAgICAgICByZXR1cm4gZGlnZXN0OworICAgIHJldHVybiBudWxs
cHRyOworfQorCit2b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQs
IHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKCFpbnB1dCB8fCAhbGVuZ3RoKQorICAgICAgICBy
ZXR1cm47CisgICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRIYXNoRGF0YShtX2NvbnRleHQtPmhIYXNo
LCByZWludGVycHJldF9jYXN0PGNvbnN0IEJZVEUqPihpbnB1dCksIGxlbmd0aCwgMCkpOworfQor
CitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgVmVj
dG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXI7CisgICAg
RFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSA9IHNpemVvZihkaWdlc3RMZW5ndGhCdWZmZXIp
OworCisgICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5oSGFz
aCwgSFBfSEFTSFNJWkUsIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+KCZkaWdlc3RMZW5ndGhCdWZm
ZXIpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSwgMCkpOworICAgIHJlc3VsdC5yZXNpemUoZGln
ZXN0TGVuZ3RoQnVmZmVyKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFzaFBhcmFt
KG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hWQUwsIHJlc3VsdC5kYXRhKCksICZkaWdlc3RMZW5n
dGhCdWZmZXIsIDApKTsKKyAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuc2l6ZSgpID09IGRpZ2Vz
dExlbmd0aEJ1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
UEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGYzYWU4OWIwMGUzZDM0YmQ5NDU4YzU4
ZmZiNDRhOGVhMjc5NmIzZGQuLjFmMGUxMDM1YWQ0YWQyZTFlM2YwYjE3MjVhMmFjZWNlZTNjODBj
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC02OSw4ICs2OSw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vYXVkaW8vZWZsL0F1ZGlvQnVzRWZs
LmNwcAogCi0gICAgcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3Bw
Ci0KICAgICBwbGF0Zm9ybS9lZmwvQ3Vyc29yRWZsLmNwcAogICAgIHBsYXRmb3JtL2VmbC9EcmFn
RGF0YUVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvRHJhZ0ltYWdlRWZsLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUdUSy5jbWFrZQppbmRleCA2MjQyMTYyOWM1ZWQ1MDdhNzczNGEzZTZkZmNkMzRhNzI4ODFl
YmRmLi5iMWM2ZTZiOGNlMTMzN2UzOGMyODQ2MzE1NGI1ZmFlMTcwY2QwNGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtNjgsOCArNjgsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKIAogICAgIHBsYXRmb3JtL2F1ZGlvL2dsaWIvQXVkaW9CdXNHTGliLmNwcAogCi0gICAg
cGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCi0KICAgICBwbGF0
Zm9ybS9nYW1lcGFkL2dsaWIvR2FtZXBhZHNHbGliLmNwcAogCiAgICAgcGxhdGZvcm0vZ2VvY2x1
ZS9HZW9sb2NhdGlvblByb3ZpZGVyR2VvY2x1ZTEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CmluZGV4IDRjNTFlMmFhOTA2NjQ1ODJhYTQyMjM2NzQ1NDUxMzk5MTI0YTExZjAuLjdkYzFlNmU4
NGNlMGU2NjVkZWY3OWIwMTVlMTQ1MDkzODI5NmQ5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNt
YWtlCkBAIC0zMzMsOCArMzMzLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAg
cGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQogICAgIHBsYXRmb3JtL2NvY29hL1dlYkNvcmVO
U0Vycm9yRXh0cmFzLm1tCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0
b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKLQogICAgIHBsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdh
bWVwYWQuY3BwCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZFByb3ZpZGVyLmNw
cAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IDhkN2Y1MDhhMTIyOTU3MTc5MDdkZWY0
MTRmMmYyNjRkZjEwYzE5YWQuLmE0YTk5MDliMTIxMzQzY2VlYmM2OWJkMDFhODM1YzE4ZjE4OTAx
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlCkBAIC03Myw4ICs3Myw2IEBAIGxpc3QoQVBQ
RU5EIFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vY2Yvd2luL0NlcnRpZmljYXRlQ0ZX
aW4uY3BwCiAKLSAgICBwbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKLQog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKIAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWE0MGRiODIzOTlm
YjBiZjcwZDUyYjRhYzYzZjkwYTg4Zjk3YmRhOS4uNDZhYjc4NjNiOTA0NmNhY2E5NThjNzM0YTA1
ZGMyZmQzZjNjZDk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtOTc3LDYgKzk3Nyw3IEBACiAJCTFDMDEwNzAxMTkyNTk0REYw
MDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDEwNkZGMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVU
ZXh0Qm94U3R5bGUuaCAqLzsgfTsKIAkJMUMwOTM5RUExQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hl
ZFNWR0ZvbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUMwOTM5RTgxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuY3BwICovOyB9Owog
CQkxQzA5MzlFQjFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOTM5RTkxQTEzRTEyOTAwQjc4
OEU1IC8qIENhY2hlZFNWR0ZvbnQuaCAqLzsgfTsKKwkJMUMwOUQwNTkxRTMxQzZBOTAwNzI1RjE4
IC8qIGxpYlBBTC5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUMwOUQwNTAxRTMxQzMyOTAwNzI1RjE4IC8qIGxpYlBBTC5hICovOyB9OwogCQkxQzE4
REE1ODE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxOERBNTYxODFBRjZBNTAwQzRFRjIyIC8q
IFRleHRQYWludGVyLmNwcCAqLzsgfTsKIAkJMUMxOERBNTkxODFBRjZBNTAwQzRFRjIyIC8qIFRl
eHRQYWludGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQzE4REE1NzE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuaCAqLzsgfTsKIAkJMUMy
MUU1N0MxODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyMUU1N0ExODNFRDFGRjAwMUMyODlE
IC8qIElPU3VyZmFjZVBvb2wuY3BwICovOyB9OwpAQCAtNjI2Miw4ICs2MjYzLDYgQEAKIAkJRTFG
ODBCODgxODMxNzI1MjAwNzg4NUMzIC8qIENyeXB0b0tleVBhaXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjgwQjg2MTgzMTcyNTIwMDc4ODVDMyAv
KiBDcnlwdG9LZXlQYWlyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTFGODBCOEQxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4MEI4
QjE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCAqLzsgfTsKIAkJRTFGODBC
OEUxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGODBCOEMxODMxNzJCNTAwNzg4NUMzIC8q
IEpTQ3J5cHRvS2V5UGFpci5oICovOyB9OwotCQlFMUZFMTM2NDE4MzQzNTExMDA4OTJGMTMgLyog
Q3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzYyMTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdl
c3RDb21tb25DcnlwdG8uY3BwICovOyB9OwotCQlFMUZFMTM2NzE4MzQzQTEwMDA4OTJGMTMgLyog
Q3J5cHRvRGlnZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUZFMTM2NjE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0LmggKi87IH07CiAJ
CUUxRkUxMzZBMTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2ODE4
M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwICovOyB9OwogCQlF
MUZFMTM2QjE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzY5MTgzRkUx
QUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oICovOyB9OwogCQlFMUZFMTM3
MDE4M0ZFQ0YwMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNkUxODNGRUNG
MDAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCAqLzsgfTsKQEAgLTY4
ODgsNiArNjg4NywyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTFDMDlEMDRGMUUzMUMzMjkw
MDcyNUYxOCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250
YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAxQzA5RDA0QjFFMzFDMzI4MDA3
MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLzsKKwkJCXByb3h5VHlwZSA9IDI7CisJCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IDFDMDlEMDNEMUUzMUMzMjgwMDcyNUYxODsKKwkJCXJlbW90ZUluZm8g
PSBQQUw7CisJCX07CisJCTFDMDlEMDY3MUUzMjA3OUQwMDcyNUYxOCAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250
YWluZXJQb3J0YWwgPSAxQzA5RDA0QjFFMzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAq
LzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDFDMDlEMDND
MUUzMUMzMjgwMDcyNUYxODsKKwkJCXJlbW90ZUluZm8gPSBQQUw7CisJCX07CiAJCTQxN0RBNkQ0
MTM3MzRFMEQwMDdDNTdGQiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZF
ODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC04MDU0LDYgKzgwNjcsNyBA
QAogCQkxQzAxMDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElubGluZVRleHRCb3hTdHlsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5MzlFODFBMTNFMTI5MDBCNzg4RTUgLyogQ2Fj
aGVkU1ZHRm9udC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNo
ZWRTVkdGb250LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMwOTM5RTkxQTEz
RTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2FjaGVkU1ZHRm9udC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
QzA5RDA0QjFFMzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJ3cmFwcGVyLnBiLXByb2plY3QiOyBu
YW1lID0gUEFMLnhjb2RlcHJvajsgcGF0aCA9IFBBTC9QQUwueGNvZGVwcm9qOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQzE4REE1NjE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFBhaW50ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzE4REE1NzE4MUFGNkE1MDBDNEVG
MjIgLyogVGV4dFBhaW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dFBhaW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMyMUU1N0ExODNFRDFG
RjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSU9TdXJmYWNlUG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNDI3Miw4ICsxNDI4Niw2IEBACiAJCUUxRjgwQjg2MTgzMTcyNTIwMDc4ODVDMyAvKiBD
cnlwdG9LZXlQYWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0tl
eVBhaXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGODBCOEIxODMxNzJCNTAw
Nzg4NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0NyeXB0b0tleVBhaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUY4MEI4QzE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3J5cHRvS2V5UGFpci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlFMUZFMTM2MjE4MzQzNTExMDA4OTJGMTMgLyogQ3J5cHRvRGln
ZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUUxRkUxMzY2MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvRGlnZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxRkUxMzY4MTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1S
U0FfT0FFUC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9B
bGdvcml0aG1SU0FfT0FFUC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRkUx
MzY5MTgzRkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2RTE4M0ZFQ0YwMDA4OTJGMTMgLyogQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQ5ODcsNiArMTQ5OTksNyBAQAogCQkJaXNhID0gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMg
PSAoCisJCQkJMUMwOUQwNTkxRTMxQzZBOTAwNzI1RjE4IC8qIGxpYlBBTC5hIGluIEZyYW1ld29y
a3MgKi8sCiAJCQkJRkQyREJGMTIxMkIwNDhBMzAwRUQ5OEM2IC8qIEFjY2VsZXJhdGUuZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJRkQyREJGMTMxMkIwNDhBMzAwRUQ5OEM2IC8qIEF1
ZGlvVG9vbGJveC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQkxQUIzM0RBNTEyNTUx
RTMyMDAyNDQ1N0EgLyogSU9LaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCkBAIC0xNTQw
Miw2ICsxNTQxNSw3IEBACiAJCTA4NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDRCMUUz
MUMzMjgwMDcyNUYxOCAvKiBQQUwueGNvZGVwcm9qICovLAogCQkJCTY1Qzk3QUYyMDhFQTkwODgw
MEFDRDI3MyAvKiBjb25maWcuaCAqLywKIAkJCQlFREVDOTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyog
V2ViQ29yZVByZWZpeC5oICovLAogCQkJCTkzMDcwNjEzMDlFMENBODIwMEIxN0ZFNCAvKiBEZXJp
dmVkU291cmNlcy5tYWtlICovLApAQCAtMTYwODMsNiArMTYwOTcsMTQgQEAKIAkJCXBhdGggPSBt
YWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkxQzA5RDA0QzFFMzFDMzI4
MDA3MjVGMTggLyogUHJvZHVjdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTFDMDlEMDUwMUUzMUMzMjkwMDcyNUYxOCAvKiBsaWJQQUwuYSAqLywKKwkJ
CSk7CisJCQluYW1lID0gUHJvZHVjdHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQkxQzVGQUVDQTBEQ0ZEOEM5MDBENThGNzggLyogSW5zcGVjdG9yICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTIyNDk3LDcgKzIyNTE5LDYgQEAKIAkJ
CQlGRDMxNjA0MDEyQjAyNkEzMDBDMUEzNTkgLyogYXVkaW8gKi8sCiAJCQkJMUFFNDJGNjcwQUE0
QjhDQjAwQzg2MTJEIC8qIGNmICovLAogCQkJCUE1Qzk3NENFMTE0ODVGREEwMDY2RjJBQiAvKiBj
b2NvYSAqLywKLQkJCQlDRTUwRDhDRTFDODkzMkVEMDA3MkVBNUEgLyogY3J5cHRvICovLAogCQkJ
CTUxNUJFMTg3MUQ1NEY1REIwMEREN0M2OCAvKiBnYW1lcGFkICovLAogCQkJCUIyQTAxNTkxMEFG
NkNENTMwMDZCQ0UwRSAvKiBncmFwaGljcyAqLywKIAkJCQlBNTlFM0MxQjExNTgwRjM0MDA3Mjky
OEUgLyogaW9zICovLApAQCAtMjI5NDEsMjMgKzIyOTYyLDYgQEAKIAkJCXBhdGggPSBpb3M7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlDRTUwRDhDRTFDODkzMkVEMDA3MkVB
NUEgLyogY3J5cHRvICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgK
LQkJCQlDRTUwRDhDRjFDODkzMkZCMDA3MkVBNUEgLyogY29tbW9uY3J5cHRvICovLAotCQkJCUUx
RkUxMzY2MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCAqLywKLQkJCSk7Ci0JCQlw
YXRoID0gY3J5cHRvOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJQ0U1MEQ4
Q0YxQzg5MzJGQjAwNzJFQTVBIC8qIGNvbW1vbmNyeXB0byAqLyA9IHsKLQkJCWlzYSA9IFBCWEdy
b3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJRTFGRTEzNjIxODM0MzUxMTAwODkyRjEzIC8qIENy
eXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8sCi0JCQkpOwotCQkJcGF0aCA9IGNvbW1vbmNy
eXB0bzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCURGOUFGRDZGMTNGQzMx
QjAwMDE1RkVCNyAvKiBvYmpjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTI1MjUwLDcgKzI1MjU0LDYgQEAKIAkJCQlFMTlBQzNGMTE4MjREQzc5MDAzNDk0
MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTlBQzNG
MzE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMTlBQzNGNTE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
LmggaW4gSGVhZGVycyAqLywKLQkJCQlFMUZFMTM2NzE4MzQzQTEwMDA4OTJGMTMgLyogQ3J5cHRv
RGlnZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTU3QThFNTE4MTczQTNBMDA5RjgyMUQgLyog
Q3J5cHRvS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI1Rjg0RTE4MjQyODlEMDBEODRDRDkg
LyogQ3J5cHRvS2V5QUVTLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI1Rjg1RTE4MkMyREY2MDBE
ODRDRDkgLyogQ3J5cHRvS2V5RGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODUwNCw2ICsyODUw
Nyw3IEBACiAJCQlidWlsZFJ1bGVzID0gKAogCQkJKTsKIAkJCWRlcGVuZGVuY2llcyA9ICgKKwkJ
CQkxQzA5RDA2ODFFMzIwNzlEMDA3MjVGMTggLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJ
CQlERDA0MUZGMTA5RDlFMzI1MDAxMEFGMkEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKIAkJ
CSk7CiAJCQluYW1lID0gV2ViQ29yZTsKQEAgLTI4NTU2LDYgKzI4NTYwLDEyIEBACiAJCQltYWlu
R3JvdXAgPSAwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICovOwogCQkJcHJvZHVj
dFJlZkdyb3VwID0gMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3RzICovOwogCQkJ
cHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RSZWZlcmVuY2VzID0gKAorCQkJCXsKKwkJ
CQkJUHJvZHVjdEdyb3VwID0gMUMwOUQwNEMxRTMxQzMyODAwNzI1RjE4IC8qIFByb2R1Y3RzICov
OworCQkJCQlQcm9qZWN0UmVmID0gMUMwOUQwNEIxRTMxQzMyODAwNzI1RjE4IC8qIFBBTC54Y29k
ZXByb2ogKi87CisJCQkJfSwKKwkJCSk7CiAJCQlwcm9qZWN0Um9vdCA9ICIiOwogCQkJdGFyZ2V0
cyA9ICgKIAkJCQk0MTgxNkY3OTEzODU5QzU1MDA1N0FBQTQgLyogQWxsICovLApAQCAtMjg1Njcs
NiArMjg1NzcsMTYgQEAKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAorLyog
QmVnaW4gUEJYUmVmZXJlbmNlUHJveHkgc2VjdGlvbiAqLworCQkxQzA5RDA1MDFFMzFDMzI5MDA3
MjVGMTggLyogbGliUEFMLmEgKi8gPSB7CisJCQlpc2EgPSBQQlhSZWZlcmVuY2VQcm94eTsKKwkJ
CWZpbGVUeXBlID0gYXJjaGl2ZS5hcjsKKwkJCXBhdGggPSBsaWJQQUwuYTsKKwkJCXJlbW90ZVJl
ZiA9IDFDMDlEMDRGMUUzMUMzMjkwMDcyNUYxOCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87
CisJCQlzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOworCQl9OworLyogRW5kIFBCWFJl
ZmVyZW5jZVByb3h5IHNlY3Rpb24gKi8KKwogLyogQmVnaW4gUEJYUmVzb3VyY2VzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCiAJCTkzRjE5OUZEMDgyNDVFNTkwMDFFOUFCQyAvKiBSZXNvdXJjZXMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOwpAQCAtMjkwOTMsNyArMjkxMTMs
NiBAQAogCQkJCUUxOUFDM0YwMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEy
NTYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE5QUMzRjIxODI0REM3OTAwMzQ5NDI2IC8qIENy
eXB0b0FsZ29yaXRobVNIQTM4NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTlBQzNGNDE4MjRE
Qzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCUUxRkUxMzY0MTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE1N0E4RTQxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0
b0tleS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTI1Rjg0RDE4MjQyODlEMDBEODRDRDkgLyog
Q3J5cHRvS2V5QUVTLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxMjVGODYzMTgyQzMwM0EwMEQ4
NENEOSAvKiBDcnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTMxOTI1LDYgKzMxOTQ0LDExIEBACiAvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KKwkJMUMwOUQw
NjgxRTMyMDc5RDAwNzI1RjE4IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2Eg
PSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJbmFtZSA9IFBBTDsKKwkJCXRhcmdldFByb3h5ID0g
MUMwOUQwNjcxRTMyMDc5RDAwNzI1RjE4IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJ
fTsKIAkJNDE3REE2RDUxMzczNEUwRDAwN0M1N0ZCIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8g
PSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0gOTNGMTk4QTUw
ODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmUgKi87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwCmluZGV4IDBjOGRm
ZGRkMWUwYTdhZGJhYTE4ZWY5YzUxMmE3MjhjOTQyYWRlMjkuLmFkZGY4NGQyYjIzZjI1N2VmOGZj
OTY2YmRlYTE5ZjcwYzllZDRmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwCkBAIC0yOCw5ICsyOCw5IEBA
CiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRv
QWxnb3JpdGhtU0hBMTo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNh
bGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ss
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQog
ewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8xKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0Ojpj
cmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwogICAgIGlmICghZGln
ZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRp
Z2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbAogCiBF
eGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CiAg
ICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJl
dHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAppbmRleCA2Y2ExYWVlNWE2YmI3ZDgzY2EwNTY0
MTlkY2JlYmQ1MTdiOWQ2MTg1Li42MzRjNWEzZDkzYjgyZmE2YjFlY2I0NTJmNTUyZDA2ODY2ODVm
NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEyMjQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTIyNC5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJM
RShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNp
bmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdv
cml0aG1TSEEyMjQ6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNI
QTIyNDo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1
dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8yMjQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKICAgICBpZiAoIWRpZ2VzdCkg
ewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJl
dHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2Vz
dChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0
aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBk
YXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0
b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwog
ICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICBy
ZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKaW5kZXggNzM2NjBmNTk5YWYzN2NhOWRlOWEy
MTllM2Y0ZjIzNDhmNDZhYzJiMy4uMGVhMDUwNmI5NGEzYWIyZTM5ZGIzZjI1MTAzNGZhNzRlYzYz
YWNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMjU2LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFC
TEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisj
aW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxn
b3JpdGhtU0hBMjU2OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1T
SEEyNTY6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYm
IGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBh
dXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjU2KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUo
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgaWYgKCFkaWdlc3Qp
IHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICBy
ZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdl
c3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2Vw
dGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYg
ZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlw
dG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsK
ICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVNIQTM4NC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCmluZGV4IGM5Nzc1MmQ4MWMwMDU0MjM5YjBi
ODhjNjBhYTM0M2VmYTY1ZTE0NzcuLjg4ZjMxMzYyOTZiMDRjNTM4Mzg2MDM5ZTI5NGU5YzQzOTNl
NGFmNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTM4NC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5B
QkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgor
I2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0Fs
Z29yaXRobVNIQTM4NDo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGht
U0hBMzg0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2sm
JiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAg
YXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NCk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRl
KFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOwogICAgIGlmICghZGlnZXN0
KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGln
ZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNl
cHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChjb25zdCBDcnlwdG9B
bGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
IGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5
cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7
CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAg
IHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAppbmRleCAzM2U0ODNkYTE1ZDEwY2NkYjcz
ZWUzOGY5M2ExM2Q2ZDcxODcwMmVmLi4wMTAzZjA5NTM3MmJmMzU5NDZjN2NkMDNkZjU5YzE5YjFl
YjBjNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEE1MTIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVO
QUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9B
bGdvcml0aG1TSEE1MTI6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRo
bVNIQTUxMjo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNr
JiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAg
IGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV81MTIpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0
ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKICAgICBpZiAoIWRpZ2Vz
dCkgewogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAg
IHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRp
Z2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhj
ZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRh
JiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNy
eXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIp
OwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAg
ICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcAppbmRleCBmNmFi
N2EyMTU1NTNiNmNiZmI0NzMwMzU1Y2ZlNTM1MmE5ZDAyMzU1Li4wZjBiZjkzMTNmYWI1Y2E1NGVk
NjQ2OWJmMzg2ZDgyOWRlOTFlYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNw
cApAQCAtMzAsMjYgKzMwLDI2IEBACiAKICNpbmNsdWRlICJDb21tb25DcnlwdG9VdGlsaXRpZXMu
aCIKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXNEZXByZWNhdGVkLmgiCi0j
aW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UlNBLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWlubGluZSBzdGQ6Om9wdGlvbmFsPENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBj
cnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rp
b24pCitpbmxpbmUgc3RkOjpvcHRpb25hbDxQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBj
cnlwdG9EaWdlc3RBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoRnVuY3Rp
b24pCiB7CiAgICAgc3dpdGNoIChoYXNoRnVuY3Rpb24pIHsKICAgICBjYXNlIENyeXB0b0FsZ29y
aXRobUlkZW50aWZpZXI6OlNIQV8xOgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8xOworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzE7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMjI0Ogot
ICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ7CisgICAgICAg
IHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OwogICAgIGNhc2Ug
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzI1NjoKLSAgICAgICAgcmV0dXJuIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXI6OlNIQV8zODQ6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzM4NDsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8zODQ7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfNTEyOgotICAg
ICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgICAgIHJl
dHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQpAQCAtNjYsNyArNjYsNyBAQCBz
dGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBzaWduUlNBU1NBX1BLQ1MxX3YxXzUo
Q3J5cHRvQWxnb3JpdGhtSWRlbnRpZgogICAgIGF1dG8gY3J5cHRvRGlnZXN0QWxnb3JpdGhtID0g
V2ViQ29yZTo6Y3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhhc2gpOwogICAgIGlmICghY3J5cHRvRGln
ZXN0QWxnb3JpdGhtKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3Ig
fTsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RB
bGdvcml0aG0pOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgq
Y3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKICAgICBpZiAoIWRpZ2VzdCkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAgICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRh
LCBkYXRhTGVuZ3RoKTsKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+
IHZlcmlmeVJTQVNTQV9QS0NTMV92MV81KENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwK
ICAgICBhdXRvIGNyeXB0b0RpZ2VzdEFsZ29yaXRobSA9IFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFs
Z29yaXRobShoYXNoKTsKICAgICBpZiAoIWNyeXB0b0RpZ2VzdEFsZ29yaXRobSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0gICAgYXV0byBkaWdlc3QgPSBD
cnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKKyAgICBhdXRvIGRp
Z2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7
CiAgICAgaWYgKCFkaWdlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25F
cnJvciB9OwogICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YSwgZGF0YUxlbmd0aCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCBhMTU3YTg0
ZjBlNjVmODVmOWMwNDhlNTFjMWQxOTBlMmI4N2RiZjBhLi5kZjc3Y2I0YzliNWM5MWQ0NGU3MzM3
OTkyZDdkOGJhN2Q3NjUzMGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJDb250YWluZXJO
b2RlLmgiCiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCi0jaW5j
bHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRE9NRWRpdG9yLmgiCiAjaW5jbHVkZSAi
RE9NUGF0Y2hTdXBwb3J0LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCkBAIC05Niw2ICs5NSw3
IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2
NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTEzMTYsNyArMTMxNiw3IEBA
IHN0YXRpYyBTdHJpbmcgY29tcHV0ZUNvbnRlbnRTZWN1cml0eVBvbGljeVNIQTI1Nkhhc2goY29u
c3QgRWxlbWVudCYgZWxlbWVudCkKICAgICBUZXh0RW5jb2RpbmcgZG9jdW1lbnRFbmNvZGluZyA9
IGVsZW1lbnQuZG9jdW1lbnQoKS50ZXh0RW5jb2RpbmcoKTsKICAgICBjb25zdCBUZXh0RW5jb2Rp
bmcmIGVuY29kaW5nVG9Vc2UgPSBkb2N1bWVudEVuY29kaW5nLmlzVmFsaWQoKSA/IGRvY3VtZW50
RW5jb2RpbmcgOiBVVEY4RW5jb2RpbmcoKTsKICAgICBDU3RyaW5nIGNvbnRlbnQgPSBlbmNvZGlu
Z1RvVXNlLmVuY29kZShUZXh0Tm9kZVRyYXZlcnNhbDo6Y29udGVudHNBc1N0cmluZyhlbGVtZW50
KSwgRW50aXRpZXNGb3JVbmVuY29kYWJsZXMpOwotICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gQ3J5
cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAg
IGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICBjcnlwdG9EaWdlc3QtPmFkZEJ5dGVz
KGNvbnRlbnQuZGF0YSgpLCBjb250ZW50Lmxlbmd0aCgpKTsKICAgICBWZWN0b3I8dWludDhfdD4g
ZGlnZXN0ID0gY3J5cHRvRGlnZXN0LT5jb21wdXRlSGFzaCgpOwogICAgIHJldHVybiBtYWtlU3Ry
aW5nKCJzaGEyNTYtIiwgYmFzZTY0RW5jb2RlKGRpZ2VzdC5kYXRhKCksIGRpZ2VzdC5zaXplKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBv
bGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwCmluZGV4IDUzNjcxZTUwYTc0YjcwM2ZkNTFjYjM5ZDk1ZDU1MGI2MzAyNmIyNjkuLjk2ZmE3
YTIzMWIxODEzMWQyMzZjYzE4YWY5YmFmOWYyZjhlYTM0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMzMsNyArMzMsNiBA
QAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeUhhc2guaCIKICNpbmNsdWRlICJDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuaCIKICNpbmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xp
Y3lTb3VyY2VMaXN0LmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRE9N
U3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRM
b2FkZXIuaCIKQEAgLTU3LDYgKzU2LDcgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1
ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CisjaW5jbHVkZSA8cGFsL2Ny
eXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBv
c2l0aW9uLmg+CkBAIC0zMDEsMTggKzMwMSwxOCBAQCBib29sIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6YWxsUG9saWNpZXNBbGxvdyhWaW9sYXRlZERpcmVjdGl2ZUNhbGxiYWNrJiYgY2FsbGJhYwog
ICAgIHJldHVybiBpc0FsbG93ZWQ7CiB9CiAKLXN0YXRpYyBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bSB0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3Jp
dGhtIGFsZ29yaXRobSkKK3N0YXRpYyBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIHRvQ3J5
cHRvRGlnZXN0QWxnb3JpdGhtKENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0gYWxn
b3JpdGhtKQogewogICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CiAgICAgY2FzZSBDb250ZW50U2Vj
dXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICByZXR1cm4gQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OwogICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5
SGFzaEFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMzg0OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzM4NDsKICAgICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0
aG06OlNIQV81MTI6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzUxMjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81
MTI7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzUxMjsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlPgpA
QCAtMzMzLDcgKzMzMyw3IEBAIENvbnRlbnRTZWN1cml0eVBvbGljeTo6SGFzaEluRW5mb3JjZWRB
bmRSZXBvcnRPbmx5UG9saWNpZXNQYWlyIENvbnRlbnRTZWN1cml0eVBvCiAgICAgYm9vbCBmb3Vu
ZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgPSBmYWxzZTsKICAgICBib29sIGZvdW5kSGFzaEluUmVw
b3J0T25seVBvbGljaWVzID0gZmFsc2U7CiAgICAgZm9yIChhdXRvIGFsZ29yaXRobSA6IGFsZ29y
aXRobXMpIHsKLSAgICAgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0
ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKKyAgICAgICAgYXV0byBjcnlw
dG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRvRGlnZXN0QWxnb3Jp
dGhtKGFsZ29yaXRobSkpOwogICAgICAgICBjcnlwdG9EaWdlc3QtPmFkZEJ5dGVzKGNvbnRlbnRD
U3RyaW5nLmRhdGEoKSwgY29udGVudENTdHJpbmcubGVuZ3RoKCkpOwogICAgICAgICBDb250ZW50
U2VjdXJpdHlQb2xpY3lIYXNoIGhhc2ggPSB7IGFsZ29yaXRobSwgY3J5cHRvRGlnZXN0LT5jb21w
dXRlSGFzaCgpIH07CiAgICAgICAgIGlmICghZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzICYm
IGFsbFBvbGljaWVzV2l0aERpc3Bvc2l0aW9uQWxsb3coQ29udGVudFNlY3VyaXR5UG9saWN5OjpE
aXNwb3NpdGlvbjo6RW5mb3JjZSwgc3RkOjpmb3J3YXJkPFByZWRpY2F0ZT4ocHJlZGljYXRlKSwg
aGFzaCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRv
RGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxZjA3NWFhMzdjYjM0NjIwOTg0N2E1OTll
MWY1NDI4NGY5ZjM4MTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ3J5
cHRvRGlnZXN0X2gKLSNkZWZpbmUgQ3J5cHRvRGlnZXN0X2gKLQotI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dDsKLQotY2xhc3MgQ3J5cHRvRGlnZXN0IHsK
LSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcnlwdG9EaWdlc3QpOwotcHVibGljOgotICAgIGVu
dW0gY2xhc3MgQWxnb3JpdGhtIHsKLSAgICAgICAgU0hBXzEsCi0gICAgICAgIFNIQV8yMjQsCi0g
ICAgICAgIFNIQV8yNTYsCi0gICAgICAgIFNIQV8zODQsCi0gICAgICAgIFNIQV81MTIsCi0gICAg
fTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gY3JlYXRlKEFsZ29y
aXRobSk7Ci0gICAgfkNyeXB0b0RpZ2VzdCgpOwotCi0gICAgdm9pZCBhZGRCeXRlcyhjb25zdCB2
b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVI
YXNoKCk7Ci0KLXByaXZhdGU6Ci0gICAgQ3J5cHRvRGlnZXN0KCk7Ci0KLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gbV9jb250ZXh0OwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ3J5cHRvRGlnZXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9u
Q3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8v
Q3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZTNmZmM1NjA1MjI2YjY0YjQ5MzczYmVhNjg1ZTkyM2YwMTk5YmI0ZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPENvbW1vbkNyeXB0by9D
b21tb25DcnlwdG8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGln
ZXN0Q29udGV4dCB7Ci0gICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOwotICAg
IHZvaWQqIGNjQ29udGV4dDsKLX07Ci0KLWlubGluZSBDQ19TSEExX0NUWCogdG9TSEExQ29udGV4
dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5h
bGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Q0NfU0hBMV9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5saW5l
IENDX1NIQTI1Nl9DVFgqIHRvU0hBMjI0Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250
ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yMjQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RY
Kj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTI1
NkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29u
dGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7
Ci19Ci1pbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEEzODRDb250ZXh0KENyeXB0b0RpZ2VzdENv
bnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEND
X1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTUxMl9D
VFgqIHRvU0hBNTEyQ29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAg
IEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV81MTIpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+
Y2NDb250ZXh0KTsKLX0KLQotQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDogbV9j
b250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6On5D
cnlwdG9EaWdlc3QoKQotewotICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKLSAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKLSAgICAgICAgZGVsZXRlIHRv
U0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTIy
NENvbnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTI1NkNv
bnRleHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTM4NENvbnRl
eHQobV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTUxMkNvbnRleHQo
bV9jb250ZXh0LmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotCi1zdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobSBhbGdvcml0aG0pCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2Vz
dD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdv
cml0aG0gPSBhbGdvcml0aG07Ci0KLSAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7Ci0gICAgICAgIENDX1NIQTFfQ1RYKiBj
b250ZXh0ID0gbmV3IENDX1NIQTFfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2ND
b250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBMV9Jbml0KGNvbnRleHQpOwotICAgICAg
ICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjI0OiB7Ci0gICAgICAgIENDX1NIQTI1Nl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hB
MjU2X0NUWDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7
Ci0gICAgICAgIENDX1NIQTIyNF9Jbml0KGNvbnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0
OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7Ci0g
ICAgICAgIENDX1NIQTI1Nl9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBMjU2X0NUWDsKLSAgICAg
ICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NI
QTI1Nl9Jbml0KGNvbnRleHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7Ci0gICAgICAgIENDX1NIQTUx
Ml9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hBNTEyX0NUWDsKLSAgICAgICAgZGlnZXN0LT5tX2Nv
bnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTM4NF9Jbml0KGNvbnRl
eHQpOwotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAgIENDX1NIQTUxMl9DVFgqIGNvbnRleHQg
PSBuZXcgQ0NfU0hBNTEyX0NUWDsKLSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4
dCA9IGNvbnRleHQ7Ci0gICAgICAgIENDX1NIQTUxMl9Jbml0KGNvbnRleHQpOwotICAgICAgICBy
ZXR1cm4gZGlnZXN0OwotICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRC
eXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBzd2l0Y2ggKG1f
Y29udGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzE6Ci0gICAgICAgIENDX1NIQTFfVXBkYXRlKHRvU0hBMUNvbnRleHQobV9jb250ZXh0Lmdl
dCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgotICAgICAgICBDQ19TSEEyMjRfVXBkYXRlKHRvU0hB
MjI0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAg
IENDX1NIQTI1Nl9VcGRhdGUodG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0
LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzM4NDoKLSAgICAgICAgQ0NfU0hBMzg0X1VwZGF0ZSh0b1NIQTM4NENvbnRleHQo
bV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICBDQ19TSEE1MTJf
VXBkYXRlKHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2Vz
dDo6Y29tcHV0ZUhhc2goKQotewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgc3dp
dGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8xOgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTFfRElHRVNUX0xFTkdU
SCk7Ci0gICAgICAgIENDX1NIQTFfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEExQ29udGV4dCht
X2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEyMjRfRElH
RVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTIyNF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NI
QTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUo
Q0NfU0hBMjU2X0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEEyNTZfRmluYWwocmVzdWx0
LmRhdGEoKSwgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAgICBy
ZXN1bHQucmVzaXplKENDX1NIQTM4NF9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hBMzg0
X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
MjoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEE1MTJfRElHRVNUX0xFTkdUSCk7Ci0gICAg
ICAgIENDX1NIQTUxMl9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTUxMkNvbnRleHQobV9jb250
ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhM2M4YmYyNDNkYzA3MmFiYmE4NDYxODk3MzNhMGY1
M2ZkNmMwNGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCBJZ2FsaWEgUy5MLgotICogQ29weXJpZ2h0IChDKSAyMDE2IFNvZnRBdEhvbWUKLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0j
aW5jbHVkZSA8Z2NyeXB0Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0
b0RpZ2VzdENvbnRleHQgewotICAgIGludCBhbGdvcml0aG07Ci0gICAgZ2NyeV9tZF9oZF90IG1k
OwotfTsKLQotQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5l
dyBDcnlwdG9EaWdlc3RDb250ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdl
c3QoKQotewotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCi17Ci0gICAgaW50IGdj
cnlwdEFsZ29yaXRobTsKLQotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdD
UllfTURfU0hBMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzIyNDoKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEyMjQ7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTY6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjU2OwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgotICAgICAg
ICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTM4NDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjoKLSAgICAgICAgZ2NyeXB0QWxn
b3JpdGhtID0gR0NSWV9NRF9TSEE1MTI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAg
ICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gZ2NyeXB0QWxnb3JpdGhtOwotCi0gICAg
Z2NyeV9tZF9vcGVuKCZkaWdlc3QtPm1fY29udGV4dC0+bWQsIGdjcnlwdEFsZ29yaXRobSwgMCk7
Ci0gICAgaWYgKCFkaWdlc3QtPm1fY29udGV4dC0+bWQpCi0gICAgICAgIHJldHVybiBudWxscHRy
OwotCi0gICAgcmV0dXJuIGRpZ2VzdDsKLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVz
KGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGdjcnlfbWRfd3JpdGUo
bV9jb250ZXh0LT5tZCwgaW5wdXQsIGxlbmd0aCk7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlw
dG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBpbnQgZGlnZXN0TGVuID0gZ2NyeV9tZF9n
ZXRfYWxnb19kbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKLSAgICBWZWN0b3I8dWludDhfdD4g
cmVzdWx0KGRpZ2VzdExlbik7Ci0KLSAgICBnY3J5X21kX2ZpbmFsKG1fY29udGV4dC0+bWQpOwot
ICAgIG1lbWNweShyZXN1bHQuZGF0YSgpLCBnY3J5X21kX3JlYWQobV9jb250ZXh0LT5tZCwgMCks
IGRpZ2VzdExlbik7Ci0gICAgZ2NyeV9tZF9jbG9zZShtX2NvbnRleHQtPm1kKTsKLQotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251
VExTLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODlhNWQ4MWYyYjRiZTI3MzJj
ZWUzZTUyNjMzODZlZDU5Y2IyMTRkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0
b0RpZ2VzdEdudVRMUy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0K
LSNpbmNsdWRlIDxnbnV0bHMvZ251dGxzLmg+Ci0jaW5jbHVkZSA8Z251dGxzL2NyeXB0by5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKLSAg
ICBnbnV0bHNfZGlnZXN0X2FsZ29yaXRobV90IGFsZ29yaXRobTsKLSAgICBnbnV0bHNfaGFzaF9o
ZF90IGhhc2g7Ci19OwotCi1DcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2Nv
bnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNy
eXB0b0RpZ2VzdCgpCi17Ci0gICAgZ251dGxzX2hhc2hfZGVpbml0KG1fY29udGV4dC0+aGFzaCwg
MCk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3Jl
YXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBnbnV0bHNfZGln
ZXN0X2FsZ29yaXRobV90IGdudXRsc0FsZ29yaXRobTsKLQotICAgIHN3aXRjaCAoYWxnb3JpdGht
KSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKLSAgICAgICAg
Z251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEExOwotICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDogewotICAgICAgICBn
bnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTIyNDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKLSAgICAgICAg
Z251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEyNTY7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7Ci0gICAgICAg
IGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMzg0OwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogewotICAgICAg
ICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTUxMjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIH0KLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChu
ZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gZ251
dGxzQWxnb3JpdGhtOwotCi0gICAgaW50IHJldCA9IGdudXRsc19oYXNoX2luaXQoJmRpZ2VzdC0+
bV9jb250ZXh0LT5oYXNoLCBnbnV0bHNBbGdvcml0aG0pOwotICAgIGlmIChyZXQgIT0gR05VVExT
X0VfU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gZGlnZXN0
OwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNp
emVfdCBsZW5ndGgpCi17Ci0gICAgZ251dGxzX2hhc2gobV9jb250ZXh0LT5oYXNoLCBpbnB1dCwg
bGVuZ3RoKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2go
KQotewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgaW50IGRpZ2VzdExlbiA9IGdu
dXRsc19oYXNoX2dldF9sZW4obV9jb250ZXh0LT5hbGdvcml0aG0pOwotICAgIHJlc3VsdC5yZXNp
emUoZGlnZXN0TGVuKTsKLQotICAgIGdudXRsc19oYXNoX291dHB1dChtX2NvbnRleHQtPmhhc2gs
IHJlc3VsdC5kYXRhKCkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dp
bi9DcnlwdG9EaWdlc3RXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dp
bi9DcnlwdG9EaWdlc3RXaW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmNj
MTkyYzJiMzAzOTU5NDMwZjI0OWM3MzYzNGIxMzljN2E4YTQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0
by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2Vz
dC5oIgotCi0jaW5jbHVkZSA8d2luY3J5cHQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0g
YWxnb3JpdGhtOwotICAgIEhDUllQVFBST1YgaENvbnRleHQgeyAwIH07Ci0gICAgSENSWVBUSEFT
SCBoSGFzaCB7IDAgfTsKLX07Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6
IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0
Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLSAgICBpZiAoSENSWVBUSEFTSCBoSGFzaCA9IG1fY29udGV4
dC0+aEhhc2gpCi0gICAgICAgIENyeXB0RGVzdHJveUhhc2goaEhhc2gpOwotICAgIGlmIChIQ1JZ
UFRQUk9WIGhDb250ZXh0ID0gbV9jb250ZXh0LT5oQ29udGV4dCkKLSAgICAgICAgQ3J5cHRSZWxl
YXNlQ29udGV4dChoQ29udGV4dCwgMCk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdl
c3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKEFsZ29yaXRobSBhbGdvcml0aG0pCi17Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAg
IGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBhbGdvcml0aG07Ci0gICAgaWYgKCFDcnlw
dEFjcXVpcmVDb250ZXh0KCZkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIG51bGxwdHIsIG51
bGxwdHIgLyogdXNlIGRlZmF1bHQgcHJvdmlkZXIgKi8sIFBST1ZfUlNBX0FFUywgQ1JZUFRfVkVS
SUZZQ09OVEVYVCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGJvb2wgc3VjY2VlZGVk
ID0gZmFsc2U7Ci0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMTogewotICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhh
c2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQTEsIDAsIDAsICZkaWdlc3Qt
Pm1fY29udGV4dC0+aEhhc2gpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogewotICAgICAgICBzdWNjZWVkZWQgPSBDcnlw
dENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV8yNTYsIDAs
IDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0g
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogewotICAgICAgICBzdWNj
ZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxH
X1NIQV8zODQsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogewot
ICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhD
b250ZXh0LCBDQUxHX1NIQV81MTIsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgfQotICAgIGlmIChzdWNjZWVkZWQpCi0gICAgICAg
IHJldHVybiBkaWdlc3Q7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLXZvaWQgQ3J5cHRvRGln
ZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBp
ZiAoIWlucHV0IHx8ICFsZW5ndGgpCi0gICAgICAgIHJldHVybjsKLSAgICBSRUxFQVNFX0FTU0VS
VChDcnlwdEhhc2hEYXRhKG1fY29udGV4dC0+aEhhc2gsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
QllURSo+KGlucHV0KSwgbGVuZ3RoLCAwKSk7Ci19Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlwdG9E
aWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAg
IERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlcjsKLSAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXJT
aXplID0gc2l6ZW9mKGRpZ2VzdExlbmd0aEJ1ZmZlcik7Ci0KLSAgICBSRUxFQVNFX0FTU0VSVChD
cnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIU0laRSwgcmVpbnRlcnBy
ZXRfY2FzdDxCWVRFKj4oJmRpZ2VzdExlbmd0aEJ1ZmZlciksICZkaWdlc3RMZW5ndGhCdWZmZXJT
aXplLCAwKSk7Ci0gICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RMZW5ndGhCdWZmZXIpOwotCi0gICAg
UkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0LT5oSGFzaCwgSFBfSEFT
SFZBTCwgcmVzdWx0LmRhdGEoKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlciwgMCkpOwotICAgIFJFTEVB
U0VfQVNTRVJUKHJlc3VsdC5zaXplKCkgPT0gZGlnZXN0TGVuZ3RoQnVmZmVyKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
Y3BwCmluZGV4IDg1MmI5YjhiZWViZmExMWJjZjMxNDVmYTZiYjYxYzI1MDkzMGJmMzguLjI2ZGI3
ZjI3ZDBhNjFlOWM5MDk1MDgyYjlhMWNmYmU2ZjhkMjdmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24u
Y3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiU291cE5ldHdvcmtTZXNzaW9uLmgiCiAK
ICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotI2luY2x1ZGUgIkNyeXB0b0Rp
Z2VzdC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJHVW5pcXVlUHRyU291
cC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTM4LDYgKzM3LDcgQEAKICNpbmNsdWRlICJT
b3VwTmV0d29ya1Byb3h5U2V0dGluZ3MuaCIKICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2lu
Y2x1ZGUgPGxpYnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KQEAgLTc4LDcgKzc4LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZURhdGEpCiAgICAgICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKLSAgICAgICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgICAgIGF1dG8gZGlnZXN0ID0g
UEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjU2KTsKICAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhjZXJ0aWZpY2F0ZURhdGEtPmRhdGEs
IGNlcnRpZmljYXRlRGF0YS0+bGVuKTsKIAogICAgICAgICBhdXRvIGhhc2ggPSBkaWdlc3QtPmNv
bXB1dGVIYXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UgYi9T
b3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UKaW5kZXggMjlhMDk2OTAzOGZhYTc0NGUxYThjNThm
MzU2YWQwNzNmMDA1MjViZC4uNTEzMGZmY2JjYzdjOWNlNzUxNGFmNGQ1NTNiZDhhNGYwNTAxNDU2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlCisrKyBiL1NvdXJjZS9j
bWFrZS9XZWJLaXRGUy5jbWFrZQpAQCAtMTAsNiArMTAsOSBAQCBlbmRpZiAoKQogaWYgKE5PVCBX
RUJDT1JFX0RJUikKICAgICBzZXQoV0VCQ09SRV9ESVIgIiR7Q01BS0VfU09VUkNFX0RJUn0vU291
cmNlL1dlYkNvcmUiKQogZW5kaWYgKCkKK2lmIChOT1QgUEFMX0RJUikKKyAgICBzZXQoUEFMX0RJ
UiAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViQ29yZS9QQUwiKQorZW5kaWYgKCkKIGlm
IChOT1QgV0VCS0lUX0RJUikKICAgICBzZXQoV0VCS0lUX0RJUiAiJHtDTUFLRV9TT1VSQ0VfRElS
fS9Tb3VyY2UvV2ViS2l0IikKIGVuZGlmICgpCmRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBi
L0NNYWtlTGlzdHMudHh0CmluZGV4IGJmM2M0ZWZhYjBlYWYyY2FjMjZhZTc2NmM3NjdjMWE2Njk5
YjdiNDQuLmJiMzMxOGMyYjY1MWZmZjZiM2E5ZDE3ZmJkM2Q2MmYxMjU3MTJhMjYgMTAwNjQ0Ci0t
LSBhL0NNYWtlTGlzdHMudHh0CisrKyBiL0NNYWtlTGlzdHMudHh0CkBAIC0xMTQsNiArMTE0LDcg
QEAgZWxzZSAoKQogZW5kaWYgKCkKIAogc2V0KEphdmFTY3JpcHRDb3JlX0xJQlJBUllfVFlQRSBT
SEFSRUQpCitzZXQoUEFMX0xJQlJBUllfVFlQRSBTVEFUSUMpCiBzZXQoV2ViS2l0X0xJQlJBUllf
VFlQRSBTSEFSRUQpCiBzZXQoV2ViS2l0Ml9MSUJSQVJZX1RZUEUgU0hBUkVEKQogc2V0KFdlYkNv
cmVUZXN0U3VwcG9ydF9MSUJSQVJZX1RZUEUgU1RBVElDKQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9n
IGIvQ2hhbmdlTG9nCmluZGV4IDY0OTQ1YTQ3NjJjMWYzZTllY2ZkNGI5MjBkOTBjYTIxZmEzMWI0
ZTYuLjRlOWM0MmEwYTM0MmYxMWM5ZjMwZjg2Mjk5Y2FkOTMwYjcyOTRiNTEgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wMS0xOSAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIEludHJv
ZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0cmFjdGlvbiBMYXllciAoUEFMKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2UvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU291cmNlL2NtYWtlL1dl
YktpdEZTLmNtYWtlOgorCiAyMDE3LTAxLTE3ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgRU5BQkxFKFVTRVJfVElNSU5HKSBOb3QgRGVmaW5lZCBmb3Ig
QXBwbGUgV2luZG93cyBvciBPUyBYIFBvcnRzCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299352</attachid>
            <date>2017-01-20 10:20:55 -0800</date>
            <delta_ts>2017-01-20 18:49:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20170120101904.patch</filename>
            <type>text/plain</type>
            <size>97765</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwOTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Y2ZWI1ZTU3ODk3M2Uy
MGQ0NTcxNzA5N2M5ZmY1MDlmZTA2NmVlMS4uMDk0MTg3M2ZkZTgzYTI3YTAzNTVjYjY4M2Q0YjJj
MGYyN2E3NWNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDE3LTAxLTIwICBEb24g
T2xtc3RlYWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4gYW5kIE15bGVzIEMuIE1heGZpZWxk
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9y
bSBBYnN0cmFjdGlvbiBMYXllciAoUEFMKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gZW5mb3JjZSBsYXllcmluZyBhbmQgcHJvbW90
ZSB0ZXN0YWJpbGl0eSwgV2ViQ29yZS9wbGF0Zm9ybSBmaWxlcworICAgICAgICBzaG91bGQgYmUg
Y29tcGlsZWQgaW4gdGhlaXIgb3duIHByb2plY3QuIFRoaXMgbmV3IHByb2plY3QgY2FuIGVuZm9y
Y2UgbGF5ZXJpbmcKKyAgICAgICAgYW5kIGNhbiBiZSB0ZXN0ZWQgd2l0aCB1bml0IHRlc3RzIGlu
IGFkZGl0aW9uIHRvIGxheW91dCB0ZXN0cy4KKworICAgICAgICBUaGUgbmFtZSBvZiB0aGlzIG5l
dyBwcm9qZWN0IGlzIHRoZSBQbGF0Zm9ybSBBYnN0cmFjdGlvbiBMYXllciwgb3IgIlBBTC4iCisg
ICAgICAgIFRoaXMgY29tcHJpc2VzIG9mIGEgbmV3IGRpcmVjdG9yeSBpbiBXZWJDb3JlIHdoaWNo
IHdpbGwgYmUgdGhlIGRlc3RpbmF0aW9uCisgICAgICAgIGZvciBmaWxlcyBtaWdyYXRlZCBmcm9t
IFdlYkNvcmUvcGxhdGZvcm0uIFRoaXMgbmV3IGZvbGRlciwgYW5kIGl0cyBhc3NvY2lhdGVkCisg
ICAgICAgIHByb2plY3QsIHdpbGwgbWFpbnRhaW4gbGF5ZXJpbmcgaW52YXJpYW50cy4gVGhlc2Ug
aW52YXJpYW50cyBhcmUgZW5mb3JjZWQgYXQKKyAgICAgICAgYnVpbGQtdGltZSBieSBzZXR0aW5n
IHRoZSAjaW5jbHVkZSBwYXRoIGZvciBQQUwgdG8gbm90IGluY2x1ZGUgdGhlIHJlc3Qgb2YKKyAg
ICAgICAgV2ViQ29yZSAod2hpY2ggaXMgdGhlIHNhbWUgbGF5ZXJpbmcgZW5mb3JjZW1lbnQgbWVj
aGFuaXNtIGZvciBXVEYpLiBGaWxlcyB3aWxsCisgICAgICAgIGJlIG1pZ3JhdGVkIGludG8gdGhp
cyBuZXcgdGFyZ2V0L2RpcmVjdG9yeSBwaWVjZS1ieS1waWVjZSwgYW5kIHRoZSBtaWdyYXRpb24K
KyAgICAgICAgb2YgYSBmaWxlIHdpbGwgYmUgcGVyZm9ybWVkIGFzIHNvb24gYXMgaXQgY2FuIGJl
IG1pZ3JhdGVkIHdpdGhvdXQgdmlvbGF0aW5nCisgICAgICAgIGxheWVyaW5nLgorCisgICAgICAg
IFdpdGhpbiBXZWJDb3JlLCBmaWxlcyBzaG91bGQgaW5jbHVkZSBQQUwgZmlsZXMgdXNpbmcgdGhl
IGNvbnZlbnRpb24KKyAgICAgICAgI2luY2x1ZGUgPHBhbC9mb28uaD4uIFN5bWJvbHMgd2l0aGlu
IFBBTCBhcmUgcGxhY2VkIHdpdGhpbiBhIG5ldyB0b3AtbGV2ZWwKKyAgICAgICAgbmFtZXNwYWNl
LCAiUEFMLCIgYW5kIHRoZXJlZm9yZSB3aGVuIHVzZWQgc2hvdWxkIGJlIHJlZmVycmVkIHRvIGFz
IFBBTDo6Rm9vLgorCisgICAgICAgIFRoZSBmaXJzdCBzZXQgb2YgZmlsZXMgdG8gbW92ZSBpbnRv
IHRoZSBuZXcgcGxhdGZvcm0gaXMgdGhlIGNyeXB0by8gc3ViZGlyZWN0b3J5CisgICAgICAgIGJl
Y2F1c2UgaXQgaXMgYm90aCBzaW1wbGUgYnV0IGFsc28gaW5jbHVkZXMgcGxhdGZvcm0tZGVwZW5k
ZW50IGZpbGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJl
aGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6IEFkZCBQQUwgdG8gdGhlIGluY2x1ZGUgcGF0
aAorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOiBBZGRlZC4geGNj
b25maWcgZmlsZXMgZm9yIFBBTCB3aGljaCBqdXN0CisgICAgICAgICNpbmNsdWRlIHRoZWlyIFdl
YkNvcmUgY291bnRlcnBhcnRzLgorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1Jl
bGVhc2UueGNjb25maWc6IEFkZGVkLiBEaXR0by4KKyAgICAgICAgKiBQQUwvQ29uZmlndXJhdGlv
bnMvUEFMLnhjY29uZmlnOiBBZGRlZC4gRGl0dG8uIFNldHMgdXAgc29tZSBQQUwtc3BlY2lmaWMK
KyAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAqIFBBTC9QQUwueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkZWQuIE5ldyBwcm9qZWN0IGZpbGUuCisgICAgICAgICogUEFML2NvbmZpZy5o
OiBBZGRlZC4gU2ltcGxpZmllZCBmcm9tIFdlYkNvcmUvY29uZmlnLmguCisgICAgICAgICogUEFM
L3BhbC9DTWFrZUxpc3RzLnR4dDogQWRkZWQuCisgICAgICAgICogUEFML3BhbC9QbGF0Zm9ybUVm
bC5jbWFrZTogQWRkZWQuCisgICAgICAgICogUEFML3BhbC9QbGF0Zm9ybUdUSy5jbWFrZTogQWRk
ZWQuCisgICAgICAgICogUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQuCisgICAgICAg
ICogUEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZTogQWRkZWQuCisgICAgICAgICogUEFML3BhbC9j
cnlwdG8vQ3J5cHRvRGlnZXN0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmguCisgICAgICAgICogUEFML3BhbC9jcnlwdG8vY29tbW9u
Y3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNy
eXB0by5jcHAuCisgICAgICAgICogUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdD
cnlwdC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAuCisgICAgICAgICogUEFML3BhbC9jcnlwdG8vZ251
dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAuCisgICAgICAgICog
UEFML3BhbC9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAuCisgICAg
ICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6Cisg
ICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBDcmVhdGUgYSBw
cm9qZWN0IGxpbmsgc28gV2ViQ29yZQorICAgICAgICBrbm93cyB0aGF0IGl0IG5lZWRzIHRvIGJ1
aWxkIFBBTCBhcyBhIGRlcGVuZGVuY3kuCisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtU0hBMS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1T
SEExOjpkaWdlc3QpOiBVcGRhdGUgI2luY2x1ZGUgYW5kIG5hbWVzcGFjZS4KKyAgICAgICAgKiBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QpOiBEaXR0by4KKyAgICAgICAgKiBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QpOiBEaXR0by4KKyAgICAgICAgKiBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QpOiBEaXR0by4KKyAgICAgICAgKiBj
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QpOiBEaXR0by4KKyAgICAgICAgKiBj
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6c2lnblJTQVNTQV9QS0NTMV92MV81KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp2
ZXJpZnlSU0FTU0FfUEtDUzFfdjFfNSk6IERpdHRvLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQ29udGVudFNlY3Vy
aXR5UG9saWN5U0hBMjU2SGFzaCk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0NyeXB0b0RpZ2VzdEFsZ29y
aXRobSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5Ojpm
aW5kSGFzaE9mQ29udGVudEluUG9saWNpZXMpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhv
c3RUTFNDZXJ0aWZpY2F0ZVNldDo6Y29tcHV0ZUNlcnRpZmljYXRlSGFzaCk6IERpdHRvLgorCiAy
MDE3LTAxLTIwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAg
W01vZGVybiBNZWRpYSBDb250cm9sc10gVHVybiBtb2Rlcm4gbWVkaWEgY29udHJvbHMgb24gYnkg
ZGVmYXVsdApkaWZmIC0tZ2l0IGEvU291cmNlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0NNYWtl
TGlzdHMudHh0CmluZGV4IDFiOGEyZGNiNTA0ZmI1NTZhYmM1ZjU4M2I3NmJlMzhkOTJmMGZkZjEu
LjE1ZmRmMjI0YTg5NjZiZTExZGNmNjNlMmZhOGY1ODdhMDNlNzI2NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvQ01ha2VMaXN0cy50eHQKQEAgLTQ2LDYg
KzQ2LDcgQEAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhXVEYgJHtBRERJVElPTkFM
X0NPTVBJTEVSX0ZMQUdTfSkKIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoSmF2YVNj
cmlwdENvcmUgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKIAogaWYgKEVOQUJMRV9XRUJD
T1JFKQorICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoUEFMICR7QURESVRJT05B
TF9DT01QSUxFUl9GTEFHU30pCiAgICAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxFUl9GTEFHUyhX
ZWJDb3JlVGVzdFN1cHBvcnQgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKICAgICBXRUJL
SVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmUgJHtBRERJVElPTkFMX0NPTVBJTEVS
X0ZMQUdTfSkKICAgICBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmVEZXJp
dmVkU291cmNlcyAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBiNTA0M2M1MDc1NmE0NGY4NDZiM2M2NWNiMmZhNTU2NjQwNGMxNTM0Li42OGE1OTcz
OWNmMWQ4NTgxNjkzYThjMTQ3ZDM4NWI5YzYyN2FmY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMSw2ICsxLDcgQEAKIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjguMTIpCiBp
bmNsdWRlKFdlYktpdENvbW1vbikKIHNldF9wcm9wZXJ0eShESVJFQ1RPUlkgLiBQUk9QRVJUWSBG
T0xERVIgIldlYkNvcmUiKQorYWRkX3N1YmRpcmVjdG9yeShQQUwvcGFsKQogCiBzZXQoV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7Q01BS0VfQklOQVJZX0RJUn0iCkBAIC0yOTQ1
LDYgKzI5NDYsNyBAQCBzZXQoV2ViQ29yZV9QTFVHX0lOU19SRVNPVVJDRVMKIHNldChXZWJDb3Jl
X0xJQlJBUklFUwogICAgICR7SUNVX0xJQlJBUklFU30KICAgICBKYXZhU2NyaXB0Q29yZSR7REVC
VUdfU1VGRklYfQorICAgIFBBTCR7REVCVUdfU1VGRklYfQogKQogCiBpZiAoRU5BQkxFX0xFR0FD
WV9FTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0
aW9ucy9XZWJDb3JlLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2Vi
Q29yZS54Y2NvbmZpZwppbmRleCA2YjE5YWNmNjQ1Y2Q4OTk2ZDYwM2I0YTAwMTQ0ZWFiODZkYzhi
NDM3Li5kNWJmMjk4NTZlMDdlMzEyNjU5N2I2ZTczNDExMDk0MDk0ZDAzZjY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKQEAgLTQ2LDcgKzQ2
LDcgQEAgT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKE9USEVSX0NGTEFHUyk7CiAKIFdFQktJVEFE
RElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9s
b2NhbC9pbmNsdWRlL1dlYktpdEFkZGl0aW9ucyAkKFNES1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRl
L1dlYktpdEFkZGl0aW9uczsKIAotSEVBREVSX1NFQVJDSF9QQVRIUyA9IEZvcndhcmRpbmdIZWFk
ZXJzIGljdSAvdXNyL2luY2x1ZGUvbGlieHNsdCAvdXNyL2luY2x1ZGUvbGlieG1sMiAiJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUiICIkKEJVSUxUX1BST0RVQ1RT
X0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJT05TX0hFQURFUl9TRUFSQ0hf
UEFUSFMpICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CitIRUFERVJfU0VBUkNIX1BBVEhTID0gUEFM
IEZvcndhcmRpbmdIZWFkZXJzIGljdSAvdXNyL2luY2x1ZGUvbGlieHNsdCAvdXNyL2luY2x1ZGUv
bGlieG1sMiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUiICIk
KEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoV0VCS0lUQURESVRJT05T
X0hFQURFUl9TRUFSQ0hfUEFUSFMpICQoSEVBREVSX1NFQVJDSF9QQVRIUyk7CiBJTkZPUExJU1Rf
RklMRSA9IEluZm8ucGxpc3Q7CiBJTlNUQUxMX1BBVEggPSAkKFNZU1RFTV9MSUJSQVJZX0RJUikv
UHJpdmF0ZUZyYW1ld29ya3M7CiBJTlNUQUxMX1BBVEhbc2RrPW1hY29zeCpdID0gJChXRUJDT1JF
X0ZSQU1FV09SS1NfRElSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1
cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRlMjUyYmNjY2RkOTUwNTM0MTkxZDlhZGQ1NzQw
YmFmOWU0N2NhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1
cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsMjQgQEAKKy8vIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisv
LyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKworI2luY2x1ZGUgIi4uLy4uL0NvbmZpZ3VyYXRpb25zL0Jhc2Uu
eGNjb25maWciCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMv
RGVidWdSZWxlYXNlLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25z
L0RlYnVnUmVsZWFzZS54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MmIwOGJlMGVlMTJlMTU2YmVmODQ0
MGMxNjM3MTQzYTAzNDU3YzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZwpAQCAtMCwwICsxLDI0IEBACisv
LyBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNsdWRlICIuLi8uLi9Db25m
aWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWciCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvUEFM
L0NvbmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTUyYzExZGRiMzQwYzVi
ZDUzY2UzNjJmNTMzNDc2ZGU5ZGRhNDk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML0NvbmZpZ3VyYXRpb25zL1BBTC54Y2NvbmZpZwpAQCAtMCwwICsxLDM4IEBACisvLyBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisKKyNpbmNsdWRlICIuLi8uLi9Db25maWd1
cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnIgorCitJTlNUQUxMX1BBVEggPSAkKElOU1RBTExfUEFU
SF8kKENPTkZJR1VSQVRJT04pKTsKK0lOU1RBTExfUEFUSF9Qcm9kdWN0aW9uID0gL3Vzci9sb2Nh
bC9saWI7CisKK1NLSVBfSU5TVEFMTCA9ICQoU0tJUF9JTlNUQUxMXyQoRk9SQ0VfVE9PTF9JTlNU
QUxMKSk7CitTS0lQX0lOU1RBTExfID0gWUVTOworU0tJUF9JTlNUQUxMX05PID0gWUVTOworU0tJ
UF9JTlNUQUxMX1lFUyA9IE5POworCitQUk9EVUNUX05BTUUgPSBQQUw7CitFWEVDVVRBQkxFX1BS
RUZJWCA9IGxpYjsKK0VYUE9SVEVEX1NZTUJPTFNfRklMRSA9IDsKKworR0NDX1BSRUZJWF9IRUFE
RVIgPSA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTczZmQ4YjJhMTEzMDc0ZmI3ZDcwYzAzMGJlMDY4NTMzNmQ4MzRi
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMCwwICsxLDI0MyBAQAorLy8gISQqVVRGOCokIQoreworCWFyY2hp
dmVWZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDQ2Owor
CW9iamVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTFDMDlE
MDUzMUUzMUM0NDEwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDlEMDUyMUUzMUM0NDEwMDcyNUYxOCAvKiBD
cnlwdG9EaWdlc3QuaCAqLzsgfTsKKwkJMUMwOUQwNTYxRTMxQzQ2NTAwNzI1RjE4IC8qIENyeXB0
b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQzA5RDA1NTFFMzFDNDY1MDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcCAqLzsgfTsKKwkJMUMwOUQwNTgxRTMxQzU3RTAwNzI1RjE4IC8qIGNvbmZp
Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOUQw
NTcxRTMxQzU3RTAwNzI1RjE4IC8qIGNvbmZpZy5oICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmls
ZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkx
QzA5RDAzRDFFMzFDMzI4MDA3MjVGMTggLyogbGliUEFMLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IGxpYlBBTC5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQkxQzA5RDA1MjFFMzFDNDQxMDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyeXB0b0RpZ2VzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzA5RDA1NTFFMzFDNDY1MDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Q29tbW9u
Q3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENyeXB0b0Rp
Z2VzdENvbW1vbkNyeXB0by5jcHA7IHBhdGggPSBjb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwOUQwNTcxRTMx
QzU3RTAwNzI1RjE4IC8qIGNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwOUQwNUQxRTMxQzc3
QTAwNzI1RjE4IC8qIFBBTC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBQQUwueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMDlEMDYyMUUz
MUVDMjgwMDcyNUYxOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQzA5RDA2MzFFMzFFQzMxMDA3MjVGMTggLyogQmFzZS54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBC
ZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTFDMDlEMDNBMUUzMUMz
MjgwMDcyNUYxOCAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07
CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQ
QlhHcm91cCBzZWN0aW9uICovCisJCTFDMDlEMDM0MUUzMUMzMjgwMDcyNUYxOCA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMwOUQwNUMxRTMxQzczMzAwNzI1
RjE4IC8qIENvbmZpZ3VyYXRpb25zICovLAorCQkJCTFDMDlEMDU3MUUzMUM1N0UwMDcyNUYxOCAv
KiBjb25maWcuaCAqLywKKwkJCQkxQzA5RDAzRjFFMzFDMzI4MDA3MjVGMTggLyogcGFsICovLAor
CQkJCTFDMDlEMDNFMUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9kdWN0cyAqLywKKwkJCSk7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzA5RDAzRTFFMzFDMzI4MDA3MjVGMTgg
LyogUHJvZHVjdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTFDMDlEMDNEMUUzMUMzMjgwMDcyNUYxOCAvKiBsaWJQQUwuYSAqLywKKwkJCSk7CisJCQlu
YW1lID0gUHJvZHVjdHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzA5
RDAzRjFFMzFDMzI4MDA3MjVGMTggLyogcGFsICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDA1MTFFMzFDNDEyMDA3MjVGMTggLyogY3J5cHRvICov
LAorCQkJKTsKKwkJCXBhdGggPSBwYWw7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQkxQzA5RDA1MTFFMzFDNDEyMDA3MjVGMTggLyogY3J5cHRvICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDA1NDFFMzFDNDUyMDA3MjVGMTgg
LyogY29tbW9uY3J5cHRvICovLAorCQkJCTFDMDlEMDUyMUUzMUM0NDEwMDcyNUYxOCAvKiBDcnlw
dG9EaWdlc3QuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gY3J5cHRvOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUMwOUQwNTQxRTMxQzQ1MjAwNzI1RjE4IC8qIGNvbW1vbmNy
eXB0byAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMw
OUQwNTUxRTMxQzQ2NTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8s
CisJCQkpOworCQkJbmFtZSA9IGNvbW1vbmNyeXB0bzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CisJCTFDMDlEMDVDMUUzMUM3MzMwMDcyNUYxOCAvKiBDb25maWd1cmF0aW9ucyAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMwOUQwNUQx
RTMxQzc3QTAwNzI1RjE4IC8qIFBBTC54Y2NvbmZpZyAqLywKKwkJCQkxQzA5RDA2MjFFMzFFQzI4
MDA3MjVGMTggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovLAorCQkJCTFDMDlEMDYzMUUzMUVD
MzEwMDcyNUYxOCAvKiBCYXNlLnhjY29uZmlnICovLAorCQkJKTsKKwkJCXBhdGggPSBDb25maWd1
cmF0aW9uczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3Jv
dXAgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisJCTFDMDlEMDNCMUUzMUMzMjgwMDcyNUYxOCAvKiBIZWFkZXJzICovID0geworCQkJaXNhID0g
UEJYSGVhZGVyc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkJMUMwOUQwNTgxRTMxQzU3RTAwNzI1RjE4IC8qIGNvbmZpZy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMUMwOUQwNTMxRTMxQzQ0MTAwNzI1RjE4IC8qIENyeXB0b0RpZ2Vz
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkxQzA5RDAzQzFFMzFD
MzI4MDA3MjVGMTggLyogUEFMICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFDMDlEMDQ4MUUzMUMzMjgwMDcyNUYxOCAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUEFMIiAqLzsKKwkJCWJ1
aWxkUGhhc2VzID0gKAorCQkJCTFDMDlEMDM5MUUzMUMzMjgwMDcyNUYxOCAvKiBTb3VyY2VzICov
LAorCQkJCTFDMDlEMDNBMUUzMUMzMjgwMDcyNUYxOCAvKiBGcmFtZXdvcmtzICovLAorCQkJCTFD
MDlEMDNCMUUzMUMzMjgwMDcyNUYxOCAvKiBIZWFkZXJzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVs
ZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBQQUw7
CisJCQlwcm9kdWN0TmFtZSA9IFBBTDsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAxQzA5RDAzRDFF
MzFDMzI4MDA3MjVGMTggLyogbGliUEFMLmEgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBw
bGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVU
YXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJMUMw
OUQwMzUxRTMxQzMyODAwNzI1RjE4IC8qIFByb2plY3Qgb2JqZWN0ICovID0geworCQkJaXNhID0g
UEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA4
MzA7CisJCQkJVGFyZ2V0QXR0cmlidXRlcyA9IHsKKwkJCQkJMUMwOUQwM0MxRTMxQzMyODAwNzI1
RjE4ID0geworCQkJCQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9uID0gOC4zOworCQkJCQkJUHJvdmlz
aW9uaW5nU3R5bGUgPSBBdXRvbWF0aWM7CisJCQkJCX07CisJCQkJfTsKKwkJCX07CisJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gMUMwOUQwMzgxRTMxQzMyODAwNzI1RjE4IC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUEFMIiAqLzsKKwkJCWNvbXBhdGliaWxp
dHlWZXJzaW9uID0gIlhjb2RlIDMuMiI7CisJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7
CisJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJ
CQlFbmdsaXNoLAorCQkJCUphcGFuZXNlLAorCQkJCUZyZW5jaCwKKwkJCQlHZXJtYW4sCisJCQkJ
U3BhbmlzaCwKKwkJCQlEdXRjaCwKKwkJCQlJdGFsaWFuLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9
IDFDMDlEMDM0MUUzMUMzMjgwMDcyNUYxODsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IDFDMDlEMDNF
MUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9kdWN0cyAqLzsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7
CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQkxQzA5RDAzQzFFMzFD
MzI4MDA3MjVGMTggLyogUEFMICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkx
QzA5RDAzOTFFMzFDMzI4MDA3MjVGMTggLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJCTFDMDlEMDU2MUUzMUM0NjUwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21t
b25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJ
CTFDMDlEMDQ2MUUzMUMzMjgwMDcyNUYxOCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzA5RDA2
MjFFMzFFQzI4MDA3MjVGMTggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlERUFEX0NPREVfU1RSSVBQSU5HID0gIiQoREVBRF9DT0RFX1NUUklQ
UElOR19kZWJ1ZykiOworCQkJCURFQlVHX0RFRklORVMgPSAiJChERUJVR19ERUZJTkVTX2RlYnVn
KSI7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9ICIkKEdDQ19PUFRJTUlaQVRJT05fTEVW
RUxfZGVidWcpIjsKKwkJCQlTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCA9ICIkKFNUUklQX0lOU1RB
TExFRF9QUk9EVUNUX2RlYnVnKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkx
QzA5RDA0NzFFMzFDMzI4MDA3MjVGMTggLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzA5RDA2
MjFFMzFFQzI4MDA3MjVGMTggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCA9IE5POworCQkJfTsKKwkJ
CW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxQzA5RDA0OTFFMzFDMzI4MDA3MjVGMTggLyogRGVi
dWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNUQxRTMxQzc3QTAwNzI1RjE4IC8qIFBBTC54Y2NvbmZp
ZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9
OworCQkxQzA5RDA0QTFFMzFDMzI4MDA3MjVGMTggLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAx
QzA5RDA1RDFFMzFDNzdBMDA3MjVGMTggLyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMUMwOUQwNUExRTMx
QzZGMDAwNzI1RjE4IC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNjMxRTMxRUMz
MTAwNzI1RjE4IC8qIEJhc2UueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
fTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkxQzA5RDA1QjFFMzFDNkYwMDA3MjVG
MTggLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzA5RDA1RDFFMzFDNzdBMDA3MjVGMTgg
LyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1l
ID0gUHJvZHVjdGlvbjsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkxQzA5RDAz
ODFFMzFDMzI4MDA3MjVGMTggLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9q
ZWN0ICJQQUwiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxk
Q29uZmlndXJhdGlvbnMgPSAoCisJCQkJMUMwOUQwNDYxRTMxQzMyODAwNzI1RjE4IC8qIERlYnVn
ICovLAorCQkJCTFDMDlEMDQ3MUUzMUMzMjgwMDcyNUYxOCAvKiBSZWxlYXNlICovLAorCQkJCTFD
MDlEMDVBMUUzMUM2RjAwMDcyNUYxOCAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTFDMDlEMDQ4MUUzMUMzMjgwMDcyNUYxOCAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUEFMIiAqLyA9IHsKKwkJ
CWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAor
CQkJCTFDMDlEMDQ5MUUzMUMzMjgwMDcyNUYxOCAvKiBEZWJ1ZyAqLywKKwkJCQkxQzA5RDA0QTFF
MzFDMzI4MDA3MjVGMTggLyogUmVsZWFzZSAqLywKKwkJCQkxQzA5RDA1QjFFMzFDNkYwMDA3MjVG
MTggLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9
OworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVj
dCA9IDFDMDlEMDM1MUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDg4YzgwYWRmNmMxMWY2YzMwODIwM2E4ZTcyZWE0ODM2
ODZmM2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML2NvbmZpZy5oCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWYgZGVmaW5lZChI
QVZFX0NPTkZJR19IKSAmJiBIQVZFX0NPTkZJR19IICYmIGRlZmluZWQoQlVJTERJTkdfV0lUSF9D
TUFLRSkKKyNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKworI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KKworI2lmZGVmIF9f
QVBQTEVfXworI2RlZmluZSBIQVZFX0ZVTkNfVVNMRUVQIDEKKyNlbmRpZiAvKiBfX0FQUExFX18g
Ki8KKworI2lmIE9TKFdJTkRPV1MpCisKKyNpZm5kZWYgX1dJTjMyX1dJTk5UCisjZGVmaW5lIF9X
SU4zMl9XSU5OVCAweDYwMQorI2VuZGlmCisKKyNpZm5kZWYgV0lOVkVSCisjZGVmaW5lIFdJTlZF
UiAweDA2MDEKKyNlbmRpZgorCisjZW5kaWYgLyogT1MoV0lORE9XUykgKi8KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCisKKy8vIFRoZXNlIHVuZGVmcyBtYXRjaCB1cCB3aXRoIGRlZmluZXMgaW4gV2Vi
Q29yZVByZWZpeC5oIGZvciBNYWMgT1MgWC4KKy8vIEhlbHBzIHVzIGNhdGNoIGlmIGFueW9uZSB1
c2VzIG5ldyBvciBkZWxldGUgYnkgYWNjaWRlbnQgaW4gY29kZSBhbmQgZG9lc24ndCBpbmNsdWRl
ICJjb25maWcuaCIuCisjdW5kZWYgbmV3CisjdW5kZWYgZGVsZXRlCisjaW5jbHVkZSA8d3RmL0Zh
c3RNYWxsb2MuaD4KKworI2luY2x1ZGUgPGNpc282NDY+CisKKyNlbmRpZgorCisjaW5jbHVkZSA8
d3RmL0Rpc2FsbG93Q1R5cGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0NNYWtlTGlzdHMudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjljNTVhNjllMGI1ZGYwYjM1MDYyOTUxMzM5OTg4ZDkzMjQ1M2RmZTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0NNYWtlTGlzdHMudHh0CkBAIC0w
LDAgKzEsMzUgQEAKK3NldChQQUxfSEVBREVSUworICAgIGNyeXB0by9DcnlwdG9EaWdlc3QuaAor
KQorCitzZXQoUEFMX1NPVVJDRVMKKykKKworc2V0KFBBTF9JTkNMVURFX0RJUkVDVE9SSUVTCisg
ICAgIiR7UEFMX0RJUn0iCisgICAgIiR7UEFMX0RJUn0vcGFsIgorICAgICIke1BBTF9ESVJ9L3Bh
bC9jcnlwdG8iCispCisKK3NldChQQUxfTElCUkFSSUVTCisgICAgV1RGCispCisKK1dFQktJVF9J
TkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElTVFMoKQorCitXRUJLSVRfV1JBUF9TT1VSQ0VMSVNU
KCR7UEFMX1NPVVJDRVN9KQorV0VCS0lUX0ZSQU1FV09SSyhQQUwpCisKK2lmIChNU1ZDKQorICAg
IGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgVEFSR0VUIFBBTAorICAgICAgICBQUkVfQlVJ
TEQKKyAgICAgICAgQ09NTUFORCAke1BFUkxfRVhFQ1VUQUJMRX0gJHtXRUJLSVRfTElCUkFSSUVT
X0RJUn0vdG9vbHMvc2NyaXB0cy9hdXRvLXZlcnNpb24ucGwgJHtERVJJVkVEX1NPVVJDRVNfRElS
fQorICAgICAgICBWRVJCQVRJTSkKKworICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAg
VEFSR0VUIFBBTAorICAgICAgICBQT1NUX0JVSUxECisgICAgICAgIENPTU1BTkQgJHtQRVJMX0VY
RUNVVEFCTEV9ICR7V0VCS0lUX0xJQlJBUklFU19ESVJ9L3Rvb2xzL3NjcmlwdHMvdmVyc2lvbi1z
dGFtcC5wbCAke0RFUklWRURfU09VUkNFU19ESVJ9ICQ8VEFSR0VUX0ZJTEU6UEFMPgorICAgICAg
ICBWRVJCQVRJTSkKK2VuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUVmbC5j
bWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43NzVjMTg5ODRhZTg5YjljZWFhYjI1YjU3ZmRhMDZhMWExNWZjNjNi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCisgICAgY3J5cHRv
L2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Q
bGF0Zm9ybUdUSy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NzVjMTg5ODRhZTg5YjljZWFhYjI1YjU3ZmRh
MDZhMWExNWZjNjNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9Q
bGF0Zm9ybUdUSy5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VT
CisgICAgY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCispCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjk2OGVjNGQ5OGU0MWY3
MzcyOTBmOGY0ZjI4Zjc0ZjZhMmU2MWY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMCwwICsxLDMgQEAKK2xpc3QoQVBQRU5E
IFBBTF9TT1VSQ0VTCisgICAgY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25D
cnlwdG8uY3BwCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3Jt
V2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZjY5MTlmNzZmMTA4ZjcyZWM4ODdhMWI3MzUwNzgxNzIyYTI1OGE4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAt
MCwwICsxLDMgQEAKK2xpc3QoQVBQRU5EIFBBTF9TT1VSQ0VTCisgICAgY3J5cHRvL3dpbi9Dcnlw
dG9EaWdlc3RXaW4uY3BwCispCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2Ny
eXB0by9DcnlwdG9EaWdlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL0NyeXB0
b0RpZ2VzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4OGUxMjc3YzQ5NzljYjA0YjAwMWUzNTNlOGM4ZThlMjk5
M2IzMmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9D
cnlwdG9EaWdlc3QuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dDsK
KworY2xhc3MgQ3J5cHRvRGlnZXN0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDcnlwdG9E
aWdlc3QpOworcHVibGljOgorICAgIGVudW0gY2xhc3MgQWxnb3JpdGhtIHsKKyAgICAgICAgU0hB
XzEsCisgICAgICAgIFNIQV8yMjQsCisgICAgICAgIFNIQV8yNTYsCisgICAgICAgIFNIQV8zODQs
CisgICAgICAgIFNIQV81MTIsCisgICAgfTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0RpZ2VzdD4gY3JlYXRlKEFsZ29yaXRobSk7CisgICAgfkNyeXB0b0RpZ2VzdCgpOworCisg
ICAgdm9pZCBhZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IGNvbXB1dGVIYXNoKCk7CisKK3ByaXZhdGU6CisgICAgQ3J5cHRvRGln
ZXN0KCk7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0Q29udGV4dD4gbV9jb250
ZXh0OworfTsKKworfSAvLyBuYW1lc3BhY2UgUEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdl
c3RDb21tb25DcnlwdG8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2YTI0MWE0ZTIzNTg2YTFjMTNhZDkyYTll
OTExNGViNDJmZGNhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcApAQCAtMCww
ICsxLDE3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJD
cnlwdG9EaWdlc3QuaCIKKworI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25DcnlwdG8uaD4K
KworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKKyAgICBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07CisgICAgdm9pZCogY2NDb250ZXh0Owor
fTsKKworaW5saW5lIENDX1NIQTFfQ1RYKiB0b1NIQTFDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRl
eHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEEx
X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9T
SEEyMjRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJU
KGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRl
eHQpOworfQoraW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjU2Q29udGV4dChDcnlwdG9EaWdl
c3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0g
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKK30KK2lubGluZSBDQ19TSEE1
MTJfQ1RYKiB0b1NIQTM4NENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sK
KyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMzg0KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRl
eHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEE1MTJDb250ZXh0
KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFs
Z29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOworfQorCitD
cnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCisgICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0Rp
Z2VzdENvbnRleHQpCit7Cit9CisKK0NyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7Cisg
ICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBkZWxldGUgdG9TSEExQ29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzIyNDoKKyAgICAgICAgZGVsZXRlIHRvU0hBMjI0Q29udGV4dChtX2NvbnRleHQu
Z2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1NjoKKyAgICAgICAgZGVsZXRlIHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQuZ2V0
KCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzM4NDoKKyAgICAgICAgZGVsZXRlIHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzUxMjoKKyAgICAgICAgZGVsZXRlIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorfQorCisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdl
c3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRo
bSkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0
b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRobTsK
KworICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzE6IHsKKyAgICAgICAgQ0NfU0hBMV9DVFgqIGNvbnRleHQgPSBuZXcgQ0NfU0hB
MV9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0Owor
ICAgICAgICBDQ19TSEExX0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7Cisg
ICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6IHsKKyAgICAg
ICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOworICAgICAgICBk
aWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMjI0
X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKKyAgICAgICAgQ0NfU0hBMjU2X0NU
WCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4
dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgQ0NfU0hBMjU2X0luaXQoY29udGV4dCk7
CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQ6IHsKKyAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5l
dyBDQ19TSEE1MTJfQ1RYOworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0g
Y29udGV4dDsKKyAgICAgICAgQ0NfU0hBMzg0X0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVy
biBkaWdlc3Q7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81
MTI6IHsKKyAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RY
OworICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKKyAgICAg
ICAgQ0NfU0hBNTEyX0luaXQoY29udGV4dCk7CisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAg
fQorICAgIH0KK30KKwordm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlu
cHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0p
IHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAgICAgICAgQ0Nf
U0hBMV9VcGRhdGUodG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3Ro
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8yMjQ6CisgICAgICAgIENDX1NIQTIyNF9VcGRhdGUodG9TSEEyMjRDb250ZXh0KG1fY29udGV4
dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgQ0NfU0hBMjU2X1VwZGF0ZSh0
b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgorICAg
ICAgICBDQ19TSEEzODRfVXBkYXRlKHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBp
bnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIENDX1NIQTUxMl9VcGRhdGUodG9TSEE1MTJDb250
ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7
CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBzd2l0Y2ggKG1fY29udGV4dC0+YWxn
b3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6CisgICAg
ICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMV9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hB
MV9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0
OgorICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTIyNF9ESUdFU1RfTEVOR1RIKTsKKyAgICAg
ICAgQ0NfU0hBMjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjI0Q29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzI1NjoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEyNTZfRElHRVNUX0xF
TkdUSCk7CisgICAgICAgIENDX1NIQTI1Nl9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTI1NkNv
bnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hB
Mzg0X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEEzODRfRmluYWwocmVzdWx0LmRhdGEo
KSwgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgorICAgICAgICByZXN1bHQu
cmVzaXplKENDX1NIQTUxMl9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAgQ0NfU0hBNTEyX0ZpbmFs
KHJlc3VsdC5kYXRhKCksIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0RpZ2VzdEdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5
cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTc4YWUwYzNiOGQ3MDA4NjA3
NzMzNWFlM2UzMmVmYWE5MTM5NmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKQEAgLTAsMCArMSw5
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDE2IFNvZnRBdEhvbWUKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgorCisjaW5jbHVkZSA8Z2NyeXB0Lmg+CisKK25hbWVzcGFj
ZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgaW50IGFsZ29yaXRo
bTsKKyAgICBnY3J5X21kX2hkX3QgbWQ7Cit9OworCitDcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2Vz
dCgpCisgICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2VzdENvbnRleHQpCit7Cit9CisKK0Ny
eXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCit7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFs
Z29yaXRobSkKK3sKKyAgICBpbnQgZ2NyeXB0QWxnb3JpdGhtOworCisgICAgc3dpdGNoIChhbGdv
cml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAgICAg
ICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEExOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OgorICAgICAgICBnY3J5cHRBbGdv
cml0aG0gPSBHQ1JZX01EX1NIQTIyNDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKKyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NS
WV9NRF9TSEEyNTY7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8zODQ6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMzg0
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
NTEyOgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTUxMjsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0
KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBn
Y3J5cHRBbGdvcml0aG07CisKKyAgICBnY3J5X21kX29wZW4oJmRpZ2VzdC0+bV9jb250ZXh0LT5t
ZCwgZ2NyeXB0QWxnb3JpdGhtLCAwKTsKKyAgICBpZiAoIWRpZ2VzdC0+bV9jb250ZXh0LT5tZCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gZGlnZXN0OworfQorCit2b2lk
IENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgp
Cit7CisgICAgZ2NyeV9tZF93cml0ZShtX2NvbnRleHQtPm1kLCBpbnB1dCwgbGVuZ3RoKTsKK30K
KworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29tcHV0ZUhhc2goKQoreworICAgIGlu
dCBkaWdlc3RMZW4gPSBnY3J5X21kX2dldF9hbGdvX2RsZW4obV9jb250ZXh0LT5hbGdvcml0aG0p
OworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoZGlnZXN0TGVuKTsKKworICAgIGdjcnlfbWRf
ZmluYWwobV9jb250ZXh0LT5tZCk7CisgICAgbWVtY3B5KHJlc3VsdC5kYXRhKCksIGdjcnlfbWRf
cmVhZChtX2NvbnRleHQtPm1kLCAwKSwgZGlnZXN0TGVuKTsKKyAgICBnY3J5X21kX2Nsb3NlKG1f
Y29udGV4dC0+bWQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2Ug
UEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nbnV0bHMvQ3J5
cHRvRGlnZXN0R251VExTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2dudXRs
cy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1NmI4ZmJiZGEwZjA5MDkzMTk5
MWY2YjAxNjY2YzliMzU5YWMwODIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcApAQCAtMCwwICsxLDEw
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRv
RGlnZXN0LmgiCisKKyNpbmNsdWRlIDxnbnV0bHMvZ251dGxzLmg+CisjaW5jbHVkZSA8Z251dGxz
L2NyeXB0by5oPgorCituYW1lc3BhY2UgUEFMIHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRl
eHQgeworICAgIGdudXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgYWxnb3JpdGhtOworICAgIGdudXRs
c19oYXNoX2hkX3QgaGFzaDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAg
ICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGln
ZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBnbnV0bHNfaGFzaF9kZWluaXQobV9jb250ZXh0
LT5oYXNoLCAwKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGln
ZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIGdu
dXRsc19kaWdlc3RfYWxnb3JpdGhtX3QgZ251dGxzQWxnb3JpdGhtOworCisgICAgc3dpdGNoIChh
bGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewor
ICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTE7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7Cisg
ICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjI0OworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Njogewor
ICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTI1NjsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsK
KyAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJR19TSEEzODQ7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7
CisgICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19ESUdfU0hBNTEyOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4g
ZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0
aG0gPSBnbnV0bHNBbGdvcml0aG07CisKKyAgICBpbnQgcmV0ID0gZ251dGxzX2hhc2hfaW5pdCgm
ZGlnZXN0LT5tX2NvbnRleHQtPmhhc2gsIGdudXRsc0FsZ29yaXRobSk7CisgICAgaWYgKHJldCAh
PSBHTlVUTFNfRV9TVUNDRVNTKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBkaWdlc3Q7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBp
bnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBnbnV0bHNfaGFzaChtX2NvbnRleHQtPmhhc2gs
IGlucHV0LCBsZW5ndGgpOworfQorCitWZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21w
dXRlSGFzaCgpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICBpbnQgZGlnZXN0
TGVuID0gZ251dGxzX2hhc2hfZ2V0X2xlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7CisgICAgcmVz
dWx0LnJlc2l6ZShkaWdlc3RMZW4pOworCisgICAgZ251dGxzX2hhc2hfb3V0cHV0KG1fY29udGV4
dC0+aGFzaCwgcmVzdWx0LmRhdGEoKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8v
IG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8v
d2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE4Mzg4NDE5YmRiOTYzYTExNDVh
YzlhODk2NzRmM2ZiM2ExN2VlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvY3J5cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCkBAIC0wLDAgKzEsMTA0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5o
IgorCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHdpbmNyeXB0Lmg+CisKK25hbWVz
cGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtOworICAgIEhDUllQVFBST1YgaENvbnRleHQgeyAwIH07
CisgICAgSENSWVBUSEFTSCBoSGFzaCB7IDAgfTsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRv
RGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30K
KworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBpZiAoSENSWVBUSEFTSCBo
SGFzaCA9IG1fY29udGV4dC0+aEhhc2gpCisgICAgICAgIENyeXB0RGVzdHJveUhhc2goaEhhc2gp
OworICAgIGlmIChIQ1JZUFRQUk9WIGhDb250ZXh0ID0gbV9jb250ZXh0LT5oQ29udGV4dCkKKyAg
ICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ29udGV4dCwgMCk7Cit9CisKK3N0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKEFsZ29yaXRobSBhbGdvcml0
aG0pCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlw
dG9EaWdlc3QpOworICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBhbGdvcml0aG07
CisgICAgaWYgKCFDcnlwdEFjcXVpcmVDb250ZXh0KCZkaWdlc3QtPm1fY29udGV4dC0+aENvbnRl
eHQsIG51bGxwdHIsIG51bGxwdHIgLyogdXNlIGRlZmF1bHQgcHJvdmlkZXIgKi8sIFBST1ZfUlNB
X0FFUywgQ1JZUFRfVkVSSUZZQ09OVEVYVCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7CisgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogeworICAgICAgICBzdWNjZWVkZWQg
PSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQTEs
IDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogeworICAgICAgICBz
dWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQtPmhDb250ZXh0LCBD
QUxHX1NIQV8yNTYsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDog
eworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0LT5tX2NvbnRleHQt
PmhDb250ZXh0LCBDQUxHX1NIQV8zODQsIDAsIDAsICZkaWdlc3QtPm1fY29udGV4dC0+aEhhc2gp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzUxMjogeworICAgICAgICBzdWNjZWVkZWQgPSBDcnlwdENyZWF0ZUhhc2goZGlnZXN0
LT5tX2NvbnRleHQtPmhDb250ZXh0LCBDQUxHX1NIQV81MTIsIDAsIDAsICZkaWdlc3QtPm1fY29u
dGV4dC0+aEhhc2gpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorICAgIGlmIChzdWNj
ZWVkZWQpCisgICAgICAgIHJldHVybiBkaWdlc3Q7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisK
K3ZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxl
bmd0aCkKK3sKKyAgICBpZiAoIWlucHV0IHx8ICFsZW5ndGgpCisgICAgICAgIHJldHVybjsKKyAg
ICBSRUxFQVNFX0FTU0VSVChDcnlwdEhhc2hEYXRhKG1fY29udGV4dC0+aEhhc2gsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgQllURSo+KGlucHV0KSwgbGVuZ3RoLCAwKSk7Cit9CisKK1ZlY3Rvcjx1
aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0b3I8dWludDhf
dD4gcmVzdWx0OworICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlcjsKKyAgICBEV09SRCBkaWdl
c3RMZW5ndGhCdWZmZXJTaXplID0gc2l6ZW9mKGRpZ2VzdExlbmd0aEJ1ZmZlcik7CisKKyAgICBS
RUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNI
U0laRSwgcmVpbnRlcnByZXRfY2FzdDxCWVRFKj4oJmRpZ2VzdExlbmd0aEJ1ZmZlciksICZkaWdl
c3RMZW5ndGhCdWZmZXJTaXplLCAwKSk7CisgICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RMZW5ndGhC
dWZmZXIpOworCisgICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0
LT5oSGFzaCwgSFBfSEFTSFZBTCwgcmVzdWx0LmRhdGEoKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlciwg
MCkpOworICAgIFJFTEVBU0VfQVNTRVJUKHJlc3VsdC5zaXplKCkgPT0gZGlnZXN0TGVuZ3RoQnVm
ZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZjNhZTg5YjAwZTNkMzRiZDk0NThjNThmZmI0NGE4ZWEy
Nzk2YjNkZC4uMWYwZTEwMzVhZDRhZDJlMWUzZjBiMTcyNWEyYWNlY2VlM2M4MGM5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTY5LDggKzY5LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRpby9lZmwvQXVkaW9CdXNFZmwuY3BwCiAKLSAg
ICBwbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKLQogICAgIHBs
YXRmb3JtL2VmbC9DdXJzb3JFZmwuY3BwCiAgICAgcGxhdGZvcm0vZWZsL0RyYWdEYXRhRWZsLmNw
cAogICAgIHBsYXRmb3JtL2VmbC9EcmFnSW1hZ2VFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IDYyNDIxNjI5YzVlZDUwN2E3NzM0YTNlNmRmY2QzNGE3Mjg4MWViZGYuLmIxYzZl
NmI4Y2UxMzM3ZTM4YzI4NDYzMTU0YjVmYWUxNzBjZDA0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RL
LmNtYWtlCkBAIC02OCw4ICs2OCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogCiAg
ICAgcGxhdGZvcm0vYXVkaW8vZ2xpYi9BdWRpb0J1c0dMaWIuY3BwCiAKLSAgICBwbGF0Zm9ybS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKLQogICAgIHBsYXRmb3JtL2dhbWVw
YWQvZ2xpYi9HYW1lcGFkc0dsaWIuY3BwCiAKICAgICBwbGF0Zm9ybS9nZW9jbHVlL0dlb2xvY2F0
aW9uUHJvdmlkZXJHZW9jbHVlMS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggNGM1
MWUyYWE5MDY2NDU4MmFhNDIyMzY3NDU0NTEzOTkxMjRhMTFmMC4uN2RjMWU2ZTg0Y2UwZTY2NWRl
Zjc5YjAxNWUxNDUwOTM4Mjk2ZDlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTMz
Myw4ICszMzMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9j
b2NvYS9UaGVtZUNvY29hLm1tCiAgICAgcGxhdGZvcm0vY29jb2EvV2ViQ29yZU5TRXJyb3JFeHRy
YXMubW0KIAotICAgIHBsYXRmb3JtL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZC5jcHAK
ICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkUHJvdmlkZXIuY3BwCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1XaW4uY21ha2UKaW5kZXggOGQ3ZjUwOGExMjI5NTcxNzkwN2RlZjQxNGYyZjI2NGRm
MTBjMTlhZC4uYTRhOTkwOWIxMjEzNDNjZWViYzY5YmQwMWE4MzVjMThmMTg5MDFmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTczLDggKzczLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9jZi93aW4vQ2VydGlmaWNhdGVDRldpbi5jcHAKIAot
ICAgIHBsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcAotCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAogCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5YTQwZGI4MjM5OWZiMGJmNzBkNTJi
NGFjNjNmOTBhODhmOTdiZGE5Li40NmFiNzg2M2I5MDQ2Y2FjYTk1OGM3MzRhMDVkYzJmZDNmM2Nk
OTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC05NzcsNiArOTc3LDcgQEAKIAkJMUMwMTA3MDExOTI1OTRERjAwOEE0MjAxIC8q
IElubGluZVRleHRCb3hTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUMwMTA2RkYxOTI1OTRERjAwOEE0MjAxIC8qIElubGluZVRleHRCb3hTdHls
ZS5oICovOyB9OwogCQkxQzA5MzlFQTFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzA5MzlF
ODFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZHRm9udC5jcHAgKi87IH07CiAJCTFDMDkzOUVC
MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzA5MzlFOTFBMTNFMTI5MDBCNzg4RTUgLyogQ2Fj
aGVkU1ZHRm9udC5oICovOyB9OworCQkxQzA5RDA1OTFFMzFDNkE5MDA3MjVGMTggLyogbGliUEFM
LmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzA5
RDA1MDFFMzFDMzI5MDA3MjVGMTggLyogbGliUEFMLmEgKi87IH07CiAJCTFDMThEQTU4MTgxQUY2
QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzE4REE1NjE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50
ZXIuY3BwICovOyB9OwogCQkxQzE4REE1OTE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMThEQTU3
MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oICovOyB9OwogCQkxQzIxRTU3QzE4M0VE
MUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9vbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzIxRTU3QTE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJm
YWNlUG9vbC5jcHAgKi87IH07CkBAIC02MjYyLDggKzYyNjMsNiBAQAogCQlFMUY4MEI4ODE4MzE3
MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGODBCODYxODMxNzI1MjAwNzg4NUMzIC8qIENyeXB0b0tl
eVBhaXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMUY4MEI4RDE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjgwQjhCMTgzMTcyQjUw
MDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3BwICovOyB9OwogCQlFMUY4MEI4RTE4MzE3MkI1
MDA3ODg1QzMgLyogSlNDcnlwdG9LZXlQYWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY4MEI4QzE4MzE3MkI1MDA3ODg1QzMgLyogSlNDcnlwdG9L
ZXlQYWlyLmggKi87IH07Ci0JCUUxRkUxMzY0MTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdl
c3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFGRTEzNjIxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNy
eXB0by5jcHAgKi87IH07Ci0JCUUxRkUxMzY3MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdl
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUx
MzY2MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCAqLzsgfTsKIAkJRTFGRTEzNkEx
ODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRkUxMzY4MTgzRkUxQUIwMDg5
MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5jcHAgKi87IH07CiAJCUUxRkUxMzZCMTgz
RkUxQUIwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjkxODNGRTFBQjAwODkyRjEz
IC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggKi87IH07CiAJCUUxRkUxMzcwMTgzRkVDRjAw
MDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2RTE4M0ZFQ0YwMDA4OTJGMTMg
LyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVBNYWMuY3BwICovOyB9OwpAQCAtNjg4OCw2ICs2ODg3
LDIwIEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMUMwOUQwNEYxRTMxQzMyOTAwNzI1RjE4IC8q
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Q
cm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDFDMDlEMDRCMUUzMUMzMjgwMDcyNUYxOCAvKiBQ
QUwueGNvZGVwcm9qICovOworCQkJcHJveHlUeXBlID0gMjsKKwkJCXJlbW90ZUdsb2JhbElEU3Ry
aW5nID0gMUMwOUQwM0QxRTMxQzMyODAwNzI1RjE4OworCQkJcmVtb3RlSW5mbyA9IFBBTDsKKwkJ
fTsKKwkJMUMwOUQwNjcxRTMyMDc5RDAwNzI1RjE4IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDFDMDlEMDRCMUUzMUMzMjgwMDcyNUYxOCAvKiBQQUwueGNvZGVwcm9qICovOworCQkJcHJv
eHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMUMwOUQwM0MxRTMxQzMyODAw
NzI1RjE4OworCQkJcmVtb3RlSW5mbyA9IFBBTDsKKwkJfTsKIAkJNDE3REE2RDQxMzczNEUwRDAw
N0M1N0ZCIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTgwNTQsNiArODA2Nyw3IEBACiAJCTFDMDEw
NkZGMTkyNTk0REYwMDhBNDIwMSAvKiBJbmxpbmVUZXh0Qm94U3R5bGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lVGV4dEJveFN0eWxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDMDkzOUU4MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFNWR0ZvbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzA5MzlFOTFBMTNFMTI5MDBCNzg4
RTUgLyogQ2FjaGVkU1ZHRm9udC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWNoZWRTVkdGb250Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMDlEMDRCMUUz
MUMzMjgwMDcyNUYxOCAvKiBQQUwueGNvZGVwcm9qICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gIndyYXBwZXIucGItcHJvamVjdCI7IG5hbWUgPSBQQUwu
eGNvZGVwcm9qOyBwYXRoID0gUEFML1BBTC54Y29kZXByb2o7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDMThEQTU2MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0UGFpbnRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDMThEQTU3MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0
UGFpbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0UGFpbnRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQzIxRTU3QTE4M0VEMUZGMDAxQzI4OUQg
LyogSU9TdXJmYWNlUG9vbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJT1N1cmZhY2VQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0Mjcy
LDggKzE0Mjg2LDYgQEAKIAkJRTFGODBCODYxODMxNzI1MjAwNzg4NUMzIC8qIENyeXB0b0tleVBh
aXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvS2V5UGFpci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUY4MEI4QjE4MzE3MkI1MDA3ODg1QzMgLyog
SlNDcnlwdG9LZXlQYWlyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQ3J5cHRvS2V5UGFpci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRjgw
QjhDMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNDcnlwdG9LZXlQYWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUUxRkUxMzYyMTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RDb21tb25D
cnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvRGln
ZXN0Q29tbW9uQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFGRTEz
NjYxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDcnlwdG9EaWdlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTFGRTEzNjgxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGRTEzNjkxODNGRTFB
QjAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxRkUxMzZFMTgzRkVDRjAwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0
aG1SU0FfT0FFUE1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
cnlwdG9BbGdvcml0aG1SU0FfT0FFUE1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNDk4Nyw2ICsxNDk5OSw3IEBACiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQkx
QzA5RDA1OTFFMzFDNkE5MDA3MjVGMTggLyogbGliUEFMLmEgaW4gRnJhbWV3b3JrcyAqLywKIAkJ
CQlGRDJEQkYxMjEyQjA0OEEzMDBFRDk4QzYgLyogQWNjZWxlcmF0ZS5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCQlGRDJEQkYxMzEyQjA0OEEzMDBFRDk4QzYgLyogQXVkaW9Ub29sYm94
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTFBQjMzREE1MTI1NTFFMzIwMDI0NDU3
QSAvKiBJT0tpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKQEAgLTE1NDAyLDYgKzE1NDE1
LDcgQEAKIAkJMDg2N0Q2OTFGRTg0MDI4RkMwMkFBQzA3IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUMwOUQwNEIxRTMxQzMyODAwNzI1
RjE4IC8qIFBBTC54Y29kZXByb2ogKi8sCiAJCQkJNjVDOTdBRjIwOEVBOTA4ODAwQUNEMjczIC8q
IGNvbmZpZy5oICovLAogCQkJCUVERUM5ODAyMEFFRDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJl
Zml4LmggKi8sCiAJCQkJOTMwNzA2MTMwOUUwQ0E4MjAwQjE3RkU0IC8qIERlcml2ZWRTb3VyY2Vz
Lm1ha2UgKi8sCkBAIC0xNjA4Myw2ICsxNjA5NywxNCBAQAogCQkJcGF0aCA9IG1hYzsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTFDMDlEMDRDMUUzMUMzMjgwMDcyNUYxOCAv
KiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMUMwOUQwNTAxRTMxQzMyOTAwNzI1RjE4IC8qIGxpYlBBTC5hICovLAorCQkJKTsKKwkJCW5h
bWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTFDNUZB
RUNBMERDRkQ4QzkwMEQ1OEY3OCAvKiBJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjI0OTcsNyArMjI1MTksNiBAQAogCQkJCUZEMzE2MDQw
MTJCMDI2QTMwMEMxQTM1OSAvKiBhdWRpbyAqLywKIAkJCQkxQUU0MkY2NzBBQTRCOENCMDBDODYx
MkQgLyogY2YgKi8sCiAJCQkJQTVDOTc0Q0UxMTQ4NUZEQTAwNjZGMkFCIC8qIGNvY29hICovLAot
CQkJCUNFNTBEOENFMUM4OTMyRUQwMDcyRUE1QSAvKiBjcnlwdG8gKi8sCiAJCQkJNTE1QkUxODcx
RDU0RjVEQjAwREQ3QzY4IC8qIGdhbWVwYWQgKi8sCiAJCQkJQjJBMDE1OTEwQUY2Q0Q1MzAwNkJD
RTBFIC8qIGdyYXBoaWNzICovLAogCQkJCUE1OUUzQzFCMTE1ODBGMzQwMDcyOTI4RSAvKiBpb3Mg
Ki8sCkBAIC0yMjk0MSwyMyArMjI5NjIsNiBAQAogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCUNFNTBEOENFMUM4OTMyRUQwMDcyRUE1QSAvKiBjcnlw
dG8gKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUNFNTBE
OENGMUM4OTMyRkIwMDcyRUE1QSAvKiBjb21tb25jcnlwdG8gKi8sCi0JCQkJRTFGRTEzNjYxODM0
M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oICovLAotCQkJKTsKLQkJCXBhdGggPSBjcnlw
dG87Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQlDRTUwRDhDRjFDODkzMkZC
MDA3MkVBNUEgLyogY29tbW9uY3J5cHRvICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQlj
aGlsZHJlbiA9ICgKLQkJCQlFMUZFMTM2MjE4MzQzNTExMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0
Q29tbW9uQ3J5cHRvLmNwcCAqLywKLQkJCSk7Ci0JCQlwYXRoID0gY29tbW9uY3J5cHRvOwotCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJREY5QUZENkYxM0ZDMzFCMDAwMTVGRUI3
IC8qIG9iamMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
MjUyNTAsNyArMjUyNTQsNiBAQAogCQkJCUUxOUFDM0YxMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlw
dG9BbGdvcml0aG1TSEEyNTYuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxOUFDM0YzMTgyNERDNzkw
MDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEzODQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
OUFDM0Y1MTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUUxRkUxMzY3MTgzNDNBMTAwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUUxNTdBOEU1MTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXku
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODRFMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9L
ZXlBRVMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMjVGODVFMTgyQzJERjYwMEQ4NENEOSAvKiBD
cnlwdG9LZXlEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTA0LDYgKzI4NTA3LDcgQEAKIAkJ
CWJ1aWxkUnVsZXMgPSAoCiAJCQkpOwogCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTFDMDlEMDY4
MUUzMjA3OUQwMDcyNUYxOCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJCUREMDQxRkYx
MDlEOUUzMjUwMDEwQUYyQSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAogCQkJKTsKIAkJCW5h
bWUgPSBXZWJDb3JlOwpAQCAtMjg1NTYsNiArMjg1NjAsMTIgQEAKIAkJCW1haW5Hcm91cCA9IDA4
NjdENjkxRkU4NDAyOEZDMDJBQUMwNyAvKiBXZWJLaXQgKi87CiAJCQlwcm9kdWN0UmVmR3JvdXAg
PSAwMzQ3NjhERkZGMzhBNTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi87CiAJCQlwcm9qZWN0RGly
UGF0aCA9ICIiOworCQkJcHJvamVjdFJlZmVyZW5jZXMgPSAoCisJCQkJeworCQkJCQlQcm9kdWN0
R3JvdXAgPSAxQzA5RDA0QzFFMzFDMzI4MDA3MjVGMTggLyogUHJvZHVjdHMgKi87CisJCQkJCVBy
b2plY3RSZWYgPSAxQzA5RDA0QjFFMzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2RlcHJvaiAqLzsK
KwkJCQl9LAorCQkJKTsKIAkJCXByb2plY3RSb290ID0gIiI7CiAJCQl0YXJnZXRzID0gKAogCQkJ
CTQxODE2Rjc5MTM4NTlDNTUwMDU3QUFBNCAvKiBBbGwgKi8sCkBAIC0yODU2Nyw2ICsyODU3Nywx
NiBAQAogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCisvKiBCZWdpbiBQQlhS
ZWZlcmVuY2VQcm94eSBzZWN0aW9uICovCisJCTFDMDlEMDUwMUUzMUMzMjkwMDcyNUYxOCAvKiBs
aWJQQUwuYSAqLyA9IHsKKwkJCWlzYSA9IFBCWFJlZmVyZW5jZVByb3h5OworCQkJZmlsZVR5cGUg
PSBhcmNoaXZlLmFyOworCQkJcGF0aCA9IGxpYlBBTC5hOworCQkJcmVtb3RlUmVmID0gMUMwOUQw
NEYxRTMxQzMyOTAwNzI1RjE4IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJCXNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7CisJCX07CisvKiBFbmQgUEJYUmVmZXJlbmNlUHJv
eHkgc2VjdGlvbiAqLworCiAvKiBCZWdpbiBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KIAkJOTNGMTk5RkQwODI0NUU1OTAwMUU5QUJDIC8qIFJlc291cmNlcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7CkBAIC0yOTA5Myw3ICsyOTExMyw2IEBACiAJCQkJ
RTE5QUMzRjAxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMTlBQzNGMjE4MjREQzc5MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3Jp
dGhtU0hBMzg0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOUFDM0Y0MTgyNERDNzkwMDM0OTQy
NiAvKiBDcnlwdG9BbGdvcml0aG1TSEE1MTIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRTFGRTEz
NjQxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlFMTU3QThFNDE4MTczQTNBMDA5RjgyMUQgLyogQ3J5cHRvS2V5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxMjVGODREMTgyNDI4OUQwMEQ4NENEOSAvKiBDcnlwdG9LZXlB
RVMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTEyNUY4NjMxODJDMzAzQTAwRDg0Q0Q5IC8qIENy
eXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzE5MjUsNiAr
MzE5NDQsMTEgQEAKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLworCQkxQzA5RDA2ODFFMzIwNzlE
MDA3MjVGMTggLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CisJCQluYW1lID0gUEFMOworCQkJdGFyZ2V0UHJveHkgPSAxQzA5RDA2NzFF
MzIwNzlEMDA3MjVGMTggLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQk0MTdE
QTZENTEzNzM0RTBEMDA3QzU3RkIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlz
YSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSA5M0YxOThBNTA4MjQ1RTU5MDAx
RTlBQkMgLyogV2ViQ29yZSAqLzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKaW5kZXggMGM4ZGZkZGQxZTBhN2Fk
YmFhMThlZjljNTEyYTcyOGM5NDJhZGUyOS4uYWRkZjg0ZDJiMjNmMjU3ZWY4ZmM5NjZiZGVhMTlm
NzBjOWVkNGY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMS5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVO
QUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
KyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9B
bGdvcml0aG1TSEExOjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1T
SEExOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0
byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzEpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6
OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAg
ICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47
CkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMTo6ZGlnZXN0KFZlY3Rv
cjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsCiAKIEV4Y2VwdGlvbk9y
PHZvaWQ+IENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykK
IHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6
Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRp
Z2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVNIQTIyNC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEyMjQuY3BwCmluZGV4IDZjYTFhZWU1YTZiYjdkODNjYTA1NjQxOWRjYmViZDUx
N2I5ZDYxODUuLjYzNGM1YTNkOTNiODJmYTZiMWVjYjQ1MmY1NTJkMDY4NjY4NWY2M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTIyNC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMjI0LmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9D
UllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBh
bC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYs
NyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTIy
NDo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdl
c3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
RXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3Qg
PSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7
CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAg
IGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
NjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTIyNDo6ZGlnZXN0KFZlY3Rvcjx1
aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lk
PiBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3Rv
ckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsK
LSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0Ojpj
cmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNCk7CiAgICAgaWYgKCFk
aWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEEyNTYuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMjU2LmNwcAppbmRleCA3MzY2MGY1OTlhZjM3Y2E5ZGU5YTIxOWUzZjRmMjM0
OGY0NmFjMmIzLi4wZWEwNTA2Yjk0YTNhYjJlMzlkYjNmMjUxMDM0ZmE3NGVjNjNhY2ZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEEyNTYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTI1Ni5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVf
Q1JZUFRPKQogCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxw
YWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2
LDcgKzQ2LDcgQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEy
NTY6OmlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGln
ZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ss
IEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0
ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYp
OworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAg
ICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAg
LTY1LDcgKzY1LDcgQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2VzdChWZWN0b3I8
dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9p
ZD4gQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7
Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6
Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwogICAgIGlmICgh
ZGlnZXN0KSB7CiAgICAgICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtU0hBMzg0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVNIQTM4NC5jcHAKaW5kZXggYzk3NzUyZDgxYzAwNTQyMzliMGI4OGM2MGFhMzQz
ZWZhNjVlMTQ3Ny4uODhmMzEzNjI5NmIwNGM1MzgzODYwMzllMjk0ZTljNDM5M2U0YWY1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
U0hBMzg0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1TSEEzODQuY3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExF
X0NSWVBUTykKIAotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8
cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
Niw3ICs0Niw3IEBAIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hB
Mzg0OjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRp
Z2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBA
IC02NSw3ICs2NSw3IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMzg0OjpkaWdlc3QoVmVjdG9y
PHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVj
dG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQog
ewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8zODQpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0KTsKICAgICBpZiAo
IWRpZ2VzdCkgewogICAgICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTUxMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEE1MTIuY3BwCmluZGV4IDMzZTQ4M2RhMTVkMTBjY2RiNzNlZTM4ZjkzYTEz
ZDZkNzE4NzAyZWYuLjAxMDNmMDk1MzcyYmYzNTk0NmM3Y2QwM2RmNTljMTliMWViMGM3OWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVNIQTUxMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBNTEyLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRM
RV9DUllQVE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
PHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NDYsNyArNDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNI
QTUxMjo6aWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpk
aWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFj
aywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
Mik7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTIpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAg
ICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtNjUsNyArNjUsNyBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTUxMjo6ZGlnZXN0KFZlY3Rv
cjx1aW50OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2
b2lkPiBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykK
IHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0
OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7CiAgICAgaWYg
KCFkaWdlc3QpIHsKICAgICAgICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRo
bVJTQVNTQV9QS0NTMV92MV81TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCmluZGV4IGY2YWI3YTIxNTU1M2I2
Y2JmYjQ3MzAzNTVjZmU1MzUyYTlkMDIzNTUuLjBmMGJmOTMxM2ZhYjVjYTU0ZWQ2NDY5YmYzODZk
ODI5ZGU5MWVhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
QWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzVNYWMuY3BwCkBAIC0zMCwy
NiArMzAsMjYgQEAKIAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobVJzYVNzYVBhcmFtc0RlcHJlY2F0ZWQuaCIKLSNpbmNsdWRlICJD
cnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSU0EuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
aW5saW5lIHN0ZDo6b3B0aW9uYWw8Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2Vz
dEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKK2lubGlu
ZSBzdGQ6Om9wdGlvbmFsPFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0+IGNyeXB0b0RpZ2Vz
dEFsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2hGdW5jdGlvbikKIHsKICAg
ICBzd2l0Y2ggKGhhc2hGdW5jdGlvbikgewogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRp
Zmllcjo6U0hBXzE6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzE7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsK
ICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV8yMjQ6Ci0gICAgICAgIHJl
dHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDsKKyAgICAgICAgcmV0dXJuIFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ7CiAgICAgY2FzZSBDcnlwdG9BbGdv
cml0aG1JZGVudGlmaWVyOjpTSEFfMjU2OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yNTY7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfMjU2OwogICAgIGNhc2UgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllcjo6U0hB
XzM4NDoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0Owor
ICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKICAg
ICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6OlNIQV81MTI6Ci0gICAgICAgIHJldHVy
biBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKKyAgICAgICAgcmV0dXJuIFBBTDo6
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyBFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHNpZ25SU0FTU0FfUEtDUzFfdjFfNShDcnlwdG9BbGdv
cml0aG1JZGVudGlmCiAgICAgYXV0byBjcnlwdG9EaWdlc3RBbGdvcml0aG0gPSBXZWJDb3JlOjpj
cnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaCk7CiAgICAgaWYgKCFjcnlwdG9EaWdlc3RBbGdvcml0
aG0pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwotICAgIGF1
dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7
CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKCpjcnlwdG9EaWdl
c3RBbGdvcml0aG0pOwogICAgIGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICBkaWdlc3QtPmFkZEJ5dGVzKGRhdGEsIGRhdGFMZW5n
dGgpOwpAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8Ym9vbD4gdmVyaWZ5UlNB
U1NBX1BLQ1MxX3YxXzUoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLAogICAgIGF1dG8g
Y3J5cHRvRGlnZXN0QWxnb3JpdGhtID0gV2ViQ29yZTo6Y3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhh
c2gpOwogICAgIGlmICghY3J5cHRvRGlnZXN0QWxnb3JpdGhtKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOworICAgIGF1dG8gZGlnZXN0ID0gUEFM
OjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKICAgICBpZiAo
IWRpZ2VzdCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAg
ICAgZGlnZXN0LT5hZGRCeXRlcyhkYXRhLCBkYXRhTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IGExNTdhODRmMGU2NWY4NWY5
YzA0OGU1MWMxZDE5MGUyYjg3ZGJmMGEuLmRmNzdjYjRjOWI1YzkxZDQ0ZTczMzc5OTJkN2Q4YmE3
ZDc2NTMwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNp
bmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKLSNpbmNsdWRlICJDcnlw
dG9EaWdlc3QuaCIKICNpbmNsdWRlICJET01FZGl0b3IuaCIKICNpbmNsdWRlICJET01QYXRjaFN1
cHBvcnQuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKQEAgLTk2LDYgKzk1LDcgQEAKICNpbmNs
dWRlIDxpbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0Lmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8
cnVudGltZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTMxNiw3ICsxMzE2LDcgQEAgc3RhdGljIFN0
cmluZyBjb21wdXRlQ29udGVudFNlY3VyaXR5UG9saWN5U0hBMjU2SGFzaChjb25zdCBFbGVtZW50
JiBlbGVtZW50KQogICAgIFRleHRFbmNvZGluZyBkb2N1bWVudEVuY29kaW5nID0gZWxlbWVudC5k
b2N1bWVudCgpLnRleHRFbmNvZGluZygpOwogICAgIGNvbnN0IFRleHRFbmNvZGluZyYgZW5jb2Rp
bmdUb1VzZSA9IGRvY3VtZW50RW5jb2RpbmcuaXNWYWxpZCgpID8gZG9jdW1lbnRFbmNvZGluZyA6
IFVURjhFbmNvZGluZygpOwogICAgIENTdHJpbmcgY29udGVudCA9IGVuY29kaW5nVG9Vc2UuZW5j
b2RlKFRleHROb2RlVHJhdmVyc2FsOjpjb250ZW50c0FzU3RyaW5nKGVsZW1lbnQpLCBFbnRpdGll
c0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgYXV0byBjcnlwdG9EaWdlc3QgPSBDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBjcnlw
dG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yNTYpOwogICAgIGNyeXB0b0RpZ2VzdC0+YWRkQnl0ZXMoY29udGVudC5k
YXRhKCksIGNvbnRlbnQubGVuZ3RoKCkpOwogICAgIFZlY3Rvcjx1aW50OF90PiBkaWdlc3QgPSBj
cnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCk7CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoInNoYTI1
Ni0iLCBiYXNlNjRFbmNvZGUoZGlnZXN0LmRhdGEoKSwgZGlnZXN0LnNpemUoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXgg
NTM2NzFlNTBhNzRiNzAzZmQ1MWNiMzlkOTVkNTUwYjYzMDI2YjI2OS4uOTZmYTdhMjMxYjE4MTMx
ZDIzNmNjMThhZjliYWY5ZjJmOGVhMzRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVk
ZSAiQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0
eVBvbGljeVNvdXJjZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZUxp
c3QuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJET01TdHJpbmdMaXN0
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgpA
QCAtNTcsNiArNTYsNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
ICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0
b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4K
QEAgLTMwMSwxOCArMzAxLDE4IEBAIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjphbGxQb2xp
Y2llc0FsbG93KFZpb2xhdGVkRGlyZWN0aXZlQ2FsbGJhY2smJiBjYWxsYmFjCiAgICAgcmV0dXJu
IGlzQWxsb3dlZDsKIH0KIAotc3RhdGljIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIHRvQ3J5cHRv
RGlnZXN0QWxnb3JpdGhtKENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG0gYWxnb3Jp
dGhtKQorc3RhdGljIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RB
bGdvcml0aG0oQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0aG0pCiB7
CiAgICAgc3dpdGNoIChhbGdvcml0aG0pIHsKICAgICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGlj
eUhhc2hBbGdvcml0aG06OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzI1NjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yNTY7CiAgICAgY2FzZSBDb250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3Jp
dGhtOjpTSEFfMzg0OgotICAgICAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8zODQ7CisgICAgICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
Mzg0OwogICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6U0hBXzUx
MjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOworICAg
ICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjsKICAgICB9
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtOjpTSEFfNTEyOworICAgIHJldHVybiBQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfNTEyOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+CkBAIC0zMzMsNyAr
MzMzLDcgQEAgQ29udGVudFNlY3VyaXR5UG9saWN5OjpIYXNoSW5FbmZvcmNlZEFuZFJlcG9ydE9u
bHlQb2xpY2llc1BhaXIgQ29udGVudFNlY3VyaXR5UG8KICAgICBib29sIGZvdW5kSGFzaEluRW5m
b3JjZWRQb2xpY2llcyA9IGZhbHNlOwogICAgIGJvb2wgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9s
aWNpZXMgPSBmYWxzZTsKICAgICBmb3IgKGF1dG8gYWxnb3JpdGhtIDogYWxnb3JpdGhtcykgewot
ICAgICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKHRvQ3J5cHRv
RGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOworICAgICAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9
IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oYWxnb3Jp
dGhtKSk7CiAgICAgICAgIGNyeXB0b0RpZ2VzdC0+YWRkQnl0ZXMoY29udGVudENTdHJpbmcuZGF0
YSgpLCBjb250ZW50Q1N0cmluZy5sZW5ndGgoKSk7CiAgICAgICAgIENvbnRlbnRTZWN1cml0eVBv
bGljeUhhc2ggaGFzaCA9IHsgYWxnb3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkg
fTsKICAgICAgICAgaWYgKCFmb3VuZEhhc2hJbkVuZm9yY2VkUG9saWNpZXMgJiYgYWxsUG9saWNp
ZXNXaXRoRGlzcG9zaXRpb25BbGxvdyhDb250ZW50U2VjdXJpdHlQb2xpY3k6OkRpc3Bvc2l0aW9u
OjpFbmZvcmNlLCBzdGQ6OmZvcndhcmQ8UHJlZGljYXRlPihwcmVkaWNhdGUpLCBoYXNoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMzFmMDc1YWEzN2NiMzQ2MjA5ODQ3YTU5OWUxZjU0Mjg0Zjlm
MzgxOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBDcnlwdG9EaWdlc3Rf
aAotI2RlZmluZSBDcnlwdG9EaWdlc3RfaAotCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVj
dCBDcnlwdG9EaWdlc3RDb250ZXh0OwotCi1jbGFzcyBDcnlwdG9EaWdlc3QgewotICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKENyeXB0b0RpZ2VzdCk7Ci1wdWJsaWM6Ci0gICAgZW51bSBjbGFzcyBB
bGdvcml0aG0gewotICAgICAgICBTSEFfMSwKLSAgICAgICAgU0hBXzIyNCwKLSAgICAgICAgU0hB
XzI1NiwKLSAgICAgICAgU0hBXzM4NCwKLSAgICAgICAgU0hBXzUxMiwKLSAgICB9OwotICAgIHN0
YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBjcmVhdGUoQWxnb3JpdGhtKTsKLSAg
ICB+Q3J5cHRvRGlnZXN0KCk7Ci0KLSAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0
LCBzaXplX3QgbGVuZ3RoKTsKLSAgICBWZWN0b3I8dWludDhfdD4gY29tcHV0ZUhhc2goKTsKLQot
cHJpdmF0ZToKLSAgICBDcnlwdG9EaWdlc3QoKTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9EaWdlc3RDb250ZXh0PiBtX2NvbnRleHQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBDcnlwdG9EaWdlc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdl
c3RDb21tb25DcnlwdG8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2ZmYzU2
MDUyMjZiNjRiNDkzNzNiZWE2ODVlOTIzZjAxOTliYjRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9j
b21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDE3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0
by5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0
IHsKLSAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07Ci0gICAgdm9pZCogY2ND
b250ZXh0OwotfTsKLQotaW5saW5lIENDX1NIQTFfQ1RYKiB0b1NIQTFDb250ZXh0KENyeXB0b0Rp
Z2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9
PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDQ19TSEExX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBMjU2
X0NUWCogdG9TSEEyMjRDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0g
ICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzIyNCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgqPihjb250ZXh0
LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTI1Nl9DVFgqIHRvU0hBMjU2Q29udGV4dChD
cnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFTU0VSVChjb250ZXh0LT5hbGdv
cml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDQ19TSEEyNTZfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlubGlu
ZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTM4NENvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29u
dGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMzg0KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBNTEyX0NU
WCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci1pbmxpbmUgQ0NfU0hBNTEyX0NUWCogdG9TSEE1
MTJDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNv
bnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMik7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTUxMl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQp
OwotfQotCi1DcnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3
IENyeXB0b0RpZ2VzdENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2Vz
dCgpCi17Ci0gICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICBkZWxldGUgdG9TSEExQ29udGV4
dChtX2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKLSAgICAgICAgZGVsZXRlIHRvU0hBMjI0Q29udGV4dCht
X2NvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgZGVsZXRlIHRvU0hBMjU2Q29udGV4dChtX2Nv
bnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgZGVsZXRlIHRvU0hBMzg0Q29udGV4dChtX2NvbnRl
eHQuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzUxMjoKLSAgICAgICAgZGVsZXRlIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQu
Z2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotfQotCi0KLXN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
IGFsZ29yaXRobSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3Qo
bmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFs
Z29yaXRobTsKLQotICAgIHN3aXRjaCAoYWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKLSAgICAgICAgQ0NfU0hBMV9DVFgqIGNvbnRleHQgPSBu
ZXcgQ0NfU0hBMV9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBj
b250ZXh0OwotICAgICAgICBDQ19TSEExX0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBk
aWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6
IHsKLSAgICAgICAgQ0NfU0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOwot
ICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAg
Q0NfU0hBMjI0X0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQot
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY6IHsKLSAgICAgICAgQ0Nf
U0hBMjU2X0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEEyNTZfQ1RYOwotICAgICAgICBkaWdlc3Qt
Pm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBMjU2X0luaXQo
Y29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29u
dGV4dCA9IG5ldyBDQ19TSEE1MTJfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2ND
b250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgQ0NfU0hBMzg0X0luaXQoY29udGV4dCk7Ci0gICAg
ICAgIHJldHVybiBkaWdlc3Q7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV81MTI6IHsKLSAgICAgICAgQ0NfU0hBNTEyX0NUWCogY29udGV4dCA9IG5ldyBDQ19T
SEE1MTJfQ1RYOwotICAgICAgICBkaWdlc3QtPm1fY29udGV4dC0+Y2NDb250ZXh0ID0gY29udGV4
dDsKLSAgICAgICAgQ0NfU0hBNTEyX0luaXQoY29udGV4dCk7Ci0gICAgICAgIHJldHVybiBkaWdl
c3Q7Ci0gICAgfQotICAgIH0KLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0
IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIHN3aXRjaCAobV9jb250ZXh0LT5h
bGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKLSAg
ICAgICAgQ0NfU0hBMV9VcGRhdGUodG9TSEExQ29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1
dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIENDX1NIQTIyNF9VcGRhdGUodG9TSEEyMjRDb250ZXh0
KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgQ0NfU0hBMjU2
X1VwZGF0ZSh0b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
Mzg0OgotICAgICAgICBDQ19TSEEzODRfVXBkYXRlKHRvU0hBMzg0Q29udGV4dChtX2NvbnRleHQu
Z2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIENDX1NIQTUxMl9VcGRhdGUodG9T
SEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRl
SGFzaCgpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBzd2l0Y2ggKG1fY29u
dGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzE6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMV9ESUdFU1RfTEVOR1RIKTsKLSAgICAg
ICAgQ0NfU0hBMV9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5n
ZXQoKSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjI0OgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTIyNF9ESUdFU1RfTEVOR1RI
KTsKLSAgICAgICAgQ0NfU0hBMjI0X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjI0Q29udGV4
dChtX2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEyNTZf
RElHRVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTI1Nl9GaW5hbChyZXN1bHQuZGF0YSgpLCB0
b1NIQTI1NkNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIHJlc3VsdC5yZXNp
emUoQ0NfU0hBMzg0X0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEEzODRfRmluYWwocmVz
dWx0LmRhdGEoKSwgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAg
ICByZXN1bHQucmVzaXplKENDX1NIQTUxMl9ESUdFU1RfTEVOR1RIKTsKLSAgICAgICAgQ0NfU0hB
NTEyX0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBNTEyQ29udGV4dChtX2NvbnRleHQuZ2V0KCkp
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGEzYzhiZjI0M2RjMDcyYWJiYTg0NjE4OTczM2EwZjUzZmQ2YzA0ZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IElnYWxp
YSBTLkwuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0SG9tZQotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNpbmNsdWRlIDxn
Y3J5cHQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29u
dGV4dCB7Ci0gICAgaW50IGFsZ29yaXRobTsKLSAgICBnY3J5X21kX2hkX3QgbWQ7Ci19OwotCi1D
cnlwdG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0Rp
Z2VzdENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci19
Ci0KLXN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBpbnQgZ2NyeXB0QWxnb3Jp
dGhtOwotCi0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMToKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEx
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjI0OgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTIyNDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjoKLSAgICAg
ICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEyNTY7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIGdjcnlwdEFs
Z29yaXRobSA9IEdDUllfTURfU0hBMzg0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBH
Q1JZX01EX1NIQTUxMjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9EaWdlc3QpOwotICAgIGRpZ2VzdC0+
bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnY3J5cHRBbGdvcml0aG07Ci0KLSAgICBnY3J5X21kX29w
ZW4oJmRpZ2VzdC0+bV9jb250ZXh0LT5tZCwgZ2NyeXB0QWxnb3JpdGhtLCAwKTsKLSAgICBpZiAo
IWRpZ2VzdC0+bV9jb250ZXh0LT5tZCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBy
ZXR1cm4gZGlnZXN0OwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9p
ZCogaW5wdXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgZ2NyeV9tZF93cml0ZShtX2NvbnRleHQt
Pm1kLCBpbnB1dCwgbGVuZ3RoKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6
Y29tcHV0ZUhhc2goKQotewotICAgIGludCBkaWdlc3RMZW4gPSBnY3J5X21kX2dldF9hbGdvX2Rs
ZW4obV9jb250ZXh0LT5hbGdvcml0aG0pOwotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQoZGln
ZXN0TGVuKTsKLQotICAgIGdjcnlfbWRfZmluYWwobV9jb250ZXh0LT5tZCk7Ci0gICAgbWVtY3B5
KHJlc3VsdC5kYXRhKCksIGdjcnlfbWRfcmVhZChtX2NvbnRleHQtPm1kLCAwKSwgZGlnZXN0TGVu
KTsKLSAgICBnY3J5X21kX2Nsb3NlKG1fY29udGV4dC0+bWQpOwotCi0gICAgcmV0dXJuIHJlc3Vs
dDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWE1ZDgxZjJiNGJlMjczMmNlZTNlNTI2MzM4
NmVkNTljYjIxNGRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251
VExTLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUg
PGdudXRscy9nbnV0bHMuaD4KLSNpbmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIGdudXRsc19k
aWdlc3RfYWxnb3JpdGhtX3QgYWxnb3JpdGhtOwotICAgIGdudXRsc19oYXNoX2hkX3QgaGFzaDsK
LX07Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcg
Q3J5cHRvRGlnZXN0Q29udGV4dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0
KCkKLXsKLSAgICBnbnV0bHNfaGFzaF9kZWluaXQobV9jb250ZXh0LT5oYXNoLCAwKTsKLX0KLQot
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQotewotICAgIGdudXRsc19kaWdlc3RfYWxnb3Jp
dGhtX3QgZ251dGxzQWxnb3JpdGhtOwotCi0gICAgc3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewotICAgICAgICBnbnV0bHNBbGdv
cml0aG0gPSBHTlVUTFNfRElHX1NIQTE7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0OiB7Ci0gICAgICAgIGdudXRsc0FsZ29y
aXRobSA9IEdOVVRMU19ESUdfU0hBMjI0OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2Fz
ZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogewotICAgICAgICBnbnV0bHNBbGdv
cml0aG0gPSBHTlVUTFNfRElHX1NIQTI1NjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAgZ251dGxzQWxn
b3JpdGhtID0gR05VVExTX0RJR19TSEEzODQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAgIGdudXRsc0Fs
Z29yaXRobSA9IEdOVVRMU19ESUdfU0hBNTEyOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAg
fQotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gZGlnZXN0KG5ldyBDcnlwdG9E
aWdlc3QpOwotICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5hbGdvcml0aG0gPSBnbnV0bHNBbGdvcml0
aG07Ci0KLSAgICBpbnQgcmV0ID0gZ251dGxzX2hhc2hfaW5pdCgmZGlnZXN0LT5tX2NvbnRleHQt
Pmhhc2gsIGdudXRsc0FsZ29yaXRobSk7Ci0gICAgaWYgKHJldCAhPSBHTlVUTFNfRV9TVUNDRVNT
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBkaWdlc3Q7Ci19Ci0KLXZv
aWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0
aCkKLXsKLSAgICBnbnV0bHNfaGFzaChtX2NvbnRleHQtPmhhc2gsIGlucHV0LCBsZW5ndGgpOwot
fQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0gICAg
VmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBpbnQgZGlnZXN0TGVuID0gZ251dGxzX2hhc2hf
Z2V0X2xlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7Ci0gICAgcmVzdWx0LnJlc2l6ZShkaWdlc3RM
ZW4pOwotCi0gICAgZ251dGxzX2hhc2hfb3V0cHV0KG1fY29udGV4dC0+aGFzaCwgcmVzdWx0LmRh
dGEoKSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0Rp
Z2VzdFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0Rp
Z2VzdFdpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2Y2MxOTJjMmIzMDM5
NTk0MzBmMjQ5YzczNjM0YjEzOWM3YThhNDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL3dpbi9Dcnlw
dG9EaWdlc3RXaW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCi0KLSNp
bmNsdWRlIDx3aW5jcnlwdC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlw
dG9EaWdlc3RDb250ZXh0IHsKLSAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG07
Ci0gICAgSENSWVBUUFJPViBoQ29udGV4dCB7IDAgfTsKLSAgICBIQ1JZUFRIQVNIIGhIYXNoIHsg
MCB9OwotfTsKLQotQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0
KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9E
aWdlc3QoKQotewotICAgIGlmIChIQ1JZUFRIQVNIIGhIYXNoID0gbV9jb250ZXh0LT5oSGFzaCkK
LSAgICAgICAgQ3J5cHREZXN0cm95SGFzaChoSGFzaCk7Ci0gICAgaWYgKEhDUllQVFBST1YgaENv
bnRleHQgPSBtX2NvbnRleHQtPmhDb250ZXh0KQotICAgICAgICBDcnlwdFJlbGVhc2VDb250ZXh0
KGhDb250ZXh0LCAwKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRv
RGlnZXN0OjpjcmVhdGUoQWxnb3JpdGhtIGFsZ29yaXRobSkKLXsKLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5t
X2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRobTsKLSAgICBpZiAoIUNyeXB0QWNxdWlyZUNv
bnRleHQoJmRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgbnVsbHB0ciwgbnVsbHB0ciAvKiB1
c2UgZGVmYXVsdCBwcm92aWRlciAqLywgUFJPVl9SU0FfQUVTLCBDUllQVF9WRVJJRllDT05URVhU
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYm9vbCBzdWNjZWVkZWQgPSBmYWxzZTsK
LSAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8xOiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3Qt
Pm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBMSwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0
LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2OiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFz
aChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzI1NiwgMCwgMCwgJmRpZ2Vz
dC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7Ci0gICAgICAgIHN1Y2NlZWRlZCA9IENy
eXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzM4NCwg
MCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Ci0gICAgICAgIHN1
Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENB
TEdfU0hBXzUxMiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICB9Ci0gICAgaWYgKHN1Y2NlZWRlZCkKLSAgICAgICAgcmV0dXJuIGRp
Z2VzdDsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5
dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGlmICghaW5wdXQg
fHwgIWxlbmd0aCkKLSAgICAgICAgcmV0dXJuOwotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0SGFz
aERhdGEobV9jb250ZXh0LT5oSGFzaCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBCWVRFKj4oaW5w
dXQpLCBsZW5ndGgsIDApKTsKLX0KLQotVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0RpZ2VzdDo6Y29t
cHV0ZUhhc2goKQotewotICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7Ci0gICAgRFdPUkQgZGln
ZXN0TGVuZ3RoQnVmZmVyOwotICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlclNpemUgPSBzaXpl
b2YoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFz
aFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hTSVpFLCByZWludGVycHJldF9jYXN0PEJZ
VEUqPigmZGlnZXN0TGVuZ3RoQnVmZmVyKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlclNpemUsIDApKTsK
LSAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbmd0aEJ1ZmZlcik7Ci0KLSAgICBSRUxFQVNFX0FT
U0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNIVkFMLCByZXN1
bHQuZGF0YSgpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyLCAwKSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
cmVzdWx0LnNpemUoKSA9PSBkaWdlc3RMZW5ndGhCdWZmZXIpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXgg
ODUyYjliOGJlZWJmYTExYmNmMzE0NWZhNmJiNjFjMjUwOTMwYmYzOC4uMjZkYjdmMjdkMGE2MWU5
YzkwOTUwODJiOWExY2ZiZTZmOGQyN2Y5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTMw
LDcgKzMwLDYgQEAKICNpbmNsdWRlICJTb3VwTmV0d29ya1Nlc3Npb24uaCIKIAogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAj
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkdVbmlxdWVQdHJTb3VwLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2luY2x1ZGUgIlNvdXBOZXR3b3Jr
UHJveHlTZXR0aW5ncy5oIgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8bGli
c291cC9zb3VwLmg+CisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAoIWNlcnRpZmljYXRlRGF0YSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAotICAgICAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0
b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOwog
ICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKGNlcnRpZmljYXRlRGF0YS0+ZGF0YSwgY2VydGlmaWNh
dGVEYXRhLT5sZW4pOwogCiAgICAgICAgIGF1dG8gaGFzaCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2go
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZSBiL1NvdXJjZS9jbWFr
ZS9XZWJLaXRGUy5jbWFrZQppbmRleCAyOWEwOTY5MDM4ZmFhNzQ0ZTFhOGM1OGYzNTZhZDA3M2Yw
MDUyNWJkLi41MTMwZmZjYmNjN2M5Y2U3NTE0YWY0ZDU1M2JkOGE0ZjA1MDE0NTZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL1dlYktp
dEZTLmNtYWtlCkBAIC0xMCw2ICsxMCw5IEBAIGVuZGlmICgpCiBpZiAoTk9UIFdFQkNPUkVfRElS
KQogICAgIHNldChXRUJDT1JFX0RJUiAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViQ29y
ZSIpCiBlbmRpZiAoKQoraWYgKE5PVCBQQUxfRElSKQorICAgIHNldChQQUxfRElSICIke0NNQUtF
X1NPVVJDRV9ESVJ9L1NvdXJjZS9XZWJDb3JlL1BBTCIpCitlbmRpZiAoKQogaWYgKE5PVCBXRUJL
SVRfRElSKQogICAgIHNldChXRUJLSVRfRElSICIke0NNQUtFX1NPVVJDRV9ESVJ9L1NvdXJjZS9X
ZWJLaXQiKQogZW5kaWYgKCkKZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0
cy50eHQKaW5kZXggYmYzYzRlZmFiMGVhZjJjYWMyNmFlNzY2Yzc2N2MxYTY2OTliN2I0NC4uYmIz
MzE4YzJiNjUxZmZmNmIzYTlkMTdmYmQzZDYyZjEyNTcxMmEyNiAxMDA2NDQKLS0tIGEvQ01ha2VM
aXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50eHQKQEAgLTExNCw2ICsxMTQsNyBAQCBlbHNlICgp
CiBlbmRpZiAoKQogCiBzZXQoSmF2YVNjcmlwdENvcmVfTElCUkFSWV9UWVBFIFNIQVJFRCkKK3Nl
dChQQUxfTElCUkFSWV9UWVBFIFNUQVRJQykKIHNldChXZWJLaXRfTElCUkFSWV9UWVBFIFNIQVJF
RCkKIHNldChXZWJLaXQyX0xJQlJBUllfVFlQRSBTSEFSRUQpCiBzZXQoV2ViQ29yZVRlc3RTdXBw
b3J0X0xJQlJBUllfVFlQRSBTVEFUSUMpCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VM
b2cKaW5kZXggZmM1ZTgxOWUwNDViOGY1YzJkYzg3ZjE5YmZkOGZiMTcyMDQ0MmZiZC4uMWNjMDI1
YWQxNTY0MjljYzQ5NGU5ZTQ0OGY3ZGQ5ODQ1YWI1MmIzYyAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9n
CisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE3LTAxLTIwICBEb24gT2xtc3Rl
YWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4gYW5kIE15bGVzIEMuIE1heGZpZWxkIDxtbWF4
ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0
cmFjdGlvbiBMYXllciAoUEFMKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2UvQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlOgorCiAyMDE3LTAx
LTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLiBVcGRhdGUgT3B0aW9uc0dUSy5jbWFrZSBhbmQgTkVXUyBmb3IgMi4xNS4z
IHJlbGVhc2UuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299418</attachid>
            <date>2017-01-20 18:49:37 -0800</date>
            <delta_ts>2017-01-22 09:26:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143358-20170120184743.patch</filename>
            <type>text/plain</type>
            <size>128776</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmMzNThhNTU2YjA1MTZi
NmZkN2VmYmE4NWFkYTEyZDA1MGExMzQ1My4uMzdhMTlhMDQ5YmU3ZDZlNzQ0NWVmNTE5OGEzOGJi
YWY4MTRiZjQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDE3LTAxLTIwICBEb24g
T2xtc3RlYWQgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4gYW5kIE15bGVzIEMuIE1heGZpZWxk
IDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjaW5nIHRoZSBQbGF0Zm9y
bSBBYnN0cmFjdGlvbiBMYXllciAoUEFMKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gZW5mb3JjZSBsYXllcmluZyBhbmQgcHJvbW90
ZSB0ZXN0YWJpbGl0eSwgV2ViQ29yZS9wbGF0Zm9ybSBmaWxlcworICAgICAgICBzaG91bGQgYmUg
Y29tcGlsZWQgaW4gdGhlaXIgb3duIHByb2plY3QuIFRoaXMgbmV3IHByb2plY3QgY2FuIGVuZm9y
Y2UgbGF5ZXJpbmcKKyAgICAgICAgYW5kIGNhbiBiZSB0ZXN0ZWQgd2l0aCB1bml0IHRlc3RzIGlu
IGFkZGl0aW9uIHRvIGxheW91dCB0ZXN0cy4KKworICAgICAgICBUaGUgbmFtZSBvZiB0aGlzIG5l
dyBwcm9qZWN0IGlzIHRoZSBQbGF0Zm9ybSBBYnN0cmFjdGlvbiBMYXllciwgb3IgIlBBTC4iCisg
ICAgICAgIFRoaXMgY29tcHJpc2VzIG9mIGEgbmV3IGRpcmVjdG9yeSBpbiBXZWJDb3JlIHdoaWNo
IHdpbGwgYmUgdGhlIGRlc3RpbmF0aW9uCisgICAgICAgIGZvciBmaWxlcyBtaWdyYXRlZCBmcm9t
IFdlYkNvcmUvcGxhdGZvcm0uIFRoaXMgbmV3IGZvbGRlciwgYW5kIGl0cyBhc3NvY2lhdGVkCisg
ICAgICAgIHByb2plY3QsIHdpbGwgbWFpbnRhaW4gbGF5ZXJpbmcgaW52YXJpYW50cy4gVGhlc2Ug
aW52YXJpYW50cyBhcmUgZW5mb3JjZWQgYXQKKyAgICAgICAgYnVpbGQtdGltZSBieSBzZXR0aW5n
IHRoZSAjaW5jbHVkZSBwYXRoIGZvciBQQUwgdG8gbm90IGluY2x1ZGUgdGhlIHJlc3Qgb2YKKyAg
ICAgICAgV2ViQ29yZSAod2hpY2ggaXMgdGhlIHNhbWUgbGF5ZXJpbmcgZW5mb3JjZW1lbnQgbWVj
aGFuaXNtIGZvciBXVEYpLiBGaWxlcyB3aWxsCisgICAgICAgIGJlIG1pZ3JhdGVkIGludG8gdGhp
cyBuZXcgdGFyZ2V0L2RpcmVjdG9yeSBwaWVjZS1ieS1waWVjZSwgYW5kIHRoZSBtaWdyYXRpb24K
KyAgICAgICAgb2YgYSBmaWxlIHdpbGwgYmUgcGVyZm9ybWVkIGFzIHNvb24gYXMgaXQgY2FuIGJl
IG1pZ3JhdGVkIHdpdGhvdXQgdmlvbGF0aW5nCisgICAgICAgIGxheWVyaW5nLgorCisgICAgICAg
IFdpdGhpbiBXZWJDb3JlLCBmaWxlcyBzaG91bGQgaW5jbHVkZSBQQUwgZmlsZXMgdXNpbmcgdGhl
IGNvbnZlbnRpb24KKyAgICAgICAgI2luY2x1ZGUgPHBhbC9mb28uaD4uIFN5bWJvbHMgd2l0aGlu
IFBBTCBhcmUgcGxhY2VkIHdpdGhpbiBhIG5ldyB0b3AtbGV2ZWwKKyAgICAgICAgbmFtZXNwYWNl
LCAiUEFMLCIgYW5kIHRoZXJlZm9yZSB3aGVuIHVzZWQgc2hvdWxkIGJlIHJlZmVycmVkIHRvIGFz
IFBBTDo6Rm9vLgorCisgICAgICAgIFRoZSBmaXJzdCBzZXQgb2YgZmlsZXMgdG8gbW92ZSBpbnRv
IHRoZSBuZXcgcGxhdGZvcm0gaXMgdGhlIGNyeXB0by8gc3ViZGlyZWN0b3J5CisgICAgICAgIGJl
Y2F1c2UgaXQgaXMgYm90aCBzaW1wbGUgYnV0IGFsc28gaW5jbHVkZXMgcGxhdGZvcm0tZGVwZW5k
ZW50IGZpbGVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJl
aGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWc6IEFkZCBQQUwgdG8gdGhlIGluY2x1ZGUgcGF0
aAorICAgICAgICAqIFBBTC9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOiBBZGRlZC4KKyAg
ICAgICAgKiBQQUwvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOiBBZGRlZC4K
KyAgICAgICAgKiBQQUwvQ29uZmlndXJhdGlvbnMvUEFMLnhjY29uZmlnOiBBZGRlZC4gU2V0cyB1
cCBzb21lIFBBTC1zcGVjaWZpYworICAgICAgICB2YXJpYWJsZXMuCisgICAgICAgICogUEFML0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBBZGRlZC4KKyAgICAgICAgKiBQ
QUwvQ29uZmlndXJhdGlvbnMvVmVyc2lvbi54Y2NvbmZpZzogQWRkZWQuCisgICAgICAgICogUEFM
L1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZC4gTmV3IHByb2plY3QgZmlsZS4K
KyAgICAgICAgKiBQQUwvY29uZmlnLmg6IEFkZGVkLiBTaW1wbGlmaWVkIGZyb20gV2ViQ29yZS9j
b25maWcuaC4KKyAgICAgICAgKiBQQUwvcGFsL0NNYWtlTGlzdHMudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBQQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFs
L1BsYXRmb3JtR1RLLmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFsL1BsYXRmb3JtTWFj
LmNtYWtlOiBBZGRlZC4KKyAgICAgICAgKiBQQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlOiBBZGRl
ZC4KKyAgICAgICAgKiBQQUwvcGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaC4KKyAgICAgICAg
KiBQQUwvcGFsL2NyeXB0by9jb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9jb21tb25jcnlw
dG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcC4KKyAgICAgICAgKiBQQUwvcGFsL2NyeXB0
by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcC4KKyAgICAg
ICAgKiBQQUwvcGFsL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0R251VExTLmNwcDogUmVuYW1l
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by9nbnV0bHMvQ3J5cHRvRGlnZXN0
R251VExTLmNwcC4KKyAgICAgICAgKiBQQUwvcGFsL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2lu
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5
cHRvRGlnZXN0V2luLmNwcC4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAg
KiBQbGF0Zm9ybUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAg
ICAgKiBQbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IENyZWF0ZSBhIHByb2plY3QgbGluayBzbyBXZWJDb3JlCisgICAgICAgIGtu
b3dzIHRoYXQgaXQgbmVlZHMgdG8gYnVpbGQgUEFMIGFzIGEgZGVwZW5kZW5jeS4KKyAgICAgICAg
KiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdCk6IFVwZGF0ZSAjaW5jbHVkZSBhbmQg
bmFtZXNwYWNlLgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTIyNC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2Vz
dCk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTI1Ni5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEyNTY6OmRpZ2Vz
dCk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTM4NC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2Vz
dCk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNI
QTUxMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2Vz
dCk6IERpdHRvLgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BL
Q1MxX3YxXzVNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvRGlnZXN0QWxnb3JpdGht
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzaWduUlNBU1NBX1BLQ1MxX3YxXzUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OnZlcmlmeVJTQVNTQV9QS0NTMV92MV81KTogRGl0dG8uCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNvbXB1dGVDb250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKTogRGl0dG8uCisgICAg
ICAgICogcGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50U2VjdXJpdHlQb2xpY3k6OmZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2llcyk6IERpdHRv
LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SG9zdFRMU0NlcnRpZmljYXRlU2V0Ojpjb21wdXRlQ2VydGlm
aWNhdGVIYXNoKTogRGl0dG8uCisKIDIwMTctMDEtMjAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgZGVidWdnaW5nIGNvZGUgdG8gY29t
cGFyZSBVUkxQYXJzZXIgd2l0aCBVUkw6OnBhcnNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvQ01ha2VMaXN0cy50eHQKaW5kZXggMWI4YTJkY2I1MDRmYjU1NmFi
YzVmNTgzYjc2YmUzOGQ5MmYwZmRmMS4uMTVmZGYyMjRhODk2NmJlMTFkY2Y2M2UyZmE4ZjU4N2Ew
M2U3MjY0NCAxMDA2NDQKLS0tIGEvU291cmNlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9D
TWFrZUxpc3RzLnR4dApAQCAtNDYsNiArNDYsNyBAQCBXRUJLSVRfU0VUX0VYVFJBX0NPTVBJTEVS
X0ZMQUdTKFdURiAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogV0VCS0lUX1NFVF9FWFRS
QV9DT01QSUxFUl9GTEFHUyhKYXZhU2NyaXB0Q29yZSAke0FERElUSU9OQUxfQ09NUElMRVJfRkxB
R1N9KQogCiBpZiAoRU5BQkxFX1dFQkNPUkUpCisgICAgV0VCS0lUX1NFVF9FWFRSQV9DT01QSUxF
Ul9GTEFHUyhQQUwgJHtBRERJVElPTkFMX0NPTVBJTEVSX0ZMQUdTfSkKICAgICBXRUJLSVRfU0VU
X0VYVFJBX0NPTVBJTEVSX0ZMQUdTKFdlYkNvcmVUZXN0U3VwcG9ydCAke0FERElUSU9OQUxfQ09N
UElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09NUElMRVJfRkxBR1MoV2ViQ29y
ZSAke0FERElUSU9OQUxfQ09NUElMRVJfRkxBR1N9KQogICAgIFdFQktJVF9TRVRfRVhUUkFfQ09N
UElMRVJfRkxBR1MoV2ViQ29yZURlcml2ZWRTb3VyY2VzICR7QURESVRJT05BTF9DT01QSUxFUl9G
TEFHU30pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggMmQwNDNhMDZlNTRkMWNkZGU0Y2Vh
ODUwYzYyMzg4ODlkNzNjMDkxZi4uOWE1OGY5ZDdhZjE1N2EzZDA3OTE2NWJkNWQ2N2Q1YTlmNmQz
M2M5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMSw0ICsxLDQgQEAKLS8vIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMCwgMjAxNCwgMjAxNSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTQsIDIwMTUsIDIw
MTYsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGI1MDQzYzUwNzU2YTQ0Zjg0NmIzYzY1Y2IyZmE1NTY2
NDA0YzE1MzQuLjY4YTU5NzM5Y2YxZDg1ODE2OTNhOGMxNDdkMzg1YjljNjI3YWZjYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0xLDYgKzEsNyBAQAogY21ha2VfbWluaW11bV9yZXF1aXJlZChW
RVJTSU9OIDIuOC4xMikKIGluY2x1ZGUoV2ViS2l0Q29tbW9uKQogc2V0X3Byb3BlcnR5KERJUkVD
VE9SWSAuIFBST1BFUlRZIEZPTERFUiAiV2ViQ29yZSIpCithZGRfc3ViZGlyZWN0b3J5KFBBTC9w
YWwpCiAKIHNldChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtDTUFLRV9CSU5B
UllfRElSfSIKQEAgLTI5NDUsNiArMjk0Niw3IEBAIHNldChXZWJDb3JlX1BMVUdfSU5TX1JFU09V
UkNFUwogc2V0KFdlYkNvcmVfTElCUkFSSUVTCiAgICAgJHtJQ1VfTElCUkFSSUVTfQogICAgIEph
dmFTY3JpcHRDb3JlJHtERUJVR19TVUZGSVh9CisgICAgUEFMJHtERUJVR19TVUZGSVh9CiApCiAK
IGlmIChFTkFCTEVfTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dl
YkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggMmQwNDNh
MDZlNTRkMWNkZGU0Y2VhODUwYzYyMzg4ODlkNzNjMDkxZi4uOWE1OGY5ZDdhZjE1N2EzZDA3OTE2
NWJkNWQ2N2Q1YTlmNmQzM2M5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYkNvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTEsNCArMSw0IEBACi0vLyBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTQsIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDE0LCAyMDE1LCAy
MDE2LCAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8KIC8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2Nv
bmZpZyBiL1NvdXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL1dlYkNvcmUueGNjb25maWcKaW5k
ZXggNmIxOWFjZjY0NWNkODk5NmQ2MDNiNGEwMDE0NGVhYjg2ZGM4YjQzNy4uZDViZjI5ODU2ZTA3
ZTMxMjY1OTdiNmU3MzQxMTA5NDA5NGQwM2Y2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViQ29yZS9Db25m
aWd1cmF0aW9ucy9XZWJDb3JlLnhjY29uZmlnCkBAIC00Niw3ICs0Niw3IEBAIE9USEVSX0NQTFVT
UExVU0ZMQUdTID0gJChPVEhFUl9DRkxBR1MpOwogCiBXRUJLSVRBRERJVElPTlNfSEVBREVSX1NF
QVJDSF9QQVRIUyA9ICQoQlVJTFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJL
aXRBZGRpdGlvbnMgJChTREtST09UKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJLaXRBZGRpdGlvbnM7
CiAKLUhFQURFUl9TRUFSQ0hfUEFUSFMgPSBGb3J3YXJkaW5nSGVhZGVycyBpY3UgL3Vzci9pbmNs
dWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9E
ZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2NhbC9p
bmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BBVEhTKSAkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpOworSEVBREVSX1NFQVJDSF9QQVRIUyA9IFBBTCBGb3J3YXJkaW5nSGVhZGVy
cyBpY3UgL3Vzci9pbmNsdWRlL2xpYnhzbHQgL3Vzci9pbmNsdWRlL2xpYnhtbDIgIiQoQlVJTFRf
UFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlIiAiJChCVUlMVF9QUk9EVUNUU19E
SVIpL3Vzci9sb2NhbC9pbmNsdWRlIiAkKFdFQktJVEFERElUSU9OU19IRUFERVJfU0VBUkNIX1BB
VEhTKSAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpOwogSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0
OwogSU5TVEFMTF9QQVRIID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtz
OwogSU5TVEFMTF9QQVRIW3Nkaz1tYWNvc3gqXSA9ICQoV0VCQ09SRV9GUkFNRVdPUktTX0RJUik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2Nv
bmZpZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRkN2JhYThlYzY1ZjY3YjEzMmEzMjU4YjYxY2FkNmQ2YTc1NjNjNjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2Nv
bmZpZwpAQCAtMCwwICsxLDEyMSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8g
YXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorCisjaW5jbHVkZSAiLi4vLi4vLi4vLi4vLi4vSW50ZXJuYWwvQ29uZmlndXJhdGlvbnMvSGF2
ZUludGVybmFsU0RLLnhjY29uZmlnIgorCitVU0VfSU5URVJOQUxfU0RLID0gJChVU0VfSU5URVJO
QUxfU0RLXyQoQ09ORklHVVJBVElPTikpOworVVNFX0lOVEVSTkFMX1NES19Qcm9kdWN0aW9uID0g
WUVTOworVVNFX0lOVEVSTkFMX1NES19EZWJ1ZyA9ICQoSEFWRV9JTlRFUk5BTF9TREspOworVVNF
X0lOVEVSTkFMX1NES19SZWxlYXNlID0gJChIQVZFX0lOVEVSTkFMX1NESyk7CisKK0NMQU5HX0NY
WF9MQU5HVUFHRV9TVEFOREFSRCA9IGdudSsrMTQ7CitDTEFOR19DWFhfTElCUkFSWSA9IGxpYmMr
KzsKK0NMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9DT05TVEFO
VF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9DWFgwWF9FWFRFTlNJT05TID0gTk87CitD
TEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7CitDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9
IFlFUzsKK0NMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9J
TlRfQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fU1VTUElDSU9VU19NT1ZFID0gWUVTOwor
Q0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gWUVTOworQ0xBTkdfV0FSTl9fRFVQTElDQVRF
X01FVEhPRF9NQVRDSCA9IFlFUzsKK0dDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7
CitDT01CSU5FX0hJRFBJX0lNQUdFUyA9IE5POworREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0g
ZHdhcmYtd2l0aC1kc3ltOworRU5BQkxFX1NUUklDVF9PQkpDX01TR1NFTkQgPSBZRVM7CitHQ0Nf
Q19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworR0NDX0RFQlVHR0lOR19TWU1CT0xTID0gZGVm
YXVsdDsKK0dDQ19EWU5BTUlDX05PX1BJQyA9IE5POworR0NDX0VOQUJMRV9DUFBfRVhDRVBUSU9O
UyA9IE5POworR0NDX0VOQUJMRV9DUFBfUlRUSSA9IE5POworR0NDX0VOQUJMRV9PQkpDX0VYQ0VQ
VElPTlMgPSBZRVM7CitHQ0NfRU5BQkxFX1NZTUJPTF9TRVBBUkFUSU9OID0gTk87CitHQ0NfRkFT
VF9PQkpDX0RJU1BBVENIID0gWUVTOworR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0g
WUVTOworR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7CitHQ0NfT0JKQ19DQUxMX0NYWF9DRFRP
UlMgPSBZRVM7CitHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOworR0NDX1NZTUJP
TFNfUFJJVkFURV9FWFRFUk4gPSBZRVM7CitHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gTk87CitH
Q0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworR0NDX1ZFUlNJT04gPSBjb20uYXBw
bGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworLy8gRklYTUU6IDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzEwOTg0Nj4gV2ViQ29yZSBzaG91bGQgYnVpbGQgd2l0aCAtV3Nob3J0ZW4tNjQtdG8tMzIK
K0dDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gJChHQ0NfV0FSTl82NF9UT18zMl9C
SVRfQ09OVkVSU0lPTl8kKENVUlJFTlRfQVJDSCkpOworR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NP
TlZFUlNJT05fID0gWUVTOworR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT05fYXJtdjcg
PSBZRVM7CitHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTl9hcm12N2sgPSBZRVM7CitH
Q0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTl9hcm12N3MgPSBZRVM7CitHQ0NfV0FSTl82
NF9UT18zMl9CSVRfQ09OVkVSU0lPTl9hcm02NCA9IE5POworR0NDX1dBUk5fNjRfVE9fMzJfQklU
X0NPTlZFUlNJT05faTM4NiA9IFlFUzsKK0dDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9O
X3g4Nl82NCA9IE5POworR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5DVElPTlMgPSBOTzsK
K0dDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX01J
U1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVT
OworR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKK0dDQ19XQVJOX1NJR05f
Q09NUEFSRSA9IFlFUzsKK0dDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVM7CitHQ0Nf
V0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CitHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZ
RVM7CitQUkVCSU5ESU5HID0gTk87CitXQVJOSU5HX0NGTEFHUyA9IC1XYWxsIC1XZXh0cmEgLVdj
YXN0LXF1YWwgLVdjaGFyLXN1YnNjcmlwdHMgLVdleHRyYS10b2tlbnMgLVdmb3JtYXQ9MiAtV2lu
aXQtc2VsZiAtV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSAtV21pc3Npbmctbm9yZXR1cm4gLVdw
YWNrZWQgLVdwb2ludGVyLWFyaXRoIC1XcmVkdW5kYW50LWRlY2xzIC1XdW5kZWYgLVd3cml0ZS1z
dHJpbmdzIC1XZXhpdC10aW1lLWRlc3RydWN0b3JzIC1XZ2xvYmFsLWNvbnN0cnVjdG9ycyAtV3Rh
dXRvbG9naWNhbC1jb21wYXJlIC1XaW1wbGljaXQtZmFsbHRocm91Z2ggLVduby11bmtub3duLXdh
cm5pbmctb3B0aW9uOworCitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9ICQoVEFSR0VU
X01BQ19PU19YX1ZFUlNJT05fTUFKT1IkKE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVDpzdWZmaXg6
aWRlbnRpZmllcikpOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTAgPSAxMDEwMDA7
CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xMSA9IDEwMTEwMDsKK1RBUkdFVF9NQUNf
T1NfWF9WRVJTSU9OX01BSk9SXzEyID0gMTAxMjAwOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05f
TUFKT1JfMTMgPSAxMDEzMDA7CisKK1dLX1RBUkdFVF9JT1NfVkVSU0lPTl9NQUpPUiA9ICQoSVBI
T05FT1NfREVQTE9ZTUVOVF9UQVJHRVQ6YmFzZSk7IC8vIGlPUyA5LjMgPT4gOQorCitTVVBQT1JU
RURfUExBVEZPUk1TID0gaXBob25lb3MgaXBob25lc2ltdWxhdG9yIG1hY29zeCBhcHBsZXR2b3Mg
YXBwbGV0dnNpbXVsYXRvciB3YXRjaG9zIHdhdGNoc2ltdWxhdG9yOworCisvLyBERUJVR19ERUZJ
TkVTLCBHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMLCBTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCBhbmQg
REVBRF9DT0RFX1NUUklQUElORyB2YXJ5IGJldHdlZW4gdGhlIGRlYnVnIGFuZCBub3JtYWwgdmFy
aWFudHMuCisvLyBXZSBzZXQgdXAgdGhlIHZhbHVlcyBmb3IgZWFjaCB2YXJpYW50IGhlcmUsIGFu
ZCBoYXZlIHRoZSBEZWJ1ZyBjb25maWd1cmF0aW9uIGluIHRoZSBYY29kZSBwcm9qZWN0IHVzZSB0
aGUgX2RlYnVnIHZhcmlhbnQuCitERUJVR19ERUZJTkVTX2RlYnVnID0gOworREVCVUdfREVGSU5F
U19ub3JtYWwgPSBOREVCVUc7CitERUJVR19ERUZJTkVTID0gJChERUJVR19ERUZJTkVTXyQoQ1VS
UkVOVF9WQVJJQU5UKSk7CisKK0dDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAkKEdDQ19PUFRJTUla
QVRJT05fTEVWRUxfJChDVVJSRU5UX1ZBUklBTlQpKTsKK0dDQ19PUFRJTUlaQVRJT05fTEVWRUxf
bm9ybWFsW3Nkaz1pcGhvbmUqXSA9IDM7CitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbFtz
ZGs9bWFjb3N4Kl0gPSAyOworR0NDX09QVElNSVpBVElPTl9MRVZFTF9kZWJ1ZyA9IDA7CisKK1NU
UklQX0lOU1RBTExFRF9QUk9EVUNUID0gJChTVFJJUF9JTlNUQUxMRURfUFJPRFVDVF8kKENVUlJF
TlRfVkFSSUFOVCkpOworU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1Rfbm9ybWFsID0gWUVTOworU1RS
SVBfSU5TVEFMTEVEX1BST0RVQ1RfZGVidWcgPSBOTzsKKworREVBRF9DT0RFX1NUUklQUElOR19k
ZWJ1ZyA9IE5POworREVBRF9DT0RFX1NUUklQUElOR19ub3JtYWwgPSBZRVM7CitERUFEX0NPREVf
U1RSSVBQSU5HID0gJChERUFEX0NPREVfU1RSSVBQSU5HXyQoQ1VSUkVOVF9WQVJJQU5UKSk7CisK
K0dDQ19HRU5FUkFURV9ERUJVR0dJTkdfU1lNQk9MUyA9IFlFUzsKK0NMQU5HX0RFQlVHX0lORk9S
TUFUSU9OX0xFVkVMW3Nkaz1tYWNvc3gxMC44Kl0gPSBsaW5lLXRhYmxlcy1vbmx5OworQ0xBTkdf
REVCVUdfSU5GT1JNQVRJT05fTEVWRUxbc2RrPW1hY29zeDEwLjkqXSA9IGxpbmUtdGFibGVzLW9u
bHk7CisKK1NES1JPT1QgPSBtYWNvc3guaW50ZXJuYWw7CisKK09USEVSX0NGTEFHUyA9ICQoQVNB
Tl9PVEhFUl9DRkxBR1MpOworT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ1BM
VVNQTFVTRkxBR1MpOworT1RIRVJfTERGTEFHUyA9ICQoQVNBTl9PVEhFUl9MREZMQUdTKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2Uu
eGNjb25maWcgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNl
LnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5ZGFhNThhYjBjMDJkZjg1NjUyZmE4ZWY4OGI2MGNkNWE1
MTA4MDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlv
bnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsNDYgQEAKKy8vIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiQmFzZS54Y2NvbmZpZyIKKworQVJDSFMg
PSAkKEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVCk7CisKK09OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7
CisKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChNQUNfT1NfWF9WRVJTSU9OX01B
Sk9SKTsKKworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gJChNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVRfJChQTEFURk9STV9OQU1FKV8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7
CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDEwLjEwOworTUFDT1NY
X0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDExMDAgPSAxMC4xMTsKK01BQ09TWF9ERVBMT1lN
RU5UX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gMTAuMTI7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVRfbWFjb3N4XzEwMTMwMCA9IDEwLjEzOworCitHQ0NfV0FSTl9BQk9VVF9ERVBSRUNBVEVEX0ZV
TkNUSU9OUyA9IFlFUzsKK0RFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmOworCitDTEFO
R19ERUJVR19JTkZPUk1BVElPTl9MRVZFTFtzZGs9bWFjb3N4MTAuOCpdID0gZGVmYXVsdDsKK0NM
QU5HX0RFQlVHX0lORk9STUFUSU9OX0xFVkVMW3Nkaz1tYWNvc3gxMC45Kl0gPSBkZWZhdWx0Owor
CitTREtST09UID0gJChTREtST09UXyQoVVNFX0lOVEVSTkFMX1NESykpOworU0RLUk9PVF8gPSBt
YWNvc3g7CitTREtST09UX1lFUyA9IG1hY29zeC5pbnRlcm5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45YTU4ZjlkN2FmMTU3YTNkMDc5MTY1YmQ1ZDY3ZDVhOWY2ZDMzYzk4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCkBAIC0wLDAgKzEsMjE5IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMDks
IDIwMTAsIDIwMTQsIDIwMTUsIDIwMTYsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8g
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
Ky8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisvLyBUaGUgY29udGVu
dHMgb2YgdGhpcyBmaWxlIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggRmVhdHVyZURlZmluZXMu
eGNjb25maWcgaW4gSmF2YVNjcmlwdENvcmUsCisvLyBXZWJDb3JlLCBXZWJLaXQgYW5kIFdlYktp
dDIuICBBbHNvIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgRU5BQkxFX0ZFQVRVUkVfTkFNRSBt
YWNyb3MgaW4KKy8vIGJ1aWxkLXdlYmtpdCBzaG91bGQgbWF0Y2ggdGhlIHZhbHVlcyBiZWxvdywg
YnV0IHRoZXkgZG8gbm90IG5lZWQgdG8gYmUgaW4gdGhlIHNhbWUgb3JkZXIuCisKKy8vIEtlZXAg
dGhpcyBsaXN0IG9mIGZlYXR1cmVzIChub3QgZW5hYmxlZC9kaXNhYmxlZCBzdGF0ZSkgaW4gc3lu
YyB3aXRoIEZlYXR1cmVEZWZpbmVzLnZzcHJvcHMKKy8vIGFuZCBGZWF0dXJlRGVmaW5lc0NhaXJv
LnZzcHJvcHMgaW4gV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzLgorCisvLyBTZXQg
YW55IEVOQUJMRV9GRUFUVVJFX05BTUUgbWFjcm8gdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGRpc2Fi
bGUgdGhhdCBmZWF0dXJlLgorCitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9MRVNTX1RIQU5fMTAx
MjAwMCA9ICQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTEVTU19USEFOXzEwMTIwMDBfJChUQVJH
RVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTEVT
U19USEFOXzEwMTIwMDBfMTAxMDAwID0gWUVTOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTEVT
U19USEFOXzEwMTIwMDBfMTAxMTAwID0gWUVTOworCitFTkFCTEVfM0RfVFJBTlNGT1JNUyA9IEVO
QUJMRV8zRF9UUkFOU0ZPUk1TOworRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NBTlZBUyA9IDsKK0VO
QUJMRV9BQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkdbc2RrPWlwaG9uZSpdID0gRU5BQkxF
X0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORzsKKworRU5BQkxFX0FQUExFX1BBWVtzZGs9
aXBob25lKl0gPSAkKEVOQUJMRV9BUFBMRV9QQVlfJChQTEFURk9STV9OQU1FKSk7CitFTkFCTEVf
QVBQTEVfUEFZX2lwaG9uZW9zID0gRU5BQkxFX0FQUExFX1BBWTsKK0VOQUJMRV9BUFBMRV9QQVlf
aXBob25lc2ltdWxhdG9yID0gRU5BQkxFX0FQUExFX1BBWTsKK0VOQUJMRV9BUFBMRV9QQVlbc2Rr
PWlwaG9uZW9zOSpdID0gOworRU5BQkxFX0FQUExFX1BBWVtzZGs9aXBob25lc2ltdWxhdG9yOSpd
ID0gOworCitESVNBQkxFX0FQUExFX1BBWV9tYWNvc3ggPSAkKFRBUkdFVF9NQUNfT1NfWF9WRVJT
SU9OX0xFU1NfVEhBTl8xMDEyMDAwKTsKK0VOQUJMRV9BUFBMRV9QQVlbc2RrPW1hY29zeCpdID0g
JChFTkFCTEVfQVBQTEVfUEFZX0lGX05PVF8kKERJU0FCTEVfQVBQTEVfUEFZX21hY29zeCkpOwor
RU5BQkxFX0FQUExFX1BBWV9JRl9OT1RfID0gJChFTkFCTEVfQVBQTEVfUEFZX0lGX05PVF9OTyk7
CitFTkFCTEVfQVBQTEVfUEFZX0lGX05PVF9OTyA9IEVOQUJMRV9BUFBMRV9QQVk7CitFTkFCTEVf
QVBQTEVfUEFZX0lGX05PVF9ZRVMgPSA7CisKK0VOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQgPSBF
TkFCTEVfQVRUQUNITUVOVF9FTEVNRU5UOworRU5BQkxFX0FWRl9DQVBUSU9OUyA9IEVOQUJMRV9B
VkZfQ0FQVElPTlM7CitFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HID0gRU5BQkxFX0NBQ0hFX1BB
UlRJVElPTklORzsKK0VOQUJMRV9DQU5WQVNfUEFUSCA9IEVOQUJMRV9DQU5WQVNfUEFUSDsKK0VO
QUJMRV9DQU5WQVNfUFJPWFkgPSA7CitFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcgPSBFTkFCTEVf
Q0hBTk5FTF9NRVNTQUdJTkc7CitFTkFCTEVfRU5DUllQVEVEX01FRElBID0gOworRU5BQkxFX0NP
TlRFTlRfRklMVEVSSU5HW3Nkaz1hcHBsZXR2Kl0gPSA7CitFTkFCTEVfQ09OVEVOVF9GSUxURVJJ
Tkdbc2RrPWlwaG9uZSpdID0gRU5BQkxFX0NPTlRFTlRfRklMVEVSSU5HOworRU5BQkxFX0NPTlRF
TlRfRklMVEVSSU5HW3Nkaz1tYWNvc3gqXSA9IEVOQUJMRV9DT05URU5UX0ZJTFRFUklORzsKK0VO
QUJMRV9DU1NfQU5JTUFUSU9OU19MRVZFTF8yID0gRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVM
XzI7CitFTkFCTEVfQ1NTX0JPWF9ERUNPUkFUSU9OX0JSRUFLID0gRU5BQkxFX0NTU19CT1hfREVD
T1JBVElPTl9CUkVBSzsKK0VOQUJMRV9DU1NfQ09NUE9TSVRJTkcgPSBFTkFCTEVfQ1NTX0NPTVBP
U0lUSU5HOworRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTiA9IDsKK0VOQUJMRV9DU1NfR1JJ
RF9MQVlPVVQgPSBFTkFCTEVfQ1NTX0dSSURfTEFZT1VUOworRU5BQkxFX0NTU19JTUFHRV9PUklF
TlRBVElPTiA9IDsKK0VOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTiA9IDsKK0VOQUJMRV9DU1Nf
UkVHSU9OUyA9IEVOQUJMRV9DU1NfUkVHSU9OUzsKK0VOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVM
NCA9IEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNDsKK0VOQUJMRV9DU1MzX1RFWFQgPSA7CitF
TkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkgPSBFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFk7CitFTkFC
TEVfQ1VTVE9NX1NDSEVNRV9IQU5ETEVSID0gOworRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUW3Nk
az1tYWNvc3gqXSA9IEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVDsKK0VOQUJMRV9EQVRBTElTVF9F
TEVNRU5UID0gOworRU5BQkxFX0RBVEFfVFJBTlNGRVJfSVRFTVMgPSA7CitFTkFCTEVfREVWSUNF
X09SSUVOVEFUSU9OW3Nkaz1pcGhvbmUqXSA9IEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT047CitF
TkFCTEVfRkVUQ0hfQVBJID0gRU5BQkxFX0ZFVENIX0FQSTsKK0VOQUJMRV9GSUxURVJTX0xFVkVM
XzIgPSBFTkFCTEVfRklMVEVSU19MRVZFTF8yOworRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMgPSA7
CitFTkFCTEVfRlVMTFNDUkVFTl9BUElbc2RrPW1hY29zeCpdID0gRU5BQkxFX0ZVTExTQ1JFRU5f
QVBJOworRU5BQkxFX0dBTUVQQUQgPSBFTkFCTEVfR0FNRVBBRDsKK0VOQUJMRV9HQU1FUEFEW3Nk
az13YXRjaCpdID0gOworRU5BQkxFX0dBTUVQQURfREVQUkVDQVRFRCA9IDsKK0VOQUJMRV9HRU9M
T0NBVElPTiA9IEVOQUJMRV9HRU9MT0NBVElPTjsKK0VOQUJMRV9JQ09OREFUQUJBU0Vbc2RrPW1h
Y29zeCpdID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKK0VOQUJMRV9JTlRFUlNFQ1RJT05fT0JTRVJW
RVIgPSBFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSOworRU5BQkxFX1NFUlZJQ0VfQ09OVFJP
TFNbc2RrPW1hY29zeCpdID0gRU5BQkxFX1NFUlZJQ0VfQ09OVFJPTFM7CitFTkFCTEVfSU5ERVhF
RF9EQVRBQkFTRSA9IEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFOworRU5BQkxFX0lOREVYRURfREFU
QUJBU0VfSU5fV09SS0VSUyA9IEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFX0lOX1dPUktFUlM7CitF
TkFCTEVfSU5QVVRfVFlQRV9DT0xPUltzZGs9bWFjb3N4Kl0gPSBFTkFCTEVfSU5QVVRfVFlQRV9D
T0xPUjsKK0VOQUJMRV9JTlBVVF9UWVBFX0NPTE9SX1BPUE9WRVJbc2RrPW1hY29zeCpdID0gRU5B
QkxFX0lOUFVUX1RZUEVfQ09MT1JfUE9QT1ZFUjsKK0VOQUJMRV9JTlBVVF9UWVBFX0RBVEVbc2Rr
PWlwaG9uZSpdID0gRU5BQkxFX0lOUFVUX1RZUEVfREFURTsKK0VOQUJMRV9JTlBVVF9UWVBFX0RB
VEVUSU1FX0lOQ09NUExFVEUgPSA7CitFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMW3Nk
az1pcGhvbmUqXSA9IEVOQUJMRV9JTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUw7CitFTkFCTEVfSU5Q
VVRfVFlQRV9NT05USFtzZGs9aXBob25lKl0gPSBFTkFCTEVfSU5QVVRfVFlQRV9NT05USDsKK0VO
QUJMRV9JTlBVVF9UWVBFX1RJTUVbc2RrPWlwaG9uZSpdID0gRU5BQkxFX0lOUFVUX1RZUEVfVElN
RTsKK0VOQUJMRV9JTlBVVF9UWVBFX1dFRUtbc2RrPWlwaG9uZSpdID0gRU5BQkxFX0lOUFVUX1RZ
UEVfV0VFSzsKKworRU5BQkxFX0lOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMgPSBFTkFC
TEVfSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUzsKKworRU5BQkxFX1dJUkVMRVNTX1BM
QVlCQUNLX1RBUkdFVFtzZGs9aXBob25lKl0gPSBFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFS
R0VUOworRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVFtzZGs9bWFjb3N4Kl0gPSAkKEVO
QUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVRfbWFjb3N4XyQoVEFSR0VUX01BQ19PU19YX1ZF
UlNJT05fTUFKT1IpKQorRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAx
MDAwID0gOworRU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0g
RU5BQkxFX1dJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVDsKK0VOQUJMRV9XSVJFTEVTU19QTEFZQkFD
S19UQVJHRVRfbWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9XSVJFTEVTU19QTEFZQkFDS19UQVJHRVQ7
CitFTkFCTEVfV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUX21hY29zeF8xMDEzMDAgPSBFTkFCTEVf
V0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUOworCitFTkFCTEVfSU5UTCA9IEVOQUJMRV9JTlRMOwor
CitFTkFCTEVfSU9TX0dFU1RVUkVfRVZFTlRTID0gOworRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
U1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFNfaW9zX1dJVEhfSU5U
RVJOQUxfU0RLXyQoVVNFX0lOVEVSTkFMX1NESykpOworRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5U
U19pb3NfV0lUSF9JTlRFUk5BTF9TREtfWUVTID0gRU5BQkxFX0lPU19HRVNUVVJFX0VWRU5UUzsK
KworRU5BQkxFX01BQ19HRVNUVVJFX0VWRU5UUyA9IDsKK0VOQUJMRV9NQUNfR0VTVFVSRV9FVkVO
VFNbc2RrPW1hY29zeCpdID0gJChFTkFCTEVfTUFDX0dFU1RVUkVfRVZFTlRTX21hY29zeF9XSVRI
X0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKK0VOQUJMRV9NQUNfR0VTVFVSRV9F
VkVOVFNfbWFjb3N4X1dJVEhfSU5URVJOQUxfU0RLX1lFUyA9IEVOQUJMRV9NQUNfR0VTVFVSRV9F
VkVOVFM7CisKK0VOQUJMRV9URVhUX0FVVE9TSVpJTkcgPSBFTkFCTEVfVEVYVF9BVVRPU0laSU5H
OworRU5BQkxFX0RBVEFfREVURUNUSU9OID0gRU5BQkxFX0RBVEFfREVURUNUSU9OOworCitFTkFC
TEVfSU9TX1RPVUNIX0VWRU5UU1tzZGs9aXBob25lKl0gPSAkKEVOQUJMRV9JT1NfVE9VQ0hfRVZF
TlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES18kKFVTRV9JTlRFUk5BTF9TREspKTsKK0VOQUJMRV9J
T1NfVE9VQ0hfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVfSU9TX1RP
VUNIX0VWRU5UUzsKKworRU5BQkxFX0tFWUJPQVJEX0tFWV9BVFRSSUJVVEUgPSBFTkFCTEVfS0VZ
Qk9BUkRfS0VZX0FUVFJJQlVURTsKK0VOQUJMRV9LRVlCT0FSRF9DT0RFX0FUVFJJQlVURSA9IEVO
QUJMRV9LRVlCT0FSRF9DT0RFX0FUVFJJQlVURTsKK0VOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9Q
UkVGSVhFUyA9IEVOQUJMRV9MRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUzsKK0VOQUJMRV9MRUdB
Q1lfRU5DUllQVEVEX01FRElBW3Nkaz1tYWNvc3gqXSA9IEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVE
X01FRElBOworRU5BQkxFX0xFR0FDWV9OT1RJRklDQVRJT05TW3Nkaz1tYWNvc3gqXSA9IEVOQUJM
RV9MRUdBQ1lfTk9USUZJQ0FUSU9OUzsKK0VOQUJMRV9MRUdBQ1lfVkVORE9SX1BSRUZJWEVTID0g
RU5BQkxFX0xFR0FDWV9WRU5ET1JfUFJFRklYRVM7CitFTkFCTEVfTEVUVEVSUFJFU1Nbc2RrPWlw
aG9uZSpdID0gRU5BQkxFX0xFVFRFUlBSRVNTOworRU5BQkxFX0xJTktfUFJFRkVUQ0ggPSA7CitF
TkFCTEVfTUFUSE1MID0gRU5BQkxFX01BVEhNTDsKK0VOQUJMRV9NRURJQV9DQVBUVVJFW3Nkaz1p
cGhvbmUqXSA9IEVOQUJMRV9NRURJQV9DQVBUVVJFOworRU5BQkxFX01FRElBX0NPTlRST0xTX1ND
UklQVCA9IEVOQUJMRV9NRURJQV9DT05UUk9MU19TQ1JJUFQ7CitFTkFCTEVfTUVESUFfU0VTU0lP
TiA9IDsKKworRU5BQkxFX01FRElBX1NPVVJDRVtzZGs9bWFjb3N4Kl0gPSBFTkFCTEVfTUVESUFf
U09VUkNFOworCitFTkFCTEVfTUVESUFfU1RBVElTVElDUyA9IDsKK0VOQUJMRV9NRURJQV9TVFJF
QU0gPSBFTkFCTEVfTUVESUFfU1RSRUFNOworRU5BQkxFX01FVEVSX0VMRU1FTlQgPSBFTkFCTEVf
TUVURVJfRUxFTUVOVDsKK0VOQUJMRV9NSFRNTCA9IDsKK0VOQUJMRV9NT1VTRV9DVVJTT1JfU0NB
TEVbc2RrPW1hY29zeCpdID0gRU5BQkxFX01PVVNFX0NVUlNPUl9TQ0FMRTsKK0VOQUJMRV9OQVZJ
R0FUT1JfQ09OVEVOVF9VVElMUyA9IDsKK0VOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWSA9
IEVOQUJMRV9OQVZJR0FUT1JfSFdDT05DVVJSRU5DWTsKK0VOQUJMRV9OT1NOSUZGID0gOworRU5B
QkxFX05PVElGSUNBVElPTlNbc2RrPW1hY29zeCpdID0gRU5BQkxFX05PVElGSUNBVElPTlM7CitF
TkFCTEVfUERGS0lUX1BMVUdJTltzZGs9bWFjb3N4Kl0gPSBFTkFCTEVfUERGS0lUX1BMVUdJTjsK
K0VOQUJMRV9QT0lOVEVSX0xPQ0tbc2RrPW1hY29zeCpdID0gRU5BQkxFX1BPSU5URVJfTE9DSzsK
K0VOQUJMRV9QUk9YSU1JVFlfRVZFTlRTID0gOworRU5BQkxFX1BVQkxJQ19TVUZGSVhfTElTVCA9
IEVOQUJMRV9QVUJMSUNfU1VGRklYX0xJU1Q7CitFTkFCTEVfUVVPVEEgPSA7CitFTkFCTEVfUkVB
REFCTEVfU1RSRUFNX0FQSSA9IEVOQUJMRV9SRUFEQUJMRV9TVFJFQU1fQVBJOworRU5BQkxFX1JF
QURBQkxFX0JZVEVfU1RSRUFNX0FQSSA9IEVOQUJMRV9SRUFEQUJMRV9CWVRFX1NUUkVBTV9BUEk7
CitFTkFCTEVfUkVRVUVTVF9BVVRPQ09NUExFVEUgPSA7CitFTkFCTEVfUkVNT1RFX0lOU1BFQ1RP
UiA9IEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SOworRU5BQkxFX1JFU09MVVRJT05fTUVESUFfUVVF
UlkgPSA7CitFTkFCTEVfUkVTT1VSQ0VfVVNBR0UgPSBFTkFCTEVfUkVTT1VSQ0VfVVNBR0U7CitF
TkFCTEVfUlVCQkVSX0JBTkRJTkdbc2RrPW1hY29zeCpdID0gRU5BQkxFX1JVQkJFUl9CQU5ESU5H
OworRU5BQkxFX0NTU19TQ1JPTExfU05BUCA9IEVOQUJMRV9DU1NfU0NST0xMX1NOQVA7CitFTkFC
TEVfU1BFRUNIX1NZTlRIRVNJUyA9IEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTOworRU5BQkxFX1NV
QlRMRV9DUllQVE8gPSBFTkFCTEVfU1VCVExFX0NSWVBUTzsKK0VOQUJMRV9TVkdfRk9OVFMgPSBF
TkFCTEVfU1ZHX0ZPTlRTOworRU5BQkxFX1dFQl9SVEMgPSBFTkFCTEVfV0VCX1JUQzsKK0VOQUJM
RV9XUklUQUJMRV9TVFJFQU1fQVBJID0gRU5BQkxFX1dSSVRBQkxFX1NUUkVBTV9BUEk7CisKK0VO
QUJMRV9URUxFUEhPTkVfTlVNQkVSX0RFVEVDVElPTiA9IEVOQUJMRV9URUxFUEhPTkVfTlVNQkVS
X0RFVEVDVElPTjsKKworRU5BQkxFX0NTU19UUkFJTElOR19XT1JEID0gRU5BQkxFX0NTU19UUkFJ
TElOR19XT1JEOworCisvLyBGSVhNRTogUmVtb3ZlIHRoZSBVU0VfSU5URVJOQUxfU0RLIGNvbmRp
dGlvbiBvbmNlIHdlIHN1cHBvcnQgdG91Y2ggZXZlbnRzIHdoZW4gYnVpbGRpbmcgZm9yIGlPUyB3
aXRoCisvLyB0aGUgcHVibGljIFNESy4gV2Ugd2lsbCBhbHNvIG5lZWQgdG8gdXBkYXRlIEZlYXR1
cmVEZWZpbmVzLmguCitFTkFCTEVfVE9VQ0hfRVZFTlRTW3Nkaz1pcGhvbmUqXSA9ICQoRU5BQkxF
X1RPVUNIX0VWRU5UU19pb3NfV0lUSF9JTlRFUk5BTF9TREtfJChVU0VfSU5URVJOQUxfU0RLKSk7
CitFTkFCTEVfVE9VQ0hfRVZFTlRTX2lvc19XSVRIX0lOVEVSTkFMX1NES19ZRVMgPSBFTkFCTEVf
VE9VQ0hfRVZFTlRTOworCitFTkFCTEVfVE9VQ0hfSUNPTl9MT0FESU5HID0gOworRU5BQkxFX1VT
RVJTRUxFQ1RfQUxMID0gRU5BQkxFX1VTRVJTRUxFQ1RfQUxMOworRU5BQkxFX1ZJREVPID0gRU5B
QkxFX1ZJREVPOworRU5BQkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFW3Nkaz1pcGhvbmUqXSA9
IEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERTsKK0VOQUJMRV9WSURFT19QUkVTRU5UQVRJ
T05fTU9ERVtzZGs9bWFjb3N4Kl0gPSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERV9t
YWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpCitFTkFCTEVfVklERU9fUFJF
U0VOVEFUSU9OX01PREVfbWFjb3N4XzEwMTIwMCA9IEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05f
TU9ERTsKK0VOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERV9tYWNvc3hfMTAxMzAwID0gRU5B
QkxFX1ZJREVPX1BSRVNFTlRBVElPTl9NT0RFOworRU5BQkxFX1ZJREVPX1RSQUNLID0gRU5BQkxF
X1ZJREVPX1RSQUNLOworRU5BQkxFX0RBVEFDVUVfVkFMVUUgPSBFTkFCTEVfREFUQUNVRV9WQUxV
RTsKK0VOQUJMRV9WSUVXX01PREVfQ1NTX01FRElBID0gOworRU5BQkxFX1dFQkFTU0VNQkxZID0g
OworRU5BQkxFX1dFQkdMID0gRU5BQkxFX1dFQkdMOworRU5BQkxFX1dFQkdMMiA9IEVOQUJMRV9X
RUJHTDI7CitFTkFCTEVfV0VCX0FOSU1BVElPTlMgPSBFTkFCTEVfV0VCX0FOSU1BVElPTlM7CitF
TkFCTEVfV0VCX0FVRElPID0gRU5BQkxFX1dFQl9BVURJTzsKK0VOQUJMRV9XRUJfUkVQTEFZID0g
JChFTkFCTEVfV0VCX1JFUExBWV8kKFBMQVRGT1JNX05BTUUpXyQoQ09ORklHVVJBVElPTikpOwor
RU5BQkxFX1dFQl9SRVBMQVlfbWFjb3N4X0RlYnVnID0gRU5BQkxFX1dFQl9SRVBMQVk7CitFTkFC
TEVfV0VCX1JFUExBWV9tYWNvc3hfUmVsZWFzZSA9IEVOQUJMRV9XRUJfUkVQTEFZOworRU5BQkxF
X1dFQl9TT0NLRVRTID0gRU5BQkxFX1dFQl9TT0NLRVRTOworCitFTkFCTEVfV0VCX1RJTUlORyA9
IEVOQUJMRV9XRUJfVElNSU5HOworRU5BQkxFX1VTRVJfVElNSU5HID0gOworCitFTkFCTEVfWFNM
VCA9IEVOQUJMRV9YU0xUOworCitFTkFCTEVfRlRMX0pJVFtzZGs9bWFjb3N4Kl0gPSBFTkFCTEVf
RlRMX0pJVDsKK0VOQUJMRV9GVExfSklUW3Nkaz1pcGhvbmVvcypdID0gRU5BQkxFX0ZUTF9KSVQ7
CisKK0VOQUJMRV9WQVJJQVRJT05fRk9OVFNbc2RrPWlwaG9uZSpdID0gJChFTkFCTEVfVkFSSUFU
SU9OX0ZPTlRTXyQoUExBVEZPUk1fTkFNRSkpOworRU5BQkxFX1ZBUklBVElPTl9GT05UU19pcGhv
bmVvcyA9IEVOQUJMRV9WQVJJQVRJT05fRk9OVFM7CitFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTX2lw
aG9uZXNpbXVsYXRvciA9IEVOQUJMRV9WQVJJQVRJT05fRk9OVFM7CitFTkFCTEVfVkFSSUFUSU9O
X0ZPTlRTW3Nkaz1pcGhvbmVvczkqXSA9IDsKK0VOQUJMRV9WQVJJQVRJT05fRk9OVFNbc2RrPWlw
aG9uZXNpbXVsYXRvcjkqXSA9IDsKKworRElTQUJMRV9WQVJJQVRJT05fRk9OVFNfbWFjb3N4ID0g
JChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9MRVNTX1RIQU5fMTAxMjAwMCk7CitFTkFCTEVfVkFS
SUFUSU9OX0ZPTlRTW3Nkaz1tYWNvc3gqXSA9ICQoRU5BQkxFX1ZBUklBVElPTl9GT05UU19JRl9O
T1RfJChESVNBQkxFX1ZBUklBVElPTl9GT05UU19tYWNvc3gpKTsKK0VOQUJMRV9WQVJJQVRJT05f
Rk9OVFNfSUZfTk9UXyA9ICQoRU5BQkxFX1ZBUklBVElPTl9GT05UU19JRl9OT1RfTk8pOworRU5B
QkxFX1ZBUklBVElPTl9GT05UU19JRl9OT1RfTk8gPSBFTkFCTEVfVkFSSUFUSU9OX0ZPTlRTOwor
RU5BQkxFX1ZBUklBVElPTl9GT05UU19JRl9OT1RfWUVTID0gOworCitGRUFUVVJFX0RFRklORVMg
PSAkKEVOQUJMRV8zRF9UUkFOU0ZPUk1TKSAkKEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMp
ICQoRU5BQkxFX0FDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykgJChFTkFCTEVfQVBQTEVf
UEFZKSAkKEVOQUJMRV9BVFRBQ0hNRU5UX0VMRU1FTlQpICQoRU5BQkxFX0FWRl9DQVBUSU9OUykg
JChFTkFCTEVfQ0FDSEVfUEFSVElUSU9OSU5HKSAkKEVOQUJMRV9DQU5WQVNfUEFUSCkgJChFTkFC
TEVfQ0FOVkFTX1BST1hZKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ09O
VEVOVF9GSUxURVJJTkcpICQoRU5BQkxFX0NTU19BTklNQVRJT05TX0xFVkVMXzIpICQoRU5BQkxF
X0NTU19CT1hfREVDT1JBVElPTl9CUkVBSykgJChFTkFCTEVfQ1NTX0NPTVBPU0lUSU5HKSAkKEVO
QUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04pICQoRU5BQkxFX0NTU19HUklEX0xBWU9VVCkgJChF
TkFCTEVfQ1NTX0lNQUdFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElP
TikgJChFTkFCTEVfQ1NTX1JFR0lPTlMpICQoRU5BQkxFX0NTU19TQ1JPTExfU05BUCkgJChFTkFC
TEVfQ1NTX1NFTEVDVE9SU19MRVZFTDQpICQoRU5BQkxFX0NTU19UUkFJTElOR19XT1JEKSAkKEVO
QUJMRV9DU1MzX1RFWFQpICQoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZKSAkKEVOQUJMRV9DVVNU
T01fU0NIRU1FX0hBTkRMRVIpICQoRU5BQkxFX0RBU0hCT0FSRF9TVVBQT1JUKSAkKEVOQUJMRV9E
QVRBX1RSQU5TRkVSX0lURU1TKSAkKEVOQUJMRV9EQVRBQ1VFX1ZBTFVFKSAkKEVOQUJMRV9EQVRB
TElTVF9FTEVNRU5UKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0VOQ1JZ
UFRFRF9NRURJQSkgJChFTkFCTEVfRkVUQ0hfQVBJKSAkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIp
ICQoRU5BQkxFX0ZPTlRfTE9BRF9FVkVOVFMpICQoRU5BQkxFX0ZUTF9KSVQpICQoRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJKSAkKEVOQUJMRV9HQU1FUEFEX0RFUFJFQ0FURUQpICQoRU5BQkxFX0dBTUVQ
QUQpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxF
X0lOREVYRURfREFUQUJBU0VfSU5fV09SS0VSUykgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkg
JChFTkFCTEVfSU5QVVRfVFlQRV9DT0xPUl9QT1BPVkVSKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0NP
TE9SKSAkKEVOQUJMRV9JTlBVVF9UWVBFX0RBVEUpICQoRU5BQkxFX0lOUFVUX1RZUEVfREFURVRJ
TUVfSU5DT01QTEVURSkgJChFTkFCTEVfSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKSAkKEVOQUJM
RV9JTlBVVF9UWVBFX01PTlRIKSAkKEVOQUJMRV9JTlBVVF9UWVBFX1RJTUUpICQoRU5BQkxFX0lO
UFVUX1RZUEVfV0VFSykgJChFTkFCTEVfSU5URVJTRUNUSU9OX09CU0VSVkVSKSAkKEVOQUJMRV9J
TlRMKSAkKEVOQUJMRV9JT1NfR0VTVFVSRV9FVkVOVFMpICQoRU5BQkxFX0lPU19UT1VDSF9FVkVO
VFMpICQoRU5BQkxFX0pJVCkgJChFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSkgJChFTkFC
TEVfS0VZQk9BUkRfQ09ERV9BVFRSSUJVVEUpICQoRU5BQkxFX0xFR0FDWV9DU1NfVkVORE9SX1BS
RUZJWEVTKSAkKEVOQUJMRV9MRUdBQ1lfRU5DUllQVEVEX01FRElBKSAkKEVOQUJMRV9MRUdBQ1lf
Tk9USUZJQ0FUSU9OUykgJChFTkFCTEVfTEVHQUNZX1ZFTkRPUl9QUkVGSVhFUykgJChFTkFCTEVf
TEVUVEVSUFJFU1MpICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFX01BQ19HRVNUVVJF
X0VWRU5UUykgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRURJQV9DQVBUVVJFKSAkKEVOQUJM
RV9NRURJQV9DT05UUk9MU19TQ1JJUFQpICQoRU5BQkxFX01FRElBX1NFU1NJT04pICQoRU5BQkxF
X01FRElBX1NPVVJDRSkgJChFTkFCTEVfTUVESUFfU1RBVElTVElDUykgJChFTkFCTEVfTUVESUFf
U1RSRUFNKSAkKEVOQUJMRV9NRVRFUl9FTEVNRU5UKSAkKEVOQUJMRV9NSFRNTCkgJChFTkFCTEVf
TU9VU0VfQ1VSU09SX1NDQUxFKSAkKEVOQUJMRV9OQVZJR0FUT1JfQ09OVEVOVF9VVElMUykgJChF
TkFCTEVfTkFWSUdBVE9SX0hXQ09OQ1VSUkVOQ1kpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQo
RU5BQkxFX1BERktJVF9QTFVHSU4pICQoRU5BQkxFX1BPSU5URVJfTE9DSykgJChFTkFCTEVfUFJP
WElNSVRZX0VWRU5UUykgJChFTkFCTEVfUFVCTElDX1NVRkZJWF9MSVNUKSAkKEVOQUJMRV9RVU9U
QSkgJChFTkFCTEVfUkVBREFCTEVfU1RSRUFNX0FQSSkgJChFTkFCTEVfUkVBREFCTEVfQllURV9T
VFJFQU1fQVBJKSAkKEVOQUJMRV9SRU1PVEVfSU5TUEVDVE9SKSAkKEVOQUJMRV9SRVFVRVNUX0FV
VE9DT01QTEVURSkgJChFTkFCTEVfUkVTT0xVVElPTl9NRURJQV9RVUVSWSkgJChFTkFCTEVfUkVT
T1VSQ0VfVVNBR0UpICQoRU5BQkxFX1JVQkJFUl9CQU5ESU5HKSAkKEVOQUJMRV9TRVJWSUNFX0NP
TlRST0xTKSAkKEVOQUJMRV9TUEVFQ0hfU1lOVEhFU0lTKSAkKEVOQUJMRV9TVUJUTEVfQ1JZUFRP
KSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9O
KSAkKEVOQUJMRV9URVhUX0FVVE9TSVpJTkcpICQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJChFTkFC
TEVfVE9VQ0hfSUNPTl9MT0FESU5HKSAkKEVOQUJMRV9VU0VSU0VMRUNUX0FMTCkgJChFTkFCTEVf
VkFSSUFUSU9OX0ZPTlRTKSAkKEVOQUJMRV9WSURFT19QUkVTRU5UQVRJT05fTU9ERSkgJChFTkFC
TEVfVklERU9fVFJBQ0spICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9WSUVXX01PREVfQ1NTX01F
RElBKSAkKEVOQUJMRV9XRUJfQU5JTUFUSU9OUykgJChFTkFCTEVfV0VCX0FVRElPKSAkKEVOQUJM
RV9XRUJfUkVQTEFZKSAkKEVOQUJMRV9XRUJfUlRDKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChF
TkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfVVNFUl9USU1JTkcpICQoRU5BQkxFX1dFQkFTU0VN
QkxZKSAkKEVOQUJMRV9XRUJHTCkgJChFTkFCTEVfV0VCR0wyKSAkKEVOQUJMRV9XSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpICQoRU5BQkxFX1dSSVRBQkxFX1NUUkVBTV9BUEkpICQoRU5BQkxFX1hT
TFQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL1BBTC54
Y2NvbmZpZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9QQUwueGNjb25maWcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGQ1Y2QxNDM2NzM5OGViODUxY2VmZWM4OTk3YzA1ZTFiNjIwMzRmYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9QQUwueGNj
b25maWcKQEAgLTAsMCArMSw4NCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8g
YXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorCisjaW5jbHVkZSAiRmVhdHVyZURlZmluZXMueGNjb25maWciCisjaW5jbHVkZSAiVmVyc2lv
bi54Y2NvbmZpZyIKKworR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVG
SU5FUykgJChGRUFUVVJFX0RFRklORVMpICQoaW5oZXJpdGVkKTsKKworV0tfWENPREVfU1VQUE9S
VFNfVEVYVF9CQVNFRF9TVFVCUyA9ICQoV0tfTk9UXyQoV0tfRU1QVFlfJChUQVBJX1ZFUklGWV9N
T0RFKSkpOworV0tfUFJJVkFURV9GUkFNRVdPUktTX0RJUiA9ICQoV0tfUFJJVkFURV9GUkFNRVdP
UktTX0RJUl8kKFVTRV9JTlRFUk5BTF9TREspKTsKK1dLX1BSSVZBVEVfRlJBTUVXT1JLU19ESVJf
WUVTID0gJChQUk9EVUNUSU9OX0ZSQU1FV09SS1NfRElSKTsKK1dLX1BSSVZBVEVfRlJBTUVXT1JL
U19ESVJfW3Nkaz1pcGhvbmVzaW11bGF0b3IqXSA9ICQoUFJPRFVDVElPTl9GUkFNRVdPUktTX0RJ
Uik7CitXS19QUklWQVRFX0ZSQU1FV09SS1NfRElSX1tzZGs9aXBob25lb3MqXSA9ICQoV0tfUFJJ
VkFURV9GUkFNRVdPUktTX0RJUl9pcGhvbmVvc18kKFdLX1hDT0RFX1NVUFBPUlRTX1RFWFRfQkFT
RURfU1RVQlMpKTsKK1dLX1BSSVZBVEVfRlJBTUVXT1JLU19ESVJfaXBob25lb3NfWUVTID0gJChT
UkNST09UKS8uLi8uLi9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJz
L2lPUy8kKFdLX1RBUkdFVF9JT1NfVkVSU0lPTl9NQUpPUik7CitXS19QUklWQVRFX0ZSQU1FV09S
S1NfRElSX2lwaG9uZW9zX05PID0gJChQUk9EVUNUSU9OX0ZSQU1FV09SS1NfRElSKTsKKworRlJB
TUVXT1JLX1NFQVJDSF9QQVRIU1tzZGs9aXBob25lKl0gPSAkKEZSQU1FV09SS19TRUFSQ0hfUEFU
SFNfaW9zXyQoQ09ORklHVVJBVElPTikpOworRlJBTUVXT1JLX1NFQVJDSF9QQVRIU19pb3NfRGVi
dWcgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikgJChXS19QUklWQVRFX0ZSQU1FV09SS1NfRElSKTsK
K0ZSQU1FV09SS19TRUFSQ0hfUEFUSFNfaW9zX1JlbGVhc2UgPSAkKEZSQU1FV09SS19TRUFSQ0hf
UEFUSFNfaW9zX0RlYnVnKTsKK0ZSQU1FV09SS19TRUFSQ0hfUEFUSFNfaW9zX1Byb2R1Y3Rpb24g
PSAkKFBST0RVQ1RJT05fRlJBTUVXT1JLU19ESVIpOworRlJBTUVXT1JLX1NFQVJDSF9QQVRIU1tz
ZGs9bWFjb3N4Kl0gPSAkKFdLX1FVT1RFRF9PVkVSUklERV9GUkFNRVdPUktTX0RJUikgJChpbmhl
cml0ZWQpICQoU0RLUk9PVCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3M7
CisKK09USEVSX0NGTEFHUyA9ICQoaW5oZXJpdGVkKSAtaWZyYW1ld29yayAkKFNES1JPT1QpJChT
WVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvQ2FyYm9uLmZyYW1ld29yay9GcmFtZXdvcmtz
IC1pZnJhbWV3b3JrICQoU0RLUk9PVCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9B
cHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9GcmFtZXdvcmtzIC1pZnJhbWV3b3JrICQoU0RL
Uk9PVCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3
b3JrL0ZyYW1ld29ya3MgLWlmcmFtZXdvcmsgJChTREtST09UKSQoU1lTVEVNX0xJQlJBUllfRElS
KS9GcmFtZXdvcmtzL1F1YXJ0ei5mcmFtZXdvcmsvRnJhbWV3b3JrcyAtaWZyYW1ld29yayAkKFNE
S1JPT1QpJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzOworT1RIRVJfQ1BM
VVNQTFVTRkxBR1MgPSAkKE9USEVSX0NGTEFHUyk7CisKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSBQ
QUwgRm9yd2FyZGluZ0hlYWRlcnMgaWN1IC91c3IvaW5jbHVkZS9saWJ4c2x0IC91c3IvaW5jbHVk
ZS9saWJ4bWwyICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUiICQoSEVB
REVSX1NFQVJDSF9QQVRIUyk7CitJTlNUQUxMX1BBVEggPSAkKElOU1RBTExfUEFUSF8kKENPTkZJ
R1VSQVRJT04pKTsKK0lOU1RBTExfUEFUSF9Qcm9kdWN0aW9uID0gL3Vzci9sb2NhbC9saWI7CitJ
TlNUQUxMSERSU19DT1BZX1BIQVNFID0gWUVTOworSU5TVEFMTEhEUlNfU0NSSVBUX1BIQVNFID0g
WUVTOworUFJPRFVDVF9OQU1FID0gUEFMOworUFJPRFVDVF9CVU5ETEVfSURFTlRJRklFUiA9IGNv
bS5hcHBsZS4kKFBST0RVQ1RfTkFNRTpyZmMxMDM0aWRlbnRpZmllcik7CisKK1dLX1BSRUZJWEVE
X0lQSE9ORU9TX0RFUExPWU1FTlRfVEFSR0VUID0gViQoSVBIT05FT1NfREVQTE9ZTUVOVF9UQVJH
RVQpOworCitOT1JNQUxfUFJPRFVDVElPTl9GUkFNRVdPUktTX0RJUltzZGs9aXBob25lKl0gPSAk
KFNES1JPT1QpJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzOworTk9STUFM
X1BST0RVQ1RJT05fRlJBTUVXT1JLU19ESVJbc2RrPW1hY29zeCpdID0gJChORVhUX1JPT1QpJChT
WVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3M7CisKK1BST0RVQ1RJT05fRlJBTUVXT1JLU19E
SVJbc2RrPWlwaG9uZSpdID0gJChOT1JNQUxfUFJPRFVDVElPTl9GUkFNRVdPUktTX0RJUik7CitQ
Uk9EVUNUSU9OX0ZSQU1FV09SS1NfRElSID0gJChQUk9EVUNUSU9OX0ZSQU1FV09SS1NfRElSX1VT
RV9PVkVSUklERV9GUkFNRVdPUktTX0RJUl8kKFdLX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJ
UikpOworUFJPRFVDVElPTl9GUkFNRVdPUktTX0RJUl9VU0VfT1ZFUlJJREVfRlJBTUVXT1JLU19E
SVJfTk8gPSAkKE5PUk1BTF9QUk9EVUNUSU9OX0ZSQU1FV09SS1NfRElSKTsKK1BST0RVQ1RJT05f
RlJBTUVXT1JLU19ESVJfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1lFUyA9ICQoV0tfT1ZF
UlJJREVfRlJBTUVXT1JLU19ESVIpOworCitFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU1tzZGs9
aXBob25lKl0gPSAqLnRpZmYgKkN1cnNvci5wbmc7CitFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1F
U1tzZGs9bWFjb3N4Kl0gPSAqSU9TLmggKklPUy5jcHAgKklPUy5tbTsKKworV0tfRU1QVFlfID0g
WUVTOworV0tfTk9UXyA9IFlFUzsKK1dLX05PVF9ZRVMgPSBOTzsKKworV0tfVVNFX09WRVJSSURF
X0ZSQU1FV09SS1NfRElSID0gJChXS19OT1RfJChXS19FTVBUWV8kKFdLX09WRVJSSURFX0ZSQU1F
V09SS1NfRElSKSkpOworCitXS19PVkVSUklERV9GUkFNRVdPUktTX0RJUiA9ICQoV0tfT1ZFUlJJ
REVfRlJBTUVXT1JLU19ESVJfVVNFX1NUQUdJTkdfSU5TVEFMTF9QQVRIXyQoVVNFX1NUQUdJTkdf
SU5TVEFMTF9QQVRIKSk7CitXS19PVkVSUklERV9GUkFNRVdPUktTX0RJUl9VU0VfU1RBR0lOR19J
TlNUQUxMX1BBVEhfWUVTID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1N0YWdlZEZyYW1ld29ya3Mv
U2FmYXJpOworCitXS19RVU9URURfT1ZFUlJJREVfRlJBTUVXT1JLU19ESVIgPSAkKFdLX1FVT1RF
RF9PVkVSUklERV9GUkFNRVdPUktTX0RJUl8kKFdLX1VTRV9PVkVSUklERV9GUkFNRVdPUktTX0RJ
UikpOworV0tfUVVPVEVEX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1lFUyA9ICIkKFdLX09WRVJS
SURFX0ZSQU1FV09SS1NfRElSKSI7CisKK1NLSVBfSU5TVEFMTCA9ICQoU0tJUF9JTlNUQUxMXyQo
Rk9SQ0VfVE9PTF9JTlNUQUxMKSk7CitTS0lQX0lOU1RBTExfID0gWUVTOworU0tJUF9JTlNUQUxM
X05PID0gWUVTOworU0tJUF9JTlNUQUxMX1lFUyA9IE5POworCitFWEVDVVRBQkxFX1BSRUZJWCA9
IGxpYjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9ucy9WZXJz
aW9uLnhjY29uZmlnIGIvU291cmNlL1dlYkNvcmUvUEFML0NvbmZpZ3VyYXRpb25zL1ZlcnNpb24u
eGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY3ZmNjZjg2NzEwODY2MmVjMzcyNzU0MWE0YTZhOGU4Y2Qw
OTk4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9Db25maWd1cmF0aW9u
cy9WZXJzaW9uLnhjY29uZmlnCkBAIC0wLDAgKzEsNjAgQEAKKy8vIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisv
LyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKworTUFKT1JfVkVSU0lPTiA9IDYwNDsKK01JTk9SX1ZFUlNJT04gPSAx
OworVElOWV9WRVJTSU9OID0gNTsKK01JQ1JPX1ZFUlNJT04gPSAwOworTkFOT19WRVJTSU9OID0g
MDsKK0ZVTExfVkVSU0lPTiA9ICQoTUFKT1JfVkVSU0lPTikuJChNSU5PUl9WRVJTSU9OKS4kKFRJ
TllfVkVSU0lPTik7CisKKy8vIFRoZSBidW5kbGUgdmVyc2lvbiBhbmQgc2hvcnQgdmVyc2lvbiBz
dHJpbmcgYXJlIHNldCBiYXNlZCBvbiB0aGUgY3VycmVudCBidWlsZCBjb25maWd1cmF0aW9uLCBz
ZWUgYmVsb3cuCitCVU5ETEVfVkVSU0lPTiA9ICQoQlVORExFX1ZFUlNJT05fJChDT05GSUdVUkFU
SU9OKSk7CitTSE9SVF9WRVJTSU9OX1NUUklORyA9ICQoU0hPUlRfVkVSU0lPTl9TVFJJTkdfJChD
T05GSUdVUkFUSU9OKSkKKworLy8gVGhlIHN5c3RlbSB2ZXJzaW9uIHByZWZpeCBpcyBiYXNlZCBv
biB0aGUgY3VycmVudCBzeXN0ZW0gdmVyc2lvbi4KK1NZU1RFTV9WRVJTSU9OX1BSRUZJWFtzZGs9
aXBob25lKl0gPSA4OworU1lTVEVNX1ZFUlNJT05fUFJFRklYID0gJChTWVNURU1fVkVSU0lPTl9Q
UkVGSVhfJChQTEFURk9STV9OQU1FKV8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7
CitTWVNURU1fVkVSU0lPTl9QUkVGSVhfbWFjb3N4XzEwMTAwMCA9IDEwOworU1lTVEVNX1ZFUlNJ
T05fUFJFRklYX21hY29zeF8xMDExMDAgPSAxMTsKK1NZU1RFTV9WRVJTSU9OX1BSRUZJWF9tYWNv
c3hfMTAxMjAwID0gMTI7CitTWVNURU1fVkVSU0lPTl9QUkVGSVhfbWFjb3N4XzEwMTMwMCA9IDEz
OworCisvLyBUaGUgcHJvZHVjdGlvbiBidWlsZCBhbHdheXMgdXNlcyB0aGUgZnVsbCB2ZXJzaW9u
IHdpdGggYSBzeXN0ZW0gdmVyc2lvbiBwcmVmaXguCitCVU5ETEVfVkVSU0lPTl9Qcm9kdWN0aW9u
ID0gJChTWVNURU1fVkVSU0lPTl9QUkVGSVgpJChGVUxMX1ZFUlNJT04pOworQlVORExFX1ZFUlNJ
T05fID0gJChCVU5ETEVfVkVSU0lPTl9Qcm9kdWN0aW9uKTsKKworLy8gVGhlIHByb2R1Y3Rpb24g
YnVpbGQgYWx3YXlzIHVzZXMgdGhlIG1ham9yIHZlcnNpb24gd2l0aCBhIHN5c3RlbSB2ZXJzaW9u
IHByZWZpeAorU0hPUlRfVkVSU0lPTl9TVFJJTkdfUHJvZHVjdGlvbiA9ICQoU1lTVEVNX1ZFUlNJ
T05fUFJFRklYKSQoTUFKT1JfVkVSU0lPTik7CitTSE9SVF9WRVJTSU9OX1NUUklOR18gPSAkKFNI
T1JUX1ZFUlNJT05fU1RSSU5HX1Byb2R1Y3Rpb24pOworCisvLyBMb2NhbCBidWlsZHMgYXJlIHRo
ZSBmdWxsIHZlcnNpb24gd2l0aCBhIHBsdXMgc3VmZml4LgorQlVORExFX1ZFUlNJT05fUmVsZWFz
ZSA9ICQoRlVMTF9WRVJTSU9OKSs7CitCVU5ETEVfVkVSU0lPTl9EZWJ1ZyA9ICQoQlVORExFX1ZF
UlNJT05fUmVsZWFzZSk7CisKKy8vIExvY2FsIGJ1aWxkcyB1c2UgdGhlIG1ham9yIHZlcnNpb24g
d2l0aCBhIHBsdXMgc3VmZml4CitTSE9SVF9WRVJTSU9OX1NUUklOR19SZWxlYXNlID0gJChNQUpP
Ul9WRVJTSU9OKSs7CitTSE9SVF9WRVJTSU9OX1NUUklOR19EZWJ1ZyA9ICQoU0hPUlRfVkVSU0lP
Tl9TVFJJTkdfUmVsZWFzZSk7CisKK0RZTElCX0NPTVBBVElCSUxJVFlfVkVSU0lPTiA9IDE7CitE
WUxJQl9DVVJSRU5UX1ZFUlNJT04gPSAkKEZVTExfVkVSU0lPTik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjBjMjk1
MWQ3MGM0MjkxZThmMWU3ZDFjM2MzNTliNzIyMTg2MTNkYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMCwwICsx
LDI0NyBAQAorLy8gISQqVVRGOCokIQoreworCWFyY2hpdmVWZXJzaW9uID0gMTsKKwljbGFzc2Vz
ID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDQ2OworCW9iamVjdHMgPSB7CisKKy8qIEJlZ2lu
IFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTFDMDlEMDUzMUUzMUM0NDEwMDcyNUYxOCAvKiBD
cnlwdG9EaWdlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDMDlEMDUyMUUzMUM0NDEwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3QuaCAqLzsgfTsKKwkJ
MUMwOUQwNTYxRTMxQzQ2NTAwNzI1RjE4IC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzA5RDA1NTFF
MzFDNDY1MDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLzsgfTsKKwkJ
MUMwOUQwNTgxRTMxQzU3RTAwNzI1RjE4IC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMwOUQwNTcxRTMxQzU3RTAwNzI1RjE4IC8qIGNv
bmZpZy5oICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJlZ2lu
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQkxQzA5RDAzRDFFMzFDMzI4MDA3MjVGMTgg
LyogbGliUEFMLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYlBBTC5hOyBzb3Vy
Y2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxQzA5RDA1MjFFMzFDNDQxMDA3MjVG
MTggLyogQ3J5cHRvRGlnZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENy
eXB0b0RpZ2VzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzA5RDA1NTFFMzFD
NDY1MDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHA7IHBh
dGggPSBjb21tb25jcnlwdG8vQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwOUQwNTcxRTMxQzU3RTAwNzI1RjE4IC8qIGNvbmZpZy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUMwOUQwNUQxRTMxQzc3QTAwNzI1RjE4IC8qIFBBTC54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBQQUwueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDMDlEMDYyMUUzMUVDMjgwMDcyNUYxOCAvKiBEZWJ1Z1Jl
bGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxl
YXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzA5RDA2MzFFMzFF
QzMxMDA3MjVGMTggLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzY3Q0VB
MTFFMzJFREE4MDBGODBGMkUgLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDNjdDRUEyMUUzMkVFMjYwMEY4MEYyRSAvKiBWZXJzaW9uLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFZlcnNpb24ueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJ
MUMwOUQwM0ExRTMxQzMyODAwNzI1RjE4IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJMUMwOUQwMzQxRTMxQzMyODAwNzI1
RjE4ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDA1
QzFFMzFDNzMzMDA3MjVGMTggLyogQ29uZmlndXJhdGlvbnMgKi8sCisJCQkJMUMwOUQwNTcxRTMx
QzU3RTAwNzI1RjE4IC8qIGNvbmZpZy5oICovLAorCQkJCTFDMDlEMDNGMUUzMUMzMjgwMDcyNUYx
OCAvKiBwYWwgKi8sCisJCQkJMUMwOUQwM0UxRTMxQzMyODAwNzI1RjE4IC8qIFByb2R1Y3RzICov
LAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTFDMDlEMDNFMUUz
MUMzMjgwMDcyNUYxOCAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMUMwOUQwM0QxRTMxQzMyODAwNzI1RjE4IC8qIGxpYlBBTC5hICov
LAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCTFDMDlEMDNGMUUzMUMzMjgwMDcyNUYxOCAvKiBwYWwgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDUxMUUzMUM0MTIwMDcyNUYx
OCAvKiBjcnlwdG8gKi8sCisJCQkpOworCQkJcGF0aCA9IHBhbDsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisJCTFDMDlEMDUxMUUzMUM0MTIwMDcyNUYxOCAvKiBjcnlwdG8gKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFDMDlEMDU0MUUz
MUM0NTIwMDcyNUYxOCAvKiBjb21tb25jcnlwdG8gKi8sCisJCQkJMUMwOUQwNTIxRTMxQzQ0MTAw
NzI1RjE4IC8qIENyeXB0b0RpZ2VzdC5oICovLAorCQkJKTsKKwkJCXBhdGggPSBjcnlwdG87CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQzA5RDA1NDFFMzFDNDUyMDA3MjVG
MTggLyogY29tbW9uY3J5cHRvICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQkxQzA5RDA1NTFFMzFDNDY1MDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Q29tbW9u
Q3J5cHRvLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gY29tbW9uY3J5cHRvOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJMUMwOUQwNUMxRTMxQzczMzAwNzI1RjE4IC8qIENv
bmZpZ3VyYXRpb25zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkxQzY3Q0VBMjFFMzJFRTI2MDBGODBGMkUgLyogVmVyc2lvbi54Y2NvbmZpZyAqLywKKwkJ
CQkxQzY3Q0VBMTFFMzJFREE4MDBGODBGMkUgLyogRmVhdHVyZURlZmluZXMueGNjb25maWcgKi8s
CisJCQkJMUMwOUQwNUQxRTMxQzc3QTAwNzI1RjE4IC8qIFBBTC54Y2NvbmZpZyAqLywKKwkJCQkx
QzA5RDA2MjFFMzFFQzI4MDA3MjVGMTggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovLAorCQkJ
CTFDMDlEMDYzMUUzMUVDMzEwMDcyNUYxOCAvKiBCYXNlLnhjY29uZmlnICovLAorCQkJKTsKKwkJ
CXBhdGggPSBDb25maWd1cmF0aW9uczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CisvKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhIZWFkZXJzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCisJCTFDMDlEMDNCMUUzMUMzMjgwMDcyNUYxOCAvKiBIZWFkZXJzICov
ID0geworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMUMwOUQwNTgxRTMxQzU3RTAwNzI1RjE4
IC8qIGNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUMwOUQwNTMxRTMxQzQ0MTAwNzI1RjE4
IC8qIENyeXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYSGVhZGVyc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLwor
CQkxQzA5RDAzQzFFMzFDMzI4MDA3MjVGMTggLyogUEFMICovID0geworCQkJaXNhID0gUEJYTmF0
aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDFDMDlEMDQ4MUUzMUMzMjgw
MDcyNUYxOCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAi
UEFMIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTFDMDlEMDM5MUUzMUMzMjgwMDcyNUYx
OCAvKiBTb3VyY2VzICovLAorCQkJCTFDMDlEMDNBMUUzMUMzMjgwMDcyNUYxOCAvKiBGcmFtZXdv
cmtzICovLAorCQkJCTFDMDlEMDNCMUUzMUMzMjgwMDcyNUYxOCAvKiBIZWFkZXJzICovLAorCQkJ
KTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsK
KwkJCW5hbWUgPSBQQUw7CisJCQlwcm9kdWN0TmFtZSA9IFBBTDsKKwkJCXByb2R1Y3RSZWZlcmVu
Y2UgPSAxQzA5RDAzRDFFMzFDMzI4MDA3MjVGMTggLyogbGliUEFMLmEgKi87CisJCQlwcm9kdWN0
VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKKy8q
IEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KKwkJMUMwOUQwMzUxRTMxQzMyODAwNzI1RjE4IC8qIFByb2plY3Qgb2JqZWN0ICov
ID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFVw
Z3JhZGVDaGVjayA9IDA4MzA7CisJCQkJVGFyZ2V0QXR0cmlidXRlcyA9IHsKKwkJCQkJMUMwOUQw
M0MxRTMxQzMyODAwNzI1RjE4ID0geworCQkJCQkJQ3JlYXRlZE9uVG9vbHNWZXJzaW9uID0gOC4z
OworCQkJCQkJUHJvdmlzaW9uaW5nU3R5bGUgPSBBdXRvbWF0aWM7CisJCQkJCX07CisJCQkJfTsK
KwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMUMwOUQwMzgxRTMxQzMyODAwNzI1
RjE4IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiUEFMIiAqLzsK
KwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMiI7CisJCQlkZXZlbG9wbWVudFJl
Z2lvbiA9IEVuZ2xpc2g7CisJCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKKwkJCWtub3du
UmVnaW9ucyA9ICgKKwkJCQlFbmdsaXNoLAorCQkJCUphcGFuZXNlLAorCQkJCUZyZW5jaCwKKwkJ
CQlHZXJtYW4sCisJCQkJU3BhbmlzaCwKKwkJCQlEdXRjaCwKKwkJCQlJdGFsaWFuLAorCQkJKTsK
KwkJCW1haW5Hcm91cCA9IDFDMDlEMDM0MUUzMUMzMjgwMDcyNUYxODsKKwkJCXByb2R1Y3RSZWZH
cm91cCA9IDFDMDlEMDNFMUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9kdWN0cyAqLzsKKwkJCXByb2pl
Y3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJ
CQkxQzA5RDAzQzFFMzFDMzI4MDA3MjVGMTggLyogUEFMICovLAorCQkJKTsKKwkJfTsKKy8qIEVu
ZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCQkxQzA5RDAzOTFFMzFDMzI4MDA3MjVGMTggLyogU291cmNlcyAqLyA9IHsK
KwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTFDMDlEMDU2MUUzMUM0NjUwMDcyNUYxOCAvKiBD
cnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291
cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlv
biBzZWN0aW9uICovCisJCTFDMDlEMDQ2MUUzMUMzMjgwMDcyNUYxOCAvKiBEZWJ1ZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSAxQzA5RDA2MjFFMzFFQzI4MDA3MjVGMTggLyogRGVidWdSZWxlYXNlLnhjY29uZmln
ICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlERUFEX0NPREVfU1RSSVBQSU5HID0gIiQo
REVBRF9DT0RFX1NUUklQUElOR19kZWJ1ZykiOworCQkJCURFQlVHX0RFRklORVMgPSAiJChERUJV
R19ERUZJTkVTX2RlYnVnKSI7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9ICIkKEdDQ19P
UFRJTUlaQVRJT05fTEVWRUxfZGVidWcpIjsKKwkJCQlTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCA9
ICIkKFNUUklQX0lOU1RBTExFRF9QUk9EVUNUX2RlYnVnKSI7CisJCQl9OworCQkJbmFtZSA9IERl
YnVnOworCQl9OworCQkxQzA5RDA0NzFFMzFDMzI4MDA3MjVGMTggLyogUmVsZWFzZSAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSAxQzA5RDA2MjFFMzFFQzI4MDA3MjVGMTggLyogRGVidWdSZWxlYXNlLnhjY29uZmln
ICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCA9
IE5POworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkxQzA5RDA0OTFFMzFDMzI4
MDA3MjVGMTggLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUMwOUQwNUQxRTMxQzc3QTAwNzI1RjE4
IC8qIFBBTC54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFt
ZSA9IERlYnVnOworCQl9OworCQkxQzA5RDA0QTFFMzFDMzI4MDA3MjVGMTggLyogUmVsZWFzZSAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRp
b25SZWZlcmVuY2UgPSAxQzA5RDA1RDFFMzFDNzdBMDA3MjVGMTggLyogUEFMLnhjY29uZmlnICov
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsK
KwkJMUMwOUQwNUExRTMxQzZGMDAwNzI1RjE4IC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
MUMwOUQwNjMxRTMxRUMzMTAwNzI1RjE4IC8qIEJhc2UueGNjb25maWcgKi87CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkxQzA5RDA1
QjFFMzFDNkYwMDA3MjVGMTggLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzA5RDA1RDFF
MzFDNzdBMDA3MjVGMTggLyogUEFMLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmln
dXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlv
biAqLworCQkxQzA5RDAzODFFMzFDMzI4MDA3MjVGMTggLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhQcm9qZWN0ICJQQUwiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9u
TGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMUMwOUQwNDYxRTMxQzMyODAw
NzI1RjE4IC8qIERlYnVnICovLAorCQkJCTFDMDlEMDQ3MUUzMUMzMjgwMDcyNUYxOCAvKiBSZWxl
YXNlICovLAorCQkJCTFDMDlEMDVBMUUzMUM2RjAwMDcyNUYxOCAvKiBQcm9kdWN0aW9uICovLAor
CQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRD
b25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTFDMDlEMDQ4MUUzMUMzMjgw
MDcyNUYxOCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAi
UEFMIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZp
Z3VyYXRpb25zID0gKAorCQkJCTFDMDlEMDQ5MUUzMUMzMjgwMDcyNUYxOCAvKiBEZWJ1ZyAqLywK
KwkJCQkxQzA5RDA0QTFFMzFDMzI4MDA3MjVGMTggLyogUmVsZWFzZSAqLywKKwkJCQkxQzA5RDA1
QjFFMzFDNkYwMDA3MjVGMTggLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQ
cm9kdWN0aW9uOworCQl9OworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwor
CX07CisJcm9vdE9iamVjdCA9IDFDMDlEMDM1MUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9qZWN0IG9i
amVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NDg4YzgwYWRmNmMxMWY2YzMw
ODIwM2E4ZTcyZWE0ODM2ODZmM2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML2NvbmZpZy5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLwor
CisjaWYgZGVmaW5lZChIQVZFX0NPTkZJR19IKSAmJiBIQVZFX0NPTkZJR19IICYmIGRlZmluZWQo
QlVJTERJTkdfV0lUSF9DTUFLRSkKKyNpbmNsdWRlICJjbWFrZWNvbmZpZy5oIgorI2VuZGlmCisK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3Mu
aD4KKworI2lmZGVmIF9fQVBQTEVfXworI2RlZmluZSBIQVZFX0ZVTkNfVVNMRUVQIDEKKyNlbmRp
ZiAvKiBfX0FQUExFX18gKi8KKworI2lmIE9TKFdJTkRPV1MpCisKKyNpZm5kZWYgX1dJTjMyX1dJ
Tk5UCisjZGVmaW5lIF9XSU4zMl9XSU5OVCAweDYwMQorI2VuZGlmCisKKyNpZm5kZWYgV0lOVkVS
CisjZGVmaW5lIFdJTlZFUiAweDA2MDEKKyNlbmRpZgorCisjZW5kaWYgLyogT1MoV0lORE9XUykg
Ki8KKworI2lmZGVmIF9fY3BsdXNwbHVzCisKKy8vIFRoZXNlIHVuZGVmcyBtYXRjaCB1cCB3aXRo
IGRlZmluZXMgaW4gV2ViQ29yZVByZWZpeC5oIGZvciBNYWMgT1MgWC4KKy8vIEhlbHBzIHVzIGNh
dGNoIGlmIGFueW9uZSB1c2VzIG5ldyBvciBkZWxldGUgYnkgYWNjaWRlbnQgaW4gY29kZSBhbmQg
ZG9lc24ndCBpbmNsdWRlICJjb25maWcuaCIuCisjdW5kZWYgbmV3CisjdW5kZWYgZGVsZXRlCisj
aW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKworI2luY2x1ZGUgPGNpc282NDY+CisKKyNlbmRp
ZgorCisjaW5jbHVkZSA8d3RmL0Rpc2FsbG93Q1R5cGUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0NN
YWtlTGlzdHMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiNWYxZWE1MWQ1ODMzYzJhNTU0OGI1ZDUyY2NjNDU2
NDU3NGRlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0NNYWtl
TGlzdHMudHh0CkBAIC0wLDAgKzEsMTcgQEAKK3NldChQQUxfU09VUkNFUworKQorCitzZXQoUEFM
X0lOQ0xVREVfRElSRUNUT1JJRVMKKyAgICAiJHtQQUxfRElSfSIKKyAgICAiJHtQQUxfRElSfS9w
YWwiCisgICAgIiR7UEFMX0RJUn0vcGFsL2NyeXB0byIKKykKKworc2V0KFBBTF9MSUJSQVJJRVMK
KyAgICBXVEYKKykKKworV0VCS0lUX0lOQ0xVREVfQ09ORklHX0ZJTEVTX0lGX0VYSVNUUygpCisK
K1dFQktJVF9XUkFQX1NPVVJDRUxJU1QoJHtQQUxfU09VUkNFU30pCitXRUJLSVRfRlJBTUVXT1JL
KFBBTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1FZmwuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc3NWMxODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmExYTE1ZmM2M2IKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0wLDAgKzEs
MyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2NyeXB0L0NyeXB0b0Rp
Z2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxh
dGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtl
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc3NWMxODk4NGFlODliOWNlYWFiMjViNTdmZGEwNmExYTE1ZmM2M2IKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtR1RLLmNtYWtl
CkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vZ2Ny
eXB0L0NyeXB0b0RpZ2VzdEdDcnlwdC5jcHAKKykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRm
b3JtTWFjLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmOTY4ZWM0ZDk4ZTQxZjczNzI5MGY4ZjRmMjhmNzRm
NmEyZTYxZjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRm
b3JtTWFjLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlzdChBUFBFTkQgUEFMX1NPVVJDRVMKKyAg
ICBjcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAKKykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmNjkxOWY3
NmYxMDhmNzJlYzg4N2ExYjczNTA3ODE3MjJhMjU4YTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL1BsYXRmb3JtV2luLmNtYWtlCkBAIC0wLDAgKzEsMyBAQAorbGlz
dChBUFBFTkQgUEFMX1NPVVJDRVMKKyAgICBjcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAK
KykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2Vz
dC5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTg4ZTEyNzdjNDk3OWNiMDRiMDAxZTM1M2U4YzhlOGUyOTkzYjMyZgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCkBA
IC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFBBTCB7CisKK3N0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0OworCitjbGFzcyBDcnlwdG9E
aWdlc3QgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENyeXB0b0RpZ2VzdCk7CitwdWJsaWM6
CisgICAgZW51bSBjbGFzcyBBbGdvcml0aG0geworICAgICAgICBTSEFfMSwKKyAgICAgICAgU0hB
XzIyNCwKKyAgICAgICAgU0hBXzI1NiwKKyAgICAgICAgU0hBXzM4NCwKKyAgICAgICAgU0hBXzUx
MiwKKyAgICB9OworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBjcmVh
dGUoQWxnb3JpdGhtKTsKKyAgICB+Q3J5cHRvRGlnZXN0KCk7CisKKyAgICB2b2lkIGFkZEJ5dGVz
KGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKKyAgICBWZWN0b3I8dWludDhfdD4g
Y29tcHV0ZUhhc2goKTsKKworcHJpdmF0ZToKKyAgICBDcnlwdG9EaWdlc3QoKTsKKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3RDb250ZXh0PiBtX2NvbnRleHQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRv
L2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODZhMjQxYTRlMjM1ODZhMWMxM2FkOTJhOWU5MTE0ZWI0MmZkY2FjMwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2NvbW1vbmNy
eXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCkBAIC0wLDAgKzEsMTc5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgor
CisjaW5jbHVkZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbkNyeXB0by5oPgorCituYW1lc3BhY2UgUEFM
IHsKKworc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgeworICAgIENyeXB0b0RpZ2VzdDo6QWxn
b3JpdGhtIGFsZ29yaXRobTsKKyAgICB2b2lkKiBjY0NvbnRleHQ7Cit9OworCitpbmxpbmUgQ0Nf
U0hBMV9DVFgqIHRvU0hBMUNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sK
KyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTFfQ1RYKj4oY29udGV4dC0+
Y2NDb250ZXh0KTsKK30KK2lubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTIyNENvbnRleHQoQ3J5
cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3Jp
dGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CitpbmxpbmUg
Q0NfU0hBMjU2X0NUWCogdG9TSEEyNTZDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzI1Nik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTI1Nl9DVFgq
Pihjb250ZXh0LT5jY0NvbnRleHQpOworfQoraW5saW5lIENDX1NIQTUxMl9DVFgqIHRvU0hBMzg0
Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQoreworICAgIEFTU0VSVChjb250
ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2NDb250ZXh0KTsK
K30KK2lubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTUxMkNvbnRleHQoQ3J5cHRvRGlnZXN0Q29u
dGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0Nf
U0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Cit9CisKK0NyeXB0b0RpZ2VzdDo6Q3J5
cHRvRGlnZXN0KCkKKyAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sK
K30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKK3sKKyAgICBzd2l0Y2ggKG1fY29u
dGV4dC0+YWxnb3JpdGhtKSB7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hB
XzE6CisgICAgICAgIGRlbGV0ZSB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0Ogor
ICAgICAgICBkZWxldGUgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgorICAg
ICAgICBkZWxldGUgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OgorICAgICAg
ICBkZWxldGUgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgorICAgICAgICBk
ZWxldGUgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9Cit9CisKKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAgIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKKyAgICBk
aWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3JpdGhtOworCisgICAgc3dpdGNoIChh
bGdvcml0aG0pIHsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTogewor
ICAgICAgICBDQ19TSEExX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEExX0NUWDsKKyAgICAgICAg
ZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIENDX1NIQTFf
SW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDogeworICAgICAgICBDQ19TSEEyNTZfQ1RY
KiBjb250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0
LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEEyMjRfSW5pdChjb250ZXh0KTsK
KyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzI1NjogeworICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3
IENDX1NIQTI1Nl9DVFg7CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBj
b250ZXh0OworICAgICAgICBDQ19TSEEyNTZfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJu
IGRpZ2VzdDsKKyAgICB9CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4
NDogeworICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7
CisgICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAg
ICBDQ19TSEEzODRfSW5pdChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9
CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogeworICAgICAgICBD
Q19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7CisgICAgICAgIGRpZ2Vz
dC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OworICAgICAgICBDQ19TSEE1MTJfSW5p
dChjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIGRpZ2VzdDsKKyAgICB9CisgICAgfQorfQorCit2
b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5n
dGgpCit7CisgICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBDQ19TSEExX1VwZGF0ZSh0b1NI
QTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOworICAgICAgICByZXR1
cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoKKyAgICAgICAg
Q0NfU0hBMjI0X1VwZGF0ZSh0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgpKSwgaW5wdXQs
IGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMjU2OgorICAgICAgICBDQ19TSEEyNTZfVXBkYXRlKHRvU0hBMjU2Q29udGV4dCht
X2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6CisgICAgICAgIENDX1NIQTM4NF9V
cGRhdGUodG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUx
MjoKKyAgICAgICAgQ0NfU0hBNTEyX1VwZGF0ZSh0b1NIQTUxMkNvbnRleHQobV9jb250ZXh0Lmdl
dCgpKSwgaW5wdXQsIGxlbmd0aCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK1ZlY3Rv
cjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAgICBWZWN0b3I8dWlu
dDhfdD4gcmVzdWx0OworICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0pIHsKKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKKyAgICAgICAgcmVzdWx0LnJlc2l6
ZShDQ19TSEExX0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEExX0ZpbmFsKHJlc3VsdC5k
YXRhKCksIHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIHJlc3Vs
dC5yZXNpemUoQ0NfU0hBMjI0X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEEyMjRfRmlu
YWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2Ogor
ICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsKKyAgICAgICAg
Q0NfU0hBMjU2X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjU2Q29udGV4dChtX2NvbnRleHQu
Z2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NDoKKyAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEzODRfRElHRVNUX0xFTkdU
SCk7CisgICAgICAgIENDX1NIQTM4NF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NIQTM4NENvbnRl
eHQobV9jb250ZXh0LmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGln
ZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBNTEy
X0RJR0VTVF9MRU5HVEgpOworICAgICAgICBDQ19TSEE1MTJfRmluYWwocmVzdWx0LmRhdGEoKSwg
dG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgUEFMCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2djcnlwdC9DcnlwdG9EaWdlc3RH
Q3J5cHQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBhNzhhZTBjM2I4ZDcwMDg2MDc3MzM1YWUzZTMyZWZhYTkx
Mzk2ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU29mdEF0
SG9tZQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGln
ZXN0LmgiCisKKyNpbmNsdWRlIDxnY3J5cHQuaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0cnVj
dCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKKyAgICBpbnQgYWxnb3JpdGhtOworICAgIGdjcnlfbWRf
aGRfdCBtZDsKK307CisKK0NyeXB0b0RpZ2VzdDo6Q3J5cHRvRGlnZXN0KCkKKyAgICA6IG1fY29u
dGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKK3sKK30KKworQ3J5cHRvRGlnZXN0Ojp+Q3J5
cHRvRGlnZXN0KCkKK3sKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRv
RGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQoreworICAg
IGludCBnY3J5cHRBbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgorICAgICAgICBnY3J5cHRBbGdvcml0
aG0gPSBHQ1JZX01EX1NIQTE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8yMjQ6CisgICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURf
U0hBMjI0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMjU2OgorICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTI1NjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoK
KyAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9NRF9TSEEzODQ7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6CisgICAgICAgIGdj
cnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBNTEyOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2Vz
dCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdjcnlwdEFsZ29yaXRobTsK
KworICAgIGdjcnlfbWRfb3BlbigmZGlnZXN0LT5tX2NvbnRleHQtPm1kLCBnY3J5cHRBbGdvcml0
aG0sIDApOworICAgIGlmICghZGlnZXN0LT5tX2NvbnRleHQtPm1kKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIHJldHVybiBkaWdlc3Q7Cit9CisKK3ZvaWQgQ3J5cHRvRGlnZXN0Ojph
ZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBnY3J5X21k
X3dyaXRlKG1fY29udGV4dC0+bWQsIGlucHV0LCBsZW5ndGgpOworfQorCitWZWN0b3I8dWludDhf
dD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCit7CisgICAgaW50IGRpZ2VzdExlbiA9IGdj
cnlfbWRfZ2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFsZ29yaXRobSk7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW4pOworCisgICAgZ2NyeV9tZF9maW5hbChtX2NvbnRleHQt
Pm1kKTsKKyAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSwgZ2NyeV9tZF9yZWFkKG1fY29udGV4dC0+
bWQsIDApLCBkaWdlc3RMZW4pOworICAgIGdjcnlfbWRfY2xvc2UobV9jb250ZXh0LT5tZCk7CisK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdu
dVRMUy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNTU2YjhmYmJkYTBmMDkwOTMxOTkxZjZiMDE2NjZjOWIzNTlh
YzA4MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY3J5cHRvL2du
dXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKKworI2lu
Y2x1ZGUgPGdudXRscy9nbnV0bHMuaD4KKyNpbmNsdWRlIDxnbnV0bHMvY3J5cHRvLmg+CisKK25h
bWVzcGFjZSBQQUwgeworCitzdHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7CisgICAgZ251dGxz
X2RpZ2VzdF9hbGdvcml0aG1fdCBhbGdvcml0aG07CisgICAgZ251dGxzX2hhc2hfaGRfdCBoYXNo
OworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDogbV9jb250ZXh0KG5l
dyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdl
c3QoKQoreworICAgIGdudXRsc19oYXNoX2RlaW5pdChtX2NvbnRleHQtPmhhc2gsIDApOworfQor
CitzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0pCit7CisgICAgZ251dGxzX2RpZ2VzdF9hbGdv
cml0aG1fdCBnbnV0bHNBbGdvcml0aG07CisKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIGdudXRsc0Fs
Z29yaXRobSA9IEdOVVRMU19ESUdfU0hBMTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6IHsKKyAgICAgICAgZ251dGxzQWxn
b3JpdGhtID0gR05VVExTX0RJR19TSEEyMjQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIGdudXRsc0Fs
Z29yaXRobSA9IEdOVVRMU19ESUdfU0hBMjU2OworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDogeworICAgICAgICBnbnV0bHNB
bGdvcml0aG0gPSBHTlVUTFNfRElHX1NIQTM4NDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKKyAgICAgICAgZ251dGxz
QWxnb3JpdGhtID0gR05VVExTX0RJR19TSEE1MTI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0
b0RpZ2VzdCk7CisgICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdudXRsc0FsZ29y
aXRobTsKKworICAgIGludCByZXQgPSBnbnV0bHNfaGFzaF9pbml0KCZkaWdlc3QtPm1fY29udGV4
dC0+aGFzaCwgZ251dGxzQWxnb3JpdGhtKTsKKyAgICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NF
U1MpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGRpZ2VzdDsKK30KKwor
dm9pZCBDcnlwdG9EaWdlc3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVu
Z3RoKQoreworICAgIGdudXRsc19oYXNoKG1fY29udGV4dC0+aGFzaCwgaW5wdXQsIGxlbmd0aCk7
Cit9CisKK1ZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKK3sKKyAg
ICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAgIGludCBkaWdlc3RMZW4gPSBnbnV0bHNfaGFz
aF9nZXRfbGVuKG1fY29udGV4dC0+YWxnb3JpdGhtKTsKKyAgICByZXN1bHQucmVzaXplKGRpZ2Vz
dExlbik7CisKKyAgICBnbnV0bHNfaGFzaF9vdXRwdXQobV9jb250ZXh0LT5oYXNoLCByZXN1bHQu
ZGF0YSgpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBBTApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vd2luL0NyeXB0b0RpZ2Vz
dFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0
V2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMTgzODg0MTliZGI5NjNhMTE0NWFjOWE4OTY3NGYzZmIzYTE3
ZWVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jcnlwdG8vd2lu
L0NyeXB0b0RpZ2VzdFdpbi5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ3J5cHRvRGlnZXN0LmgiCisKKyNpbmNsdWRlIDx3
aW5kb3dzLmg+CisjaW5jbHVkZSA8d2luY3J5cHQuaD4KKworbmFtZXNwYWNlIFBBTCB7CisKK3N0
cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKKyAgICBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSBh
bGdvcml0aG07CisgICAgSENSWVBUUFJPViBoQ29udGV4dCB7IDAgfTsKKyAgICBIQ1JZUFRIQVNI
IGhIYXNoIHsgMCB9OworfTsKKworQ3J5cHRvRGlnZXN0OjpDcnlwdG9EaWdlc3QoKQorICAgIDog
bV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250ZXh0KQoreworfQorCitDcnlwdG9EaWdlc3Q6
On5DcnlwdG9EaWdlc3QoKQoreworICAgIGlmIChIQ1JZUFRIQVNIIGhIYXNoID0gbV9jb250ZXh0
LT5oSGFzaCkKKyAgICAgICAgQ3J5cHREZXN0cm95SGFzaChoSGFzaCk7CisgICAgaWYgKEhDUllQ
VFBST1YgaENvbnRleHQgPSBtX2NvbnRleHQtPmhDb250ZXh0KQorICAgICAgICBDcnlwdFJlbGVh
c2VDb250ZXh0KGhDb250ZXh0LCAwKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2Vz
dD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQWxnb3JpdGhtIGFsZ29yaXRobSkKK3sKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7CisgICAg
ZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGFsZ29yaXRobTsKKyAgICBpZiAoIUNyeXB0
QWNxdWlyZUNvbnRleHQoJmRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgbnVsbHB0ciwgbnVs
bHB0ciAvKiB1c2UgZGVmYXVsdCBwcm92aWRlciAqLywgUFJPVl9SU0FfQUVTLCBDUllQVF9WRVJJ
RllDT05URVhUKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYm9vbCBzdWNjZWVkZWQg
PSBmYWxzZTsKKyAgICBzd2l0Y2ggKGFsZ29yaXRobSkgeworICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8xOiB7CisgICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFz
aChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBMSwgMCwgMCwgJmRpZ2VzdC0+
bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIENyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OiB7CisgICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0
Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdfU0hBXzI1NiwgMCwg
MCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OiB7CisgICAgICAgIHN1Y2Nl
ZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENvbnRleHQsIENBTEdf
U0hBXzM4NCwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOiB7Cisg
ICAgICAgIHN1Y2NlZWRlZCA9IENyeXB0Q3JlYXRlSGFzaChkaWdlc3QtPm1fY29udGV4dC0+aENv
bnRleHQsIENBTEdfU0hBXzUxMiwgMCwgMCwgJmRpZ2VzdC0+bV9jb250ZXh0LT5oSGFzaCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9CisgICAgaWYgKHN1Y2NlZWRlZCkKKyAgICAgICAg
cmV0dXJuIGRpZ2VzdDsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBDcnlwdG9EaWdl
c3Q6OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQoreworICAgIGlm
ICghaW5wdXQgfHwgIWxlbmd0aCkKKyAgICAgICAgcmV0dXJuOworICAgIFJFTEVBU0VfQVNTRVJU
KENyeXB0SGFzaERhdGEobV9jb250ZXh0LT5oSGFzaCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBC
WVRFKj4oaW5wdXQpLCBsZW5ndGgsIDApKTsKK30KKworVmVjdG9yPHVpbnQ4X3Q+IENyeXB0b0Rp
Z2VzdDo6Y29tcHV0ZUhhc2goKQoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CisgICAg
RFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyOworICAgIERXT1JEIGRpZ2VzdExlbmd0aEJ1ZmZlclNp
emUgPSBzaXplb2YoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKENy
eXB0R2V0SGFzaFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hTSVpFLCByZWludGVycHJl
dF9jYXN0PEJZVEUqPigmZGlnZXN0TGVuZ3RoQnVmZmVyKSwgJmRpZ2VzdExlbmd0aEJ1ZmZlclNp
emUsIDApKTsKKyAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbmd0aEJ1ZmZlcik7CisKKyAgICBS
RUxFQVNFX0FTU0VSVChDcnlwdEdldEhhc2hQYXJhbShtX2NvbnRleHQtPmhIYXNoLCBIUF9IQVNI
VkFMLCByZXN1bHQuZGF0YSgpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyLCAwKSk7CisgICAgUkVMRUFT
RV9BU1NFUlQocmVzdWx0LnNpemUoKSA9PSBkaWdlc3RMZW5ndGhCdWZmZXIpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFBBTApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFr
ZQppbmRleCBmM2FlODliMDBlM2QzNGJkOTQ1OGM1OGZmYjQ0YThlYTI3OTZiM2RkLi4xZjBlMTAz
NWFkNGFkMmUxZTNmMGIxNzI1YTJhY2VjZWUzYzgwYzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5j
bWFrZQpAQCAtNjksOCArNjksNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAg
IHBsYXRmb3JtL2F1ZGlvL2VmbC9BdWRpb0J1c0VmbC5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0
by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZWZsL0N1cnNv
ckVmbC5jcHAKICAgICBwbGF0Zm9ybS9lZmwvRHJhZ0RhdGFFZmwuY3BwCiAgICAgcGxhdGZvcm0v
ZWZsL0RyYWdJbWFnZUVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNjI0MjE2
MjljNWVkNTA3YTc3MzRhM2U2ZGZjZDM0YTcyODgxZWJkZi4uYjFjNmU2YjhjZTEzMzdlMzhjMjg0
NjMxNTRiNWZhZTE3MGNkMDRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1H
VEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTY4LDgg
KzY4LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAKICAgICBwbGF0Zm9ybS9hdWRp
by9nbGliL0F1ZGlvQnVzR0xpYi5jcHAKIAotICAgIHBsYXRmb3JtL2NyeXB0by9nY3J5cHQvQ3J5
cHRvRGlnZXN0R0NyeXB0LmNwcAotCiAgICAgcGxhdGZvcm0vZ2FtZXBhZC9nbGliL0dhbWVwYWRz
R2xpYi5jcHAKIAogICAgIHBsYXRmb3JtL2dlb2NsdWUvR2VvbG9jYXRpb25Qcm92aWRlckdlb2Ns
dWUxLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCA0YzUxZTJhYTkwNjY0NTgyYWE0
MjIzNjc0NTQ1MTM5OTEyNGExMWYwLi43ZGMxZTZlODRjZTBlNjY1ZGVmNzliMDE1ZTE0NTA5Mzgy
OTZkOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzMzLDggKzMzMyw2IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2Eu
bW0KICAgICBwbGF0Zm9ybS9jb2NvYS9XZWJDb3JlTlNFcnJvckV4dHJhcy5tbQogCi0gICAgcGxh
dGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9DcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCi0K
ICAgICBwbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkLmNwcAogICAgIHBsYXRmb3JtL2dh
bWVwYWQvbWFjL0hJREdhbWVwYWRQcm92aWRlci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5jbWFr
ZQppbmRleCA4ZDdmNTA4YTEyMjk1NzE3OTA3ZGVmNDE0ZjJmMjY0ZGYxMGMxOWFkLi5hNGE5OTA5
YjEyMTM0M2NlZWJjNjliZDAxYTgzNWMxOGYxODkwMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdpbi5j
bWFrZQpAQCAtNzMsOCArNzMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKIAogICAg
IHBsYXRmb3JtL2NmL3dpbi9DZXJ0aWZpY2F0ZUNGV2luLmNwcAogCi0gICAgcGxhdGZvcm0vY3J5
cHRvL3dpbi9DcnlwdG9EaWdlc3RXaW4uY3BwCi0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuY3BwCiAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDlhNDBkYjgyMzk5ZmIwYmY3MGQ1MmI0YWM2M2Y5MGE4OGY5N2Jk
YTkuLjQ2YWI3ODYzYjkwNDZjYWNhOTU4YzczNGEwNWRjMmZkM2YzY2Q5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk3Nyw2
ICs5NzcsNyBAQAogCQkxQzAxMDcwMTE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0
eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzAx
MDZGRjE5MjU5NERGMDA4QTQyMDEgLyogSW5saW5lVGV4dEJveFN0eWxlLmggKi87IH07CiAJCTFD
MDkzOUVBMUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDkzOUU4MUExM0UxMjkwMEI3ODhF
NSAvKiBDYWNoZWRTVkdGb250LmNwcCAqLzsgfTsKIAkJMUMwOTM5RUIxQTEzRTEyOTAwQjc4OEU1
IC8qIENhY2hlZFNWR0ZvbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFDMDkzOUU5MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmggKi87
IH07CisJCTFDMDlEMDU5MUUzMUM2QTkwMDcyNUYxOCAvKiBsaWJQQUwuYSBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMDlEMDUwMUUzMUMzMjkwMDcy
NUYxOCAvKiBsaWJQQUwuYSAqLzsgfTsKIAkJMUMxOERBNTgxODFBRjZBNTAwQzRFRjIyIC8qIFRl
eHRQYWludGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDMThEQTU2MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5jcHAgKi87IH07CiAJ
CTFDMThEQTU5MTgxQUY2QTUwMEM0RUYyMiAvKiBUZXh0UGFpbnRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMxOERBNTcxODFBRjZBNTAwQzRFRjIy
IC8qIFRleHRQYWludGVyLmggKi87IH07CiAJCTFDMjFFNTdDMTgzRUQxRkYwMDFDMjg5RCAvKiBJ
T1N1cmZhY2VQb29sLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDMjFFNTdBMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmNwcCAqLzsg
fTsKQEAgLTYyNjIsOCArNjI2Myw2IEBACiAJCUUxRjgwQjg4MTgzMTcyNTIwMDc4ODVDMyAvKiBD
cnlwdG9LZXlQYWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUY4MEI4NjE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxRjgwQjhEMTgzMTcy
QjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGODBCOEIxODMxNzJCNTAwNzg4NUMzIC8qIEpTQ3J5
cHRvS2V5UGFpci5jcHAgKi87IH07CiAJCUUxRjgwQjhFMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0Ny
eXB0b0tleVBhaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxRjgwQjhDMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIuaCAqLzsgfTsK
LQkJRTFGRTEzNjQxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2
MjE4MzQzNTExMDA4OTJGMTMgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCAqLzsgfTsK
LQkJRTFGRTEzNjcxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjYxODM0M0ExMDAwODky
RjEzIC8qIENyeXB0b0RpZ2VzdC5oICovOyB9OwogCQlFMUZFMTM2QTE4M0ZFMUFCMDA4OTJGMTMg
LyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGRTEzNjgxODNGRTFBQjAwODkyRjEzIC8qIENyeXB0b0Fs
Z29yaXRobVJTQV9PQUVQLmNwcCAqLzsgfTsKIAkJRTFGRTEzNkIxODNGRTFBQjAwODkyRjEzIC8q
IENyeXB0b0FsZ29yaXRobVJTQV9PQUVQLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3Jp
dGhtUlNBX09BRVAuaCAqLzsgfTsKIAkJRTFGRTEzNzAxODNGRUNGMDAwODkyRjEzIC8qIENyeXB0
b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxRkUxMzZFMTgzRkVDRjAwMDg5MkYxMyAvKiBDcnlwdG9BbGdvcml0
aG1SU0FfT0FFUE1hYy5jcHAgKi87IH07CkBAIC02ODg4LDYgKzY4ODcsMjAgQEAKIC8qIEVuZCBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkg
c2VjdGlvbiAqLworCQkxQzA5RDA0RjFFMzFDMzI5MDA3MjVGMTggLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFp
bmVyUG9ydGFsID0gMUMwOUQwNEIxRTMxQzMyODAwNzI1RjE4IC8qIFBBTC54Y29kZXByb2ogKi87
CisJCQlwcm94eVR5cGUgPSAyOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxQzA5RDAzRDFF
MzFDMzI4MDA3MjVGMTg7CisJCQlyZW1vdGVJbmZvID0gUEFMOworCQl9OworCQkxQzA5RDA2NzFF
MzIwNzlEMDA3MjVGMTggLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0g
UEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMUMwOUQwNEIxRTMx
QzMyODAwNzI1RjE4IC8qIFBBTC54Y29kZXByb2ogKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJ
cmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxQzA5RDAzQzFFMzFDMzI4MDA3MjVGMTg7CisJCQlyZW1v
dGVJbmZvID0gUEFMOworCQl9OwogCQk0MTdEQTZENDEzNzM0RTBEMDA3QzU3RkIgLyogUEJYQ29u
dGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5Owog
CQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qg
b2JqZWN0ICovOwpAQCAtODA1NCw2ICs4MDY3LDcgQEAKIAkJMUMwMTA2RkYxOTI1OTRERjAwOEE0
MjAxIC8qIElubGluZVRleHRCb3hTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbmxpbmVUZXh0Qm94U3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUMwOTM5RTgxQTEzRTEyOTAwQjc4OEU1IC8qIENhY2hlZFNWR0ZvbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkU1ZHRm9udC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDMDkzOUU5MUExM0UxMjkwMEI3ODhFNSAvKiBDYWNoZWRTVkdG
b250LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFNWR0ZvbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUMwOUQwNEIxRTMxQzMyODAwNzI1RjE4IC8q
IFBBTC54Y29kZXByb2ogKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSAid3JhcHBlci5wYi1wcm9qZWN0IjsgbmFtZSA9IFBBTC54Y29kZXByb2o7IHBhdGgg
PSBQQUwvUEFMLnhjb2RlcHJvajsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUMxOERB
NTYxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRQYWludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUMxOERBNTcxODFBRjZBNTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRQYWludGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDMjFFNTdBMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29s
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElPU3VyZmFjZVBvb2wu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQyNzIsOCArMTQyODYsNiBAQAog
CQlFMUY4MEI4NjE4MzE3MjUyMDA3ODg1QzMgLyogQ3J5cHRvS2V5UGFpci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDcnlwdG9LZXlQYWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxRjgwQjhCMTgzMTcyQjUwMDc4ODVDMyAvKiBKU0NyeXB0b0tleVBhaXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDcnlwdG9LZXlQYWly
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGODBCOEMxODMxNzJCNTAwNzg4
NUMzIC8qIEpTQ3J5cHRvS2V5UGFpci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0NyeXB0b0tleVBhaXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFGRTEz
NjIxODM0MzUxMTAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUZFMTM2NjE4MzQzQTEwMDA4OTJG
MTMgLyogQ3J5cHRvRGlnZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENy
eXB0b0RpZ2VzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2ODE4M0ZF
MUFCMDA4OTJGMTMgLyogQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUZFMTM2OTE4M0ZFMUFCMDA4OTJGMTMgLyogQ3J5
cHRvQWxnb3JpdGhtUlNBX09BRVAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q3J5cHRvQWxnb3JpdGhtUlNBX09BRVAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTFGRTEzNkUxODNGRUNGMDAwODkyRjEzIC8qIENyeXB0b0FsZ29yaXRobVJTQV9PQUVQTWFjLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0b0FsZ29yaXRobVJT
QV9PQUVQTWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0OTg3LDYgKzE0
OTk5LDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTFDMDlEMDU5MUUzMUM2QTkw
MDcyNUYxOCAvKiBsaWJQQUwuYSBpbiBGcmFtZXdvcmtzICovLAogCQkJCUZEMkRCRjEyMTJCMDQ4
QTMwMEVEOThDNiAvKiBBY2NlbGVyYXRlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJ
CUZEMkRCRjEzMTJCMDQ4QTMwMEVEOThDNiAvKiBBdWRpb1Rvb2xib3guZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCiAJCQkJMUFCMzNEQTUxMjU1MUUzMjAwMjQ0NTdBIC8qIElPS2l0LmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovLApAQCAtMTU0MDIsNiArMTU0MTUsNyBAQAogCQkwODY3RDY5
MUZFODQwMjhGQzAyQUFDMDcgLyogV2ViS2l0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDA0QjFFMzFDMzI4MDA3MjVGMTggLyogUEFMLnhjb2Rl
cHJvaiAqLywKIAkJCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29uZmlnLmggKi8sCiAJ
CQkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdlYkNvcmVQcmVmaXguaCAqLywKIAkJCQk5
MzA3MDYxMzA5RTBDQTgyMDBCMTdGRTQgLyogRGVyaXZlZFNvdXJjZXMubWFrZSAqLywKQEAgLTE2
MDgzLDYgKzE2MDk3LDE0IEBACiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKKwkJMUMwOUQwNEMxRTMxQzMyODAwNzI1RjE4IC8qIFByb2R1Y3RzICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQzA5RDA1MDFFMzFD
MzI5MDA3MjVGMTggLyogbGliUEFMLmEgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1Y3RzOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMUM1RkFFQ0EwRENGRDhDOTAwRDU4
Rjc4IC8qIEluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0yMjQ5Nyw3ICsyMjUxOSw2IEBACiAJCQkJRkQzMTYwNDAxMkIwMjZBMzAwQzFBMzU5
IC8qIGF1ZGlvICovLAogCQkJCTFBRTQyRjY3MEFBNEI4Q0IwMEM4NjEyRCAvKiBjZiAqLywKIAkJ
CQlBNUM5NzRDRTExNDg1RkRBMDA2NkYyQUIgLyogY29jb2EgKi8sCi0JCQkJQ0U1MEQ4Q0UxQzg5
MzJFRDAwNzJFQTVBIC8qIGNyeXB0byAqLywKIAkJCQk1MTVCRTE4NzFENTRGNURCMDBERDdDNjgg
LyogZ2FtZXBhZCAqLywKIAkJCQlCMkEwMTU5MTBBRjZDRDUzMDA2QkNFMEUgLyogZ3JhcGhpY3Mg
Ki8sCiAJCQkJQTU5RTNDMUIxMTU4MEYzNDAwNzI5MjhFIC8qIGlvcyAqLywKQEAgLTIyOTQxLDIz
ICsyMjk2Miw2IEBACiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
IAkJfTsKLQkJQ0U1MEQ4Q0UxQzg5MzJFRDAwNzJFQTVBIC8qIGNyeXB0byAqLyA9IHsKLQkJCWlz
YSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJQ0U1MEQ4Q0YxQzg5MzJGQjAwNzJF
QTVBIC8qIGNvbW1vbmNyeXB0byAqLywKLQkJCQlFMUZFMTM2NjE4MzQzQTEwMDA4OTJGMTMgLyog
Q3J5cHRvRGlnZXN0LmggKi8sCi0JCQkpOwotCQkJcGF0aCA9IGNyeXB0bzsKLQkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCUNFNTBEOENGMUM4OTMyRkIwMDcyRUE1QSAvKiBjb21t
b25jcnlwdG8gKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJ
CUUxRkUxMzYyMTgzNDM1MTEwMDg5MkYxMyAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3Bw
ICovLAotCQkJKTsKLQkJCXBhdGggPSBjb21tb25jcnlwdG87Ci0JCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwotCQl9OwogCQlERjlBRkQ2RjEzRkMzMUIwMDAxNUZFQjcgLyogb2JqYyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNTI1MCw3ICsyNTI1NCw2
IEBACiAJCQkJRTE5QUMzRjExODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTI1
Ni5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5QUMzRjMxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0
b0FsZ29yaXRobVNIQTM4NC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5QUMzRjUxODI0REM3OTAw
MzQ5NDI2IC8qIENyeXB0b0FsZ29yaXRobVNIQTUxMi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTFG
RTEzNjcxODM0M0ExMDAwODkyRjEzIC8qIENyeXB0b0RpZ2VzdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTE1N0E4RTUxODE3M0EzQTAwOUY4MjFEIC8qIENyeXB0b0tleS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTEyNUY4NEUxODI0Mjg5RDAwRDg0Q0Q5IC8qIENyeXB0b0tleUFFUy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTEyNUY4NUUxODJDMkRGNjAwRDg0Q0Q5IC8qIENyeXB0b0tleURhdGEuaCBp
biBIZWFkZXJzICovLApAQCAtMjg1MDQsNiArMjg1MDcsNyBAQAogCQkJYnVpbGRSdWxlcyA9ICgK
IAkJCSk7CiAJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMUMwOUQwNjgxRTMyMDc5RDAwNzI1RjE4
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkJREQwNDFGRjEwOUQ5RTMyNTAwMTBBRjJB
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFdlYkNvcmU7CkBA
IC0yODU1Niw2ICsyODU2MCwxMiBAQAogCQkJbWFpbkdyb3VwID0gMDg2N0Q2OTFGRTg0MDI4RkMw
MkFBQzA3IC8qIFdlYktpdCAqLzsKIAkJCXByb2R1Y3RSZWZHcm91cCA9IDAzNDc2OERGRkYzOEE1
MDQxMURCOUM4QiAvKiBQcm9kdWN0cyAqLzsKIAkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlw
cm9qZWN0UmVmZXJlbmNlcyA9ICgKKwkJCQl7CisJCQkJCVByb2R1Y3RHcm91cCA9IDFDMDlEMDRD
MUUzMUMzMjgwMDcyNUYxOCAvKiBQcm9kdWN0cyAqLzsKKwkJCQkJUHJvamVjdFJlZiA9IDFDMDlE
MDRCMUUzMUMzMjgwMDcyNUYxOCAvKiBQQUwueGNvZGVwcm9qICovOworCQkJCX0sCisJCQkpOwog
CQkJcHJvamVjdFJvb3QgPSAiIjsKIAkJCXRhcmdldHMgPSAoCiAJCQkJNDE4MTZGNzkxMzg1OUM1
NTAwNTdBQUE0IC8qIEFsbCAqLywKQEAgLTI4NTY3LDYgKzI4NTc3LDE2IEBACiAJCX07CiAvKiBF
bmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKKy8qIEJlZ2luIFBCWFJlZmVyZW5jZVByb3h5IHNl
Y3Rpb24gKi8KKwkJMUMwOUQwNTAxRTMxQzMyOTAwNzI1RjE4IC8qIGxpYlBBTC5hICovID0gewor
CQkJaXNhID0gUEJYUmVmZXJlbmNlUHJveHk7CisJCQlmaWxlVHlwZSA9IGFyY2hpdmUuYXI7CisJ
CQlwYXRoID0gbGliUEFMLmE7CisJCQlyZW1vdGVSZWYgPSAxQzA5RDA0RjFFMzFDMzI5MDA3MjVG
MTggLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQkJc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsKKwkJfTsKKy8qIEVuZCBQQlhSZWZlcmVuY2VQcm94eSBzZWN0aW9uICovCisK
IC8qIEJlZ2luIFBCWFJlc291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCQk5M0YxOTlGRDA4
MjQ1RTU5MDAxRTlBQkMgLyogUmVzb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYUmVzb3VyY2Vz
QnVpbGRQaGFzZTsKQEAgLTI5MDkzLDcgKzI5MTEzLDYgQEAKIAkJCQlFMTlBQzNGMDE4MjREQzc5
MDAzNDk0MjYgLyogQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUUxOUFDM0YyMTgyNERDNzkwMDM0OTQyNiAvKiBDcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTE5QUMzRjQxODI0REM3OTAwMzQ5NDI2IC8qIENyeXB0b0FsZ29y
aXRobVNIQTUxMi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMUZFMTM2NDE4MzQzNTExMDA4OTJG
MTMgLyogQ3J5cHRvRGlnZXN0Q29tbW9uQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
NTdBOEU0MTgxNzNBM0EwMDlGODIxRCAvKiBDcnlwdG9LZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTEyNUY4NEQxODI0Mjg5RDAwRDg0Q0Q5IC8qIENyeXB0b0tleUFFUy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlFMTI1Rjg2MzE4MkMzMDNBMDBEODRDRDkgLyogQ3J5cHRvS2V5RGF0YU9jdGV0
U2VxdWVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTkyNSw2ICszMTk0NCwxMSBAQAogLyog
RW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0
RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTFDMDlEMDY4MUUzMjA3OUQwMDcyNUYxOCAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJ
CW5hbWUgPSBQQUw7CisJCQl0YXJnZXRQcm94eSA9IDFDMDlEMDY3MUUzMjA3OUQwMDcyNUYxOCAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTQxN0RBNkQ1MTM3MzRFMEQwMDdD
NTdGQiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKIAkJCXRhcmdldCA9IDkzRjE5OEE1MDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJDb3Jl
ICovOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEExLmNwcAppbmRleCAwYzhkZmRkZDFlMGE3YWRiYWExOGVmOWM1MTJhNzI4
Yzk0MmFkZTI5Li5hZGRmODRkMmIyM2YyNTdlZjhmYzk2NmJkZWExOWY3MGM5ZWQ0ZjdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1T
SEExLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1TSEExLmNwcApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQ
VE8pCiAKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9j
cnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyAr
NDYsNyBAQCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTE6Omlk
ZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTE6OmRpZ2VzdChWZWN0
b3I8dWludDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRp
b25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0
b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgYXV0
byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8xKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcg
QEAgdm9pZCBDcnlwdG9BbGdvcml0aG1TSEExOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVz
c2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWwKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxn
b3JpdGhtU0hBMTo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAg
IGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTIyNC5j
cHAKaW5kZXggNmNhMWFlZTVhNmJiN2Q4M2NhMDU2NDE5ZGNiZWJkNTE3YjlkNjE4NS4uNjM0YzVh
M2Q5M2I4MmZhNmIxZWNiNDUyZjU1MmQwNjg2Njg1ZjYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjI0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyMjQuY3Bw
CkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2luY2x1
ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9E
aWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjppZGVudGlmaWVyKCkg
Y29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEEyMjQ6OmRpZ2VzdChWZWN0b3I8dWludDhf
dD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFj
ayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
b3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6
Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKKyAgICBhdXRvIGRpZ2Vz
dCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzIyNCk7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBAIHZv
aWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjI0OjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2Fn
ZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRo
bVNIQTIyNDo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGlnZXN0
ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQp
OworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0
b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAg
ICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYu
Y3BwCmluZGV4IDczNjYwZjU5OWFmMzdjYTlkZTlhMjE5ZTNmNGYyMzQ4ZjQ2YWMyYjMuLjBlYTA1
MDZiOTRhM2FiMmUzOWRiM2YyNTEwMzRmYTc0ZWM2M2FjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTI1Ni5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmNw
cApAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKLSNpbmNs
dWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRv
RGlnZXN0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsNyArNDYsNyBAQCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6aWRlbnRpZmllcigp
IGNvbnN0CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2OjpkaWdlc3QoVmVjdG9yPHVpbnQ4
X3Q+JiYgbWVzc2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
V29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlwdG9EaWdlc3Q6
OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgYXV0byBkaWdl
c3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV8yNTYpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAgICAgIGV4Y2VwdGlvbkNhbGxi
YWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjUsNyArNjUsNyBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobVNIQTI1Njo6ZGlnZXN0KFZlY3Rvcjx1aW50OF90PiYmIG1lc3Nh
Z2UsIFZlY3RvckNhbGxiYWNrJiYgYwogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0
aG1TSEEyNTY6OmRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzRGVwcmVjYXRl
ZCYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykKIHsKLSAgICBhdXRvIGRpZ2Vz
dCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
KTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlw
dG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAg
ICAgZmFpbHVyZUNhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMzg0
LmNwcAppbmRleCBjOTc3NTJkODFjMDA1NDIzOWIwYjg4YzYwYWEzNDNlZmE2NWUxNDc3Li44OGYz
MTM2Mjk2YjA0YzUzODM4NjAzOWUyOTRlOWM0MzkzZTRhZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5j
cHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQogCi0jaW5j
bHVkZSAiQ3J5cHRvRGlnZXN0LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0
b0RpZ2VzdC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgQ3J5
cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmlkZW50aWZpZXIo
KSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobVNIQTM4NDo6ZGlnZXN0KFZlY3Rvcjx1aW50
OF90PiYmIG1lc3NhZ2UsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxi
YWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0
OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOworICAgIGF1dG8gZGln
ZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3Jp
dGhtOjpTSEFfMzg0KTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTY1LDcgKzY1LDcgQEAg
dm9pZCBDcnlwdG9BbGdvcml0aG1TSEEzODQ6OmRpZ2VzdChWZWN0b3I8dWludDhfdD4mJiBtZXNz
YWdlLCBWZWN0b3JDYWxsYmFjayYmIGMKIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3Jp
dGhtU0hBMzg0OjpkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spCiB7Ci0gICAgYXV0byBkaWdl
c3QgPSBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4
NCk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5
cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQpOwogICAgIGlmICghZGlnZXN0KSB7CiAgICAg
ICAgIGZhaWx1cmVDYWxsYmFjaygpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUx
Mi5jcHAKaW5kZXggMzNlNDgzZGExNWQxMGNjZGI3M2VlMzhmOTNhMTNkNmQ3MTg3MDJlZi4uMDEw
M2YwOTUzNzJiZjM1OTQ2YzdjZDAzZGY1OWMxOWIxZWIwYzc5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEE1MTIu
Y3BwCkBAIC0yOCw5ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAotI2lu
Y2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNs
dWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9Dcnlw
dG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw3ICs0Niw3IEBAIENy
eXB0b0FsZ29yaXRobUlkZW50aWZpZXIgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjppZGVudGlmaWVy
KCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1TSEE1MTI6OmRpZ2VzdChWZWN0b3I8dWlu
dDhfdD4mJiBtZXNzYWdlLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxs
YmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBhdXRvIGRpZ2VzdCA9IENyeXB0b0RpZ2Vz
dDo6Y3JlYXRlKENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKKyAgICBhdXRvIGRp
Z2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzUxMik7CiAgICAgaWYgKCFkaWdlc3QpIHsKICAgICAgICAgZXhjZXB0aW9uQ2Fs
bGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CkBAIC02NSw3ICs2NSw3IEBA
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtU0hBNTEyOjpkaWdlc3QoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVz
c2FnZSwgVmVjdG9yQ2FsbGJhY2smJiBjCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29y
aXRobVNIQTUxMjo6ZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNh
dGVkJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBj
YWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKQogewotICAgIGF1dG8gZGln
ZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81
MTIpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKICAgICBpZiAoIWRpZ2VzdCkgewogICAg
ICAgICBmYWlsdXJlQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3Yx
XzVNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FT
U0FfUEtDUzFfdjFfNU1hYy5jcHAKaW5kZXggZjZhYjdhMjE1NTUzYjZjYmZiNDczMDM1NWNmZTUz
NTJhOWQwMjM1NS4uMGYwYmY5MzEzZmFiNWNhNTRlZDY0NjliZjM4NmQ4MjlkZTkxZWE5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1SU0FTU0Ff
UEtDUzFfdjFfNU1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNU1hYy5jcHAKQEAgLTMwLDI2ICszMCwyNiBAQAogCiAj
aW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3Jp
dGhtUnNhU3NhUGFyYW1zRGVwcmVjYXRlZC5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgog
I2luY2x1ZGUgIkNyeXB0b0tleVJTQS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSA8cGFsL2NyeXB0by9D
cnlwdG9EaWdlc3QuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgc3RkOjpvcHRp
b25hbDxDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQoraW5saW5lIHN0ZDo6b3B0aW9uYWw8
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobT4gY3J5cHRvRGlnZXN0QWxnb3JpdGhtKENyeXB0
b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaEZ1bmN0aW9uKQogewogICAgIHN3aXRjaCAoaGFzaEZ1
bmN0aW9uKSB7CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMToKLSAg
ICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMTsKKyAgICAgICAgcmV0
dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOwogICAgIGNhc2UgQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllcjo6U0hBXzIyNDoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjI0OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzIyNDsKICAgICBjYXNlIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXI6
OlNIQV8yNTY6Ci0gICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
NjsKKyAgICAgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTY7
CiAgICAgY2FzZSBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyOjpTSEFfMzg0OgotICAgICAgICBy
ZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CisgICAgICAgIHJldHVybiBQ
QUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0OwogICAgIGNhc2UgQ3J5cHRvQWxn
b3JpdGhtSWRlbnRpZmllcjo6U0hBXzUxMjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfNTEyOworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFs
Z29yaXRobTo6U0hBXzUxMjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIH0KQEAgLTY2LDcgKzY2LDcgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1
aW50OF90Pj4gc2lnblJTQVNTQV9QS0NTMV92MV81KENyeXB0b0FsZ29yaXRobUlkZW50aWYKICAg
ICBhdXRvIGNyeXB0b0RpZ2VzdEFsZ29yaXRobSA9IFdlYkNvcmU6OmNyeXB0b0RpZ2VzdEFsZ29y
aXRobShoYXNoKTsKICAgICBpZiAoIWNyeXB0b0RpZ2VzdEFsZ29yaXRobSkKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Ci0gICAgYXV0byBkaWdlc3QgPSBDcnlw
dG9EaWdlc3Q6OmNyZWF0ZSgqY3J5cHRvRGlnZXN0QWxnb3JpdGhtKTsKKyAgICBhdXRvIGRpZ2Vz
dCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0b0RpZ2VzdEFsZ29yaXRobSk7CiAg
ICAgaWYgKCFkaWdlc3QpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJv
ciB9OwogICAgIGRpZ2VzdC0+YWRkQnl0ZXMoZGF0YSwgZGF0YUxlbmd0aCk7CkBAIC05Myw3ICs5
Myw3IEBAIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiB2ZXJpZnlSU0FTU0FfUEtDUzFfdjFfNShD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGhhc2gsCiAgICAgYXV0byBjcnlwdG9EaWdlc3RBbGdv
cml0aG0gPSBXZWJDb3JlOjpjcnlwdG9EaWdlc3RBbGdvcml0aG0oaGFzaCk7CiAgICAgaWYgKCFj
cnlwdG9EaWdlc3RBbGdvcml0aG0pCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRp
b25FcnJvciB9OwotICAgIGF1dG8gZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoKmNyeXB0
b0RpZ2VzdEFsZ29yaXRobSk7CisgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6
Y3JlYXRlKCpjcnlwdG9EaWdlc3RBbGdvcml0aG0pOwogICAgIGlmICghZGlnZXN0KQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKICAgICBkaWdlc3QtPmFkZEJ5
dGVzKGRhdGEsIGRhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYTE1N2E4NGYwZTY1Zjg1ZjljMDQ4ZTUxYzFkMTkwZTJi
ODdkYmYwYS4uZGY3N2NiNGM5YjVjOTFkNDRlNzMzNzk5MmQ3ZDhiYTdkNzY1MzBiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC00NSw3
ICs0NSw2IEBACiAjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkNvb2tpZS5o
IgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgogI2lu
Y2x1ZGUgIkRPTUVkaXRvci5oIgogI2luY2x1ZGUgIkRPTVBhdGNoU3VwcG9ydC5oIgogI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgpAQCAtOTYsNiArOTUsNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9J
ZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
aD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CisjaW5jbHVk
ZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGlu
ZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVDb250
ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAgICAg
VGV4dEVuY29kaW5nIGRvY3VtZW50RW5jb2RpbmcgPSBlbGVtZW50LmRvY3VtZW50KCkudGV4dEVu
Y29kaW5nKCk7CiAgICAgY29uc3QgVGV4dEVuY29kaW5nJiBlbmNvZGluZ1RvVXNlID0gZG9jdW1l
bnRFbmNvZGluZy5pc1ZhbGlkKCkgPyBkb2N1bWVudEVuY29kaW5nIDogVVRGOEVuY29kaW5nKCk7
CiAgICAgQ1N0cmluZyBjb250ZW50ID0gZW5jb2RpbmdUb1VzZS5lbmNvZGUoVGV4dE5vZGVUcmF2
ZXJzYWw6OmNvbnRlbnRzQXNTdHJpbmcoZWxlbWVudCksIEVudGl0aWVzRm9yVW5lbmNvZGFibGVz
KTsKLSAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IENyeXB0b0RpZ2VzdDo6Y3JlYXRlKENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2KTsKKyAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1
Nik7CiAgICAgY3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250ZW50LmRhdGEoKSwgY29udGVudC5s
ZW5ndGgoKSk7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGRpZ2VzdCA9IGNyeXB0b0RpZ2VzdC0+Y29t
cHV0ZUhhc2goKTsKICAgICByZXR1cm4gbWFrZVN0cmluZygic2hhMjU2LSIsIGJhc2U2NEVuY29k
ZShkaWdlc3QuZGF0YSgpLCBkaWdlc3Quc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAppbmRleCA0YTE5YzhlZDRhNzgyOGI5
M2Y0N2FlOWQxM2UxMGIyOTFmNTAxMmI0Li5iZDg4YzlkOGYzNDE1YWQ5ZWYzMTg1MGM4NjY4ZGYz
OTM0M2Q3YjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeS5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDb250ZW50U2VjdXJp
dHlQb2xpY3lIYXNoLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlLmgi
CiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5U291cmNlTGlzdC5oIgotI2luY2x1ZGUg
IkNyeXB0b0RpZ2VzdC5oIgogI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC01Nyw2ICs1Niw3IEBA
CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPGluc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0
YWNrRmFjdG9yeS5oPgorI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5j
bHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgpAQCAtMzAxLDE4ICszMDEs
MTggQEAgYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmFsbFBvbGljaWVzQWxsb3coVmlvbGF0
ZWREaXJlY3RpdmVDYWxsYmFjayYmIGNhbGxiYWMKICAgICByZXR1cm4gaXNBbGxvd2VkOwogfQog
Ci1zdGF0aWMgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gdG9DcnlwdG9EaWdlc3RBbGdvcml0aG0o
Q29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobSBhbGdvcml0aG0pCitzdGF0aWMgUEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobSB0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShDb250ZW50
U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtIGFsZ29yaXRobSkKIHsKICAgICBzd2l0Y2ggKGFs
Z29yaXRobSkgewogICAgIGNhc2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaEFsZ29yaXRobTo6
U0hBXzI1NjoKLSAgICAgICAgcmV0dXJuIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2
OworICAgICAgICByZXR1cm4gUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjsK
ICAgICBjYXNlIENvbnRlbnRTZWN1cml0eVBvbGljeUhhc2hBbGdvcml0aG06OlNIQV8zODQ6Ci0g
ICAgICAgIHJldHVybiBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzM4NDsKKyAgICAgICAg
cmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ7CiAgICAgY2FzZSBD
b250ZW50U2VjdXJpdHlQb2xpY3lIYXNoQWxnb3JpdGhtOjpTSEFfNTEyOgotICAgICAgICByZXR1
cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CisgICAgICAgIHJldHVybiBQQUw6
OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7
CisgICAgcmV0dXJuIFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4KQEAgLTMzMyw3ICszMzMsNyBAQCBDb250ZW50
U2VjdXJpdHlQb2xpY3k6Okhhc2hJbkVuZm9yY2VkQW5kUmVwb3J0T25seVBvbGljaWVzUGFpciBD
b250ZW50U2VjdXJpdHlQbwogICAgIGJvb2wgZm91bmRIYXNoSW5FbmZvcmNlZFBvbGljaWVzID0g
ZmFsc2U7CiAgICAgYm9vbCBmb3VuZEhhc2hJblJlcG9ydE9ubHlQb2xpY2llcyA9IGZhbHNlOwog
ICAgIGZvciAoYXV0byBhbGdvcml0aG0gOiBhbGdvcml0aG1zKSB7Ci0gICAgICAgIGF1dG8gY3J5
cHRvRGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0o
YWxnb3JpdGhtKSk7CisgICAgICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdl
c3Q6OmNyZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKICAgICAgICAg
Y3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250ZW50Q1N0cmluZy5kYXRhKCksIGNvbnRlbnRDU3Ry
aW5nLmxlbmd0aCgpKTsKICAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5SGFzaCBoYXNoID0g
eyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogICAgICAgICBpZiAo
IWZvdW5kSGFzaEluRW5mb3JjZWRQb2xpY2llcyAmJiBhbGxQb2xpY2llc1dpdGhEaXNwb3NpdGlv
bkFsbG93KENvbnRlbnRTZWN1cml0eVBvbGljeTo6RGlzcG9zaXRpb246OkVuZm9yY2UsIHN0ZDo6
Zm9yd2FyZDxQcmVkaWNhdGU+KHByZWRpY2F0ZSksIGhhc2gpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY3J5cHRvL0NyeXB0b0RpZ2VzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzMWYwNzVhYTM3Y2IzNDYyMDk4NDdhNTk5ZTFmNTQyODRmOWYzODE5Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NyeXB0by9DcnlwdG9EaWdlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENyeXB0b0RpZ2VzdF9oCi0jZGVmaW5lIENyeXB0
b0RpZ2VzdF9oCi0KLSNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENv
bnRleHQ7Ci0KLWNsYXNzIENyeXB0b0RpZ2VzdCB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q3J5cHRvRGlnZXN0KTsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEFsZ29yaXRobSB7Ci0gICAg
ICAgIFNIQV8xLAotICAgICAgICBTSEFfMjI0LAotICAgICAgICBTSEFfMjU2LAotICAgICAgICBT
SEFfMzg0LAotICAgICAgICBTSEFfNTEyLAotICAgIH07Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9EaWdlc3Q+IGNyZWF0ZShBbGdvcml0aG0pOwotICAgIH5DcnlwdG9EaWdlc3Qo
KTsKLQotICAgIHZvaWQgYWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNpemVfdCBsZW5ndGgp
OwotICAgIFZlY3Rvcjx1aW50OF90PiBjb21wdXRlSGFzaCgpOwotCi1wcml2YXRlOgotICAgIENy
eXB0b0RpZ2VzdCgpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdENvbnRleHQ+
IG1fY29udGV4dDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENy
eXB0b0RpZ2VzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8v
Y29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jcnlwdG8vY29tbW9uY3J5cHRvL0NyeXB0b0RpZ2VzdENvbW1vbkNyeXB0by5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzZmZjNTYwNTIyNmI2NGI0OTM3M2Jl
YTY4NWU5MjNmMDE5OWJiNGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2NvbW1vbmNyeXB0by9Dcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ3J5cHRvRGlnZXN0
LmgiCi0KLSNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uQ3J5cHRvLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQgewotICAgIENyeXB0b0Rp
Z2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKLSAgICB2b2lkKiBjY0NvbnRleHQ7Ci19OwotCi1p
bmxpbmUgQ0NfU0hBMV9DVFgqIHRvU0hBMUNvbnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29u
dGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NIQTFfQ1RYKj4o
Y29udGV4dC0+Y2NDb250ZXh0KTsKLX0KLWlubGluZSBDQ19TSEEyNTZfQ1RYKiB0b1NIQTIyNENv
bnRleHQoQ3J5cHRvRGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4
dC0+YWxnb3JpdGhtID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjI0KTsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q0NfU0hBMjU2X0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19
Ci1pbmxpbmUgQ0NfU0hBMjU2X0NUWCogdG9TSEEyNTZDb250ZXh0KENyeXB0b0RpZ2VzdENvbnRl
eHQqIGNvbnRleHQpCi17Ci0gICAgQVNTRVJUKGNvbnRleHQtPmFsZ29yaXRobSA9PSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENDX1NI
QTI1Nl9DVFgqPihjb250ZXh0LT5jY0NvbnRleHQpOwotfQotaW5saW5lIENDX1NIQTUxMl9DVFgq
IHRvU0hBMzg0Q29udGV4dChDcnlwdG9EaWdlc3RDb250ZXh0KiBjb250ZXh0KQotewotICAgIEFT
U0VSVChjb250ZXh0LT5hbGdvcml0aG0gPT0gQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8z
ODQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDQ19TSEE1MTJfQ1RYKj4oY29udGV4dC0+Y2ND
b250ZXh0KTsKLX0KLWlubGluZSBDQ19TSEE1MTJfQ1RYKiB0b1NIQTUxMkNvbnRleHQoQ3J5cHRv
RGlnZXN0Q29udGV4dCogY29udGV4dCkKLXsKLSAgICBBU1NFUlQoY29udGV4dC0+YWxnb3JpdGht
ID09IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q0NfU0hBNTEyX0NUWCo+KGNvbnRleHQtPmNjQ29udGV4dCk7Ci19Ci0KLUNyeXB0b0Rp
Z2VzdDo6Q3J5cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29u
dGV4dCkKLXsKLX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLSAgICBzd2l0
Y2ggKG1fY29udGV4dC0+YWxnb3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29y
aXRobTo6U0hBXzE6Ci0gICAgICAgIGRlbGV0ZSB0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQo
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjI0OgotICAgICAgICBkZWxldGUgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFf
MjU2OgotICAgICAgICBkZWxldGUgdG9TSEEyNTZDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMzg0
OgotICAgICAgICBkZWxldGUgdG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfNTEyOgot
ICAgICAgICBkZWxldGUgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci19Ci0KLQotc3RkOjp1bmlxdWVfcHRyPENyeXB0b0RpZ2VzdD4gQ3J5
cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtKQotewot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0
KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3JpdGhtID0gYWxnb3JpdGhtOwotCi0gICAg
c3dpdGNoIChhbGdvcml0aG0pIHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMTogewotICAgICAgICBDQ19TSEExX0NUWCogY29udGV4dCA9IG5ldyBDQ19TSEExX0NUWDsK
LSAgICAgICAgZGlnZXN0LT5tX2NvbnRleHQtPmNjQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAg
IENDX1NIQTFfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0g
ICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDogewotICAgICAgICBDQ19T
SEEyNTZfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+
bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEEyMjRfSW5pdChj
b250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1NjogewotICAgICAgICBDQ19TSEEyNTZfQ1RYKiBjb250
ZXh0ID0gbmV3IENDX1NIQTI1Nl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0Nv
bnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19TSEEyNTZfSW5pdChjb250ZXh0KTsKLSAgICAg
ICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzM4NDogewotICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NI
QTUxMl9DVFg7Ci0gICAgICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0
OwotICAgICAgICBDQ19TSEEzODRfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2Vz
dDsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzUxMjogewot
ICAgICAgICBDQ19TSEE1MTJfQ1RYKiBjb250ZXh0ID0gbmV3IENDX1NIQTUxMl9DVFg7Ci0gICAg
ICAgIGRpZ2VzdC0+bV9jb250ZXh0LT5jY0NvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBDQ19T
SEE1MTJfSW5pdChjb250ZXh0KTsKLSAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLSAgICB9Ci0gICAg
fQotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCogaW5wdXQsIHNp
emVfdCBsZW5ndGgpCi17Ci0gICAgc3dpdGNoIChtX2NvbnRleHQtPmFsZ29yaXRobSkgewotICAg
IGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xOgotICAgICAgICBDQ19TSEExX1Vw
ZGF0ZSh0b1NIQTFDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBsZW5ndGgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzIyNDoK
LSAgICAgICAgQ0NfU0hBMjI0X1VwZGF0ZSh0b1NIQTIyNENvbnRleHQobV9jb250ZXh0LmdldCgp
KSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIENyeXB0b0RpZ2Vz
dDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICBDQ19TSEEyNTZfVXBkYXRlKHRvU0hBMjU2
Q29udGV4dChtX2NvbnRleHQuZ2V0KCkpLCBpbnB1dCwgbGVuZ3RoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8zODQ6Ci0gICAgICAgIEND
X1NIQTM4NF9VcGRhdGUodG9TSEEzODRDb250ZXh0KG1fY29udGV4dC5nZXQoKSksIGlucHV0LCBs
ZW5ndGgpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzUxMjoKLSAgICAgICAgQ0NfU0hBNTEyX1VwZGF0ZSh0b1NIQTUxMkNvbnRleHQobV9j
b250ZXh0LmdldCgpKSwgaW5wdXQsIGxlbmd0aCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19
Ci0KLVZlY3Rvcjx1aW50OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBW
ZWN0b3I8dWludDhfdD4gcmVzdWx0OwotICAgIHN3aXRjaCAobV9jb250ZXh0LT5hbGdvcml0aG0p
IHsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMToKLSAgICAgICAgcmVz
dWx0LnJlc2l6ZShDQ19TSEExX0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEExX0ZpbmFs
KHJlc3VsdC5kYXRhKCksIHRvU0hBMUNvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAg
ICAgIHJlc3VsdC5yZXNpemUoQ0NfU0hBMjI0X0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19T
SEEyMjRfRmluYWwocmVzdWx0LmRhdGEoKSwgdG9TSEEyMjRDb250ZXh0KG1fY29udGV4dC5nZXQo
KSkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMjU2OgotICAgICAgICByZXN1bHQucmVzaXplKENDX1NIQTI1Nl9ESUdFU1RfTEVOR1RIKTsK
LSAgICAgICAgQ0NfU0hBMjU2X0ZpbmFsKHJlc3VsdC5kYXRhKCksIHRvU0hBMjU2Q29udGV4dCht
X2NvbnRleHQuZ2V0KCkpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgcmVzdWx0LnJlc2l6ZShDQ19TSEEzODRfRElH
RVNUX0xFTkdUSCk7Ci0gICAgICAgIENDX1NIQTM4NF9GaW5hbChyZXN1bHQuZGF0YSgpLCB0b1NI
QTM4NENvbnRleHQobV9jb250ZXh0LmdldCgpKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6Ci0gICAgICAgIHJlc3VsdC5yZXNpemUo
Q0NfU0hBNTEyX0RJR0VTVF9MRU5HVEgpOwotICAgICAgICBDQ19TSEE1MTJfRmluYWwocmVzdWx0
LmRhdGEoKSwgdG9TSEE1MTJDb250ZXh0KG1fY29udGV4dC5nZXQoKSkpOwotICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2djcnlwdC9Dcnlw
dG9EaWdlc3RHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY3J5cHRvL2djcnlw
dC9DcnlwdG9EaWdlc3RHQ3J5cHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
YTNjOGJmMjQzZGMwNzJhYmJhODQ2MTg5NzMzYTBmNTNmZDZjMDRlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvRGlnZXN0R0NyeXB0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KLSAqIENvcHly
aWdodCAoQykgMjAxNiBTb2Z0QXRIb21lCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPGdjcnlwdC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBDcnlwdG9EaWdlc3RDb250ZXh0IHsKLSAgICBpbnQg
YWxnb3JpdGhtOwotICAgIGdjcnlfbWRfaGRfdCBtZDsKLX07Ci0KLUNyeXB0b0RpZ2VzdDo6Q3J5
cHRvRGlnZXN0KCkKLSAgICA6IG1fY29udGV4dChuZXcgQ3J5cHRvRGlnZXN0Q29udGV4dCkKLXsK
LX0KLQotQ3J5cHRvRGlnZXN0Ojp+Q3J5cHRvRGlnZXN0KCkKLXsKLX0KLQotc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0RpZ2VzdD4gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG0gYWxnb3JpdGhtKQotewotICAgIGludCBnY3J5cHRBbGdvcml0aG07Ci0KLSAgICBzd2l0
Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8x
OgotICAgICAgICBnY3J5cHRBbGdvcml0aG0gPSBHQ1JZX01EX1NIQTE7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yMjQ6Ci0gICAgICAgIGdj
cnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBMjI0OwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMjU2OgotICAgICAgICBnY3J5cHRBbGdvcml0
aG0gPSBHQ1JZX01EX1NIQTI1NjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDcnlwdG9EaWdl
c3Q6OkFsZ29yaXRobTo6U0hBXzM4NDoKLSAgICAgICAgZ2NyeXB0QWxnb3JpdGhtID0gR0NSWV9N
RF9TSEEzODQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0
aG06OlNIQV81MTI6Ci0gICAgICAgIGdjcnlwdEFsZ29yaXRobSA9IEdDUllfTURfU0hBNTEyOwot
ICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0
PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGlnZXN0LT5tX2NvbnRleHQtPmFsZ29y
aXRobSA9IGdjcnlwdEFsZ29yaXRobTsKLQotICAgIGdjcnlfbWRfb3BlbigmZGlnZXN0LT5tX2Nv
bnRleHQtPm1kLCBnY3J5cHRBbGdvcml0aG0sIDApOwotICAgIGlmICghZGlnZXN0LT5tX2NvbnRl
eHQtPm1kKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIHJldHVybiBkaWdlc3Q7Ci19
Ci0KLXZvaWQgQ3J5cHRvRGlnZXN0OjphZGRCeXRlcyhjb25zdCB2b2lkKiBpbnB1dCwgc2l6ZV90
IGxlbmd0aCkKLXsKLSAgICBnY3J5X21kX3dyaXRlKG1fY29udGV4dC0+bWQsIGlucHV0LCBsZW5n
dGgpOwotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17
Ci0gICAgaW50IGRpZ2VzdExlbiA9IGdjcnlfbWRfZ2V0X2FsZ29fZGxlbihtX2NvbnRleHQtPmFs
Z29yaXRobSk7Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChkaWdlc3RMZW4pOwotCi0gICAg
Z2NyeV9tZF9maW5hbChtX2NvbnRleHQtPm1kKTsKLSAgICBtZW1jcHkocmVzdWx0LmRhdGEoKSwg
Z2NyeV9tZF9yZWFkKG1fY29udGV4dC0+bWQsIDApLCBkaWdlc3RMZW4pOwotICAgIGdjcnlfbWRf
Y2xvc2UobV9jb250ZXh0LT5tZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlw
dG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jcnlwdG8vZ251dGxzL0NyeXB0b0RpZ2VzdEdudVRMUy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg5YTVkODFmMmI0YmUyNzMyY2VlM2U1MjYzMzg2ZWQ1OWNiMjE0ZGUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY3J5cHRvL2dudXRscy9DcnlwdG9EaWdlc3RHbnVUTFMuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTAyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlh
IFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIkNyeXB0b0RpZ2VzdC5oIgotCi0jaW5jbHVkZSA8Z251dGxzL2dudXRscy5o
PgotI2luY2x1ZGUgPGdudXRscy9jcnlwdG8uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1z
dHJ1Y3QgQ3J5cHRvRGlnZXN0Q29udGV4dCB7Ci0gICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1f
dCBhbGdvcml0aG07Ci0gICAgZ251dGxzX2hhc2hfaGRfdCBoYXNoOwotfTsKLQotQ3J5cHRvRGln
ZXN0OjpDcnlwdG9EaWdlc3QoKQotICAgIDogbV9jb250ZXh0KG5ldyBDcnlwdG9EaWdlc3RDb250
ZXh0KQotewotfQotCi1DcnlwdG9EaWdlc3Q6On5DcnlwdG9EaWdlc3QoKQotewotICAgIGdudXRs
c19oYXNoX2RlaW5pdChtX2NvbnRleHQtPmhhc2gsIDApOwotfQotCi1zdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bSBhbGdvcml0aG0pCi17Ci0gICAgZ251dGxzX2RpZ2VzdF9hbGdvcml0aG1fdCBnbnV0bHNBbGdv
cml0aG07Ci0KLSAgICBzd2l0Y2ggKGFsZ29yaXRobSkgewotICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV8xOiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19E
SUdfU0hBMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpB
bGdvcml0aG06OlNIQV8yMjQ6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExTX0RJ
R19TSEEyMjQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIENyeXB0b0RpZ2VzdDo6
QWxnb3JpdGhtOjpTSEFfMjU2OiB7Ci0gICAgICAgIGdudXRsc0FsZ29yaXRobSA9IEdOVVRMU19E
SUdfU0hBMjU2OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzM4NDogewotICAgICAgICBnbnV0bHNBbGdvcml0aG0gPSBHTlVUTFNf
RElHX1NIQTM4NDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0
OjpBbGdvcml0aG06OlNIQV81MTI6IHsKLSAgICAgICAgZ251dGxzQWxnb3JpdGhtID0gR05VVExT
X0RJR19TSEE1MTI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0KLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBkaWdlc3QobmV3IENyeXB0b0RpZ2VzdCk7Ci0gICAgZGln
ZXN0LT5tX2NvbnRleHQtPmFsZ29yaXRobSA9IGdudXRsc0FsZ29yaXRobTsKLQotICAgIGludCBy
ZXQgPSBnbnV0bHNfaGFzaF9pbml0KCZkaWdlc3QtPm1fY29udGV4dC0+aGFzaCwgZ251dGxzQWxn
b3JpdGhtKTsKLSAgICBpZiAocmV0ICE9IEdOVVRMU19FX1NVQ0NFU1MpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgcmV0dXJuIGRpZ2VzdDsKLX0KLQotdm9pZCBDcnlwdG9EaWdlc3Q6
OmFkZEJ5dGVzKGNvbnN0IHZvaWQqIGlucHV0LCBzaXplX3QgbGVuZ3RoKQotewotICAgIGdudXRs
c19oYXNoKG1fY29udGV4dC0+aGFzaCwgaW5wdXQsIGxlbmd0aCk7Ci19Ci0KLVZlY3Rvcjx1aW50
OF90PiBDcnlwdG9EaWdlc3Q6OmNvbXB1dGVIYXNoKCkKLXsKLSAgICBWZWN0b3I8dWludDhfdD4g
cmVzdWx0OwotICAgIGludCBkaWdlc3RMZW4gPSBnbnV0bHNfaGFzaF9nZXRfbGVuKG1fY29udGV4
dC0+YWxnb3JpdGhtKTsKLSAgICByZXN1bHQucmVzaXplKGRpZ2VzdExlbik7Ci0KLSAgICBnbnV0
bHNfaGFzaF9vdXRwdXQobV9jb250ZXh0LT5oYXNoLCByZXN1bHQuZGF0YSgpKTsKLQotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NyeXB0by93aW4vQ3J5cHRvRGlnZXN0V2luLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZjYzE5MmMyYjMwMzk1OTQzMGYyNDljNzM2MzRi
MTM5YzdhOGE0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jcnlwdG8vd2luL0NyeXB0b0RpZ2VzdFdpbi5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKLQotI2luY2x1ZGUgPHdpbmNyeXB0
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RydWN0IENyeXB0b0RpZ2VzdENvbnRleHQg
ewotICAgIENyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobTsKLSAgICBIQ1JZUFRQUk9W
IGhDb250ZXh0IHsgMCB9OwotICAgIEhDUllQVEhBU0ggaEhhc2ggeyAwIH07Ci19OwotCi1Dcnlw
dG9EaWdlc3Q6OkNyeXB0b0RpZ2VzdCgpCi0gICAgOiBtX2NvbnRleHQobmV3IENyeXB0b0RpZ2Vz
dENvbnRleHQpCi17Ci19Ci0KLUNyeXB0b0RpZ2VzdDo6fkNyeXB0b0RpZ2VzdCgpCi17Ci0gICAg
aWYgKEhDUllQVEhBU0ggaEhhc2ggPSBtX2NvbnRleHQtPmhIYXNoKQotICAgICAgICBDcnlwdERl
c3Ryb3lIYXNoKGhIYXNoKTsKLSAgICBpZiAoSENSWVBUUFJPViBoQ29udGV4dCA9IG1fY29udGV4
dC0+aENvbnRleHQpCi0gICAgICAgIENyeXB0UmVsZWFzZUNvbnRleHQoaENvbnRleHQsIDApOwot
fQotCi1zdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvRGlnZXN0PiBDcnlwdG9EaWdlc3Q6OmNyZWF0ZShB
bGdvcml0aG0gYWxnb3JpdGhtKQotewotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9EaWdlc3Q+
IGRpZ2VzdChuZXcgQ3J5cHRvRGlnZXN0KTsKLSAgICBkaWdlc3QtPm1fY29udGV4dC0+YWxnb3Jp
dGhtID0gYWxnb3JpdGhtOwotICAgIGlmICghQ3J5cHRBY3F1aXJlQ29udGV4dCgmZGlnZXN0LT5t
X2NvbnRleHQtPmhDb250ZXh0LCBudWxscHRyLCBudWxscHRyIC8qIHVzZSBkZWZhdWx0IHByb3Zp
ZGVyICovLCBQUk9WX1JTQV9BRVMsIENSWVBUX1ZFUklGWUNPTlRFWFQpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBib29sIHN1Y2NlZWRlZCA9IGZhbHNlOwotICAgIHN3aXRjaCAoYWxn
b3JpdGhtKSB7Ci0gICAgY2FzZSBDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzE6IHsKLSAg
ICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29u
dGV4dCwgQ0FMR19TSEExLCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8y
NTY6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250
ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMjU2LCAwLCAwLCAmZGlnZXN0LT5tX2NvbnRleHQtPmhI
YXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRvRGlnZXN0OjpBbGdv
cml0aG06OlNIQV8zODQ6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRDcmVhdGVIYXNoKGRp
Z2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfMzg0LCAwLCAwLCAmZGlnZXN0LT5t
X2NvbnRleHQtPmhIYXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgQ3J5cHRv
RGlnZXN0OjpBbGdvcml0aG06OlNIQV81MTI6IHsKLSAgICAgICAgc3VjY2VlZGVkID0gQ3J5cHRD
cmVhdGVIYXNoKGRpZ2VzdC0+bV9jb250ZXh0LT5oQ29udGV4dCwgQ0FMR19TSEFfNTEyLCAwLCAw
LCAmZGlnZXN0LT5tX2NvbnRleHQtPmhIYXNoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IH0KLSAgICBpZiAoc3VjY2VlZGVkKQotICAgICAgICByZXR1cm4gZGlnZXN0OwotICAgIHJldHVy
biBudWxscHRyOwotfQotCi12b2lkIENyeXB0b0RpZ2VzdDo6YWRkQnl0ZXMoY29uc3Qgdm9pZCog
aW5wdXQsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgaWYgKCFpbnB1dCB8fCAhbGVuZ3RoKQotICAg
ICAgICByZXR1cm47Ci0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRIYXNoRGF0YShtX2NvbnRleHQt
PmhIYXNoLCByZWludGVycHJldF9jYXN0PGNvbnN0IEJZVEUqPihpbnB1dCksIGxlbmd0aCwgMCkp
OwotfQotCi1WZWN0b3I8dWludDhfdD4gQ3J5cHRvRGlnZXN0Ojpjb21wdXRlSGFzaCgpCi17Ci0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKLSAgICBEV09SRCBkaWdlc3RMZW5ndGhCdWZmZXI7
Ci0gICAgRFdPUkQgZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSA9IHNpemVvZihkaWdlc3RMZW5ndGhC
dWZmZXIpOwotCi0gICAgUkVMRUFTRV9BU1NFUlQoQ3J5cHRHZXRIYXNoUGFyYW0obV9jb250ZXh0
LT5oSGFzaCwgSFBfSEFTSFNJWkUsIHJlaW50ZXJwcmV0X2Nhc3Q8QllURSo+KCZkaWdlc3RMZW5n
dGhCdWZmZXIpLCAmZGlnZXN0TGVuZ3RoQnVmZmVyU2l6ZSwgMCkpOwotICAgIHJlc3VsdC5yZXNp
emUoZGlnZXN0TGVuZ3RoQnVmZmVyKTsKLQotICAgIFJFTEVBU0VfQVNTRVJUKENyeXB0R2V0SGFz
aFBhcmFtKG1fY29udGV4dC0+aEhhc2gsIEhQX0hBU0hWQUwsIHJlc3VsdC5kYXRhKCksICZkaWdl
c3RMZW5ndGhCdWZmZXIsIDApKTsKLSAgICBSRUxFQVNFX0FTU0VSVChyZXN1bHQuc2l6ZSgpID09
IGRpZ2VzdExlbmd0aEJ1ZmZlcik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1NvdXBOZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA4NTJiOWI4YmVlYmZhMTFi
Y2YzMTQ1ZmE2YmI2MWMyNTA5MzBiZjM4Li4yNmRiN2YyN2QwYTYxZTljOTA5NTA4MmI5YTFjZmJl
NmY4ZDI3ZjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2lu
Y2x1ZGUgIlNvdXBOZXR3b3JrU2Vzc2lvbi5oIgogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCIKLSNpbmNsdWRlICJDcnlwdG9EaWdlc3QuaCIKICNpbmNsdWRlICJGaWxlU3lz
dGVtLmgiCiAjaW5jbHVkZSAiR1VuaXF1ZVB0clNvdXAuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CkBAIC0zOCw2ICszNyw3IEBACiAjaW5jbHVkZSAiU291cE5ldHdvcmtQcm94eVNldHRpbmdzLmgi
CiAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNp
bmNsdWRlIDxwYWwvY3J5cHRvL0NyeXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QmFzZTY0Lmg+CkBAIC03OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghY2VydGlm
aWNhdGVEYXRhKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgICAgIGF1dG8g
ZGlnZXN0ID0gQ3J5cHRvRGlnZXN0OjpjcmVhdGUoQ3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNI
QV8yNTYpOworICAgICAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUo
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CiAgICAgICAgIGRpZ2VzdC0+
YWRkQnl0ZXMoY2VydGlmaWNhdGVEYXRhLT5kYXRhLCBjZXJ0aWZpY2F0ZURhdGEtPmxlbik7CiAK
ICAgICAgICAgYXV0byBoYXNoID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50
eHQKaW5kZXggYzM0MWFiZjU3YzNjOGM4YjVmOGE1NzM3ZmM0Y2M1ZDA0Y2ViMjY5MC4uYzc5MGI1
ZjU1ZjRjNjAxMjQxNTBlMGY2OWNiM2Q3ZTQ2ZWQ0ZjZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBA
IC0zMiw2ICszMiw3IEBAIHNldChXZWJLaXRfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKIHNl
dChXZWJLaXRfTElCUkFSSUVTCiAgICAgUFJJVkFURSBKYXZhU2NyaXB0Q29yZSR7REVCVUdfU1VG
RklYfQogICAgIFBSSVZBVEUgV2ViQ29yZSR7REVCVUdfU1VGRklYfQorICAgIFBSSVZBVEUgUEFM
JHtERUJVR19TVUZGSVh9CiApCiAKIFdFQktJVF9JTkNMVURFX0NPTkZJR19GSUxFU19JRl9FWElT
VFMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCAyZDA0M2EwNmU1NGQxY2RkZTRjZWE4NTBjNjIzODg4
OWQ3M2MwOTFmLi45YTU4ZjlkN2FmMTU3YTNkMDc5MTY1YmQ1ZDY3ZDVhOWY2ZDMzYzk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVm
aW5lcy54Y2NvbmZpZwpAQCAtMSw0ICsxLDQgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwOSwgMjAx
MCwgMjAxNCwgMjAxNSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTQsIDIwMTUsIDIwMTYsIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1NvdXJj
ZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCmluZGV4IDJk
MDQzYTA2ZTU0ZDFjZGRlNGNlYTg1MGM2MjM4ODg5ZDczYzA5MWYuLjlhNThmOWQ3YWYxNTdhM2Qw
NzkxNjViZDVkNjdkNWE5ZjZkMzNjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Nv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCkBAIC0xLDQgKzEsNCBAQAotLy8g
Q29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDE0LCAyMDE1LCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxNCwgMjAx
NSwgMjAxNiwgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vCiAvLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlIGIvU291cmNl
L2NtYWtlL09wdGlvbnNXaW4uY21ha2UKaW5kZXggZmRmMzYxNDA5NThlNTkzNDY1OTFiNjYwMzU4
ODU5NTRhZWM5ZDI1ZS4uYjc4OGMyYjhjMjg1ZjIwZjhkNGJjMzIyNWNhYjdiMjQxZDYxOTg5OSAx
MDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKKysrIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNXaW4uY21ha2UKQEAgLTE4Miw1ICsxODIsNiBAQCBlbmRpZiAoKQogc2V0KFBP
UlQgV2luKQogc2V0KEphdmFTY3JpcHRDb3JlX0xJQlJBUllfVFlQRSBTSEFSRUQpCiBzZXQoV1RG
X0xJQlJBUllfVFlQRSBTSEFSRUQpCitzZXQoUEFMX0xJQlJBUllfVFlQRSBTVEFUSUMpCiAKIGZp
bmRfcGFja2FnZShJQ1UgUkVRVUlSRUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0
RlMuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RlMuY21ha2UKaW5kZXggMjlhMDk2OTAzOGZh
YTc0NGUxYThjNThmMzU2YWQwNzNmMDA1MjViZC4uNTEzMGZmY2JjYzdjOWNlNzUxNGFmNGQ1NTNi
ZDhhNGYwNTAxNDU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL1dlYktpdEZTLmNtYWtlCisr
KyBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGUy5jbWFrZQpAQCAtMTAsNiArMTAsOSBAQCBlbmRpZiAo
KQogaWYgKE5PVCBXRUJDT1JFX0RJUikKICAgICBzZXQoV0VCQ09SRV9ESVIgIiR7Q01BS0VfU09V
UkNFX0RJUn0vU291cmNlL1dlYkNvcmUiKQogZW5kaWYgKCkKK2lmIChOT1QgUEFMX0RJUikKKyAg
ICBzZXQoUEFMX0RJUiAiJHtDTUFLRV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViQ29yZS9QQUwiKQor
ZW5kaWYgKCkKIGlmIChOT1QgV0VCS0lUX0RJUikKICAgICBzZXQoV0VCS0lUX0RJUiAiJHtDTUFL
RV9TT1VSQ0VfRElSfS9Tb3VyY2UvV2ViS2l0IikKIGVuZGlmICgpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2ZlYXR1cmVkZWZpbmVzLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9mZWF0dXJlZGVmaW5lcy5weQppbmRl
eCAyOTc2MmJhM2VhZTZiMWU3MGQ2N2M5OGNlZTM5MmU0N2Y1NjhmZGFkLi40OTFmYzQ5YTgyMTY4
NDNmN2M3ZWI3NTFhNzBkYzE4OGRkMmU2NDE4IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2ZlYXR1cmVkZWZpbmVzLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvZmVhdHVyZWRlZmluZXMucHkKQEAgLTQzLDYgKzQz
LDcgQEAgY2xhc3MgRmVhdHVyZURlZmluZXNDaGVja2VyKG9iamVjdCk6CiAgICAgICAgIGZlYXR1
cmVfZGVmaW5lc19maWxlcyA9IFsKICAgICAgICAgICAgICJTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWciLAogICAgICAgICAgICAgIlNv
dXJjZS9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIiwKKyAg
ICAgICAgICAgICJTb3VyY2UvV2ViQ29yZS9QQUwvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWciLAogICAgICAgICAgICAgIlNvdXJjZS9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIiwKICAgICAgICAgICAgICJTb3VyY2UvV2ViS2l0
Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyIsCiAgICAgICAgICAgICAi
VG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZyIsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwppbmRleCAyZDA0M2EwNmU1NGQxY2RkZTRjZWE4NTBjNjIz
ODg4OWQ3M2MwOTFmLi45YTU4ZjlkN2FmMTU3YTNkMDc5MTY1YmQ1ZDY3ZDVhOWY2ZDMzYzk4IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWcKQEAgLTEsNCArMSw0IEBACi0vLyBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTAsIDIwMTQsIDIwMTUsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDE0LCAyMDE1LCAyMDE2LCAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8KIC8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApkaWZmIC0tZ2l0
IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAppbmRleCBiZjNjNGVmYWIwZWFmMmNh
YzI2YWU3NjZjNzY3YzFhNjY5OWI3YjQ0Li5iYjMzMThjMmI2NTFmZmY2YjNhOWQxN2ZiZDNkNjJm
MTI1NzEyYTI2IDEwMDY0NAotLS0gYS9DTWFrZUxpc3RzLnR4dAorKysgYi9DTWFrZUxpc3RzLnR4
dApAQCAtMTE0LDYgKzExNCw3IEBAIGVsc2UgKCkKIGVuZGlmICgpCiAKIHNldChKYXZhU2NyaXB0
Q29yZV9MSUJSQVJZX1RZUEUgU0hBUkVEKQorc2V0KFBBTF9MSUJSQVJZX1RZUEUgU1RBVElDKQog
c2V0KFdlYktpdF9MSUJSQVJZX1RZUEUgU0hBUkVEKQogc2V0KFdlYktpdDJfTElCUkFSWV9UWVBF
IFNIQVJFRCkKIHNldChXZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFSWV9UWVBFIFNUQVRJQykKZGlm
ZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjODg5OTlkMTMzOGQ0NDhhYjQ5
ZmNmMTdmOGVlMjVlN2NjZjRlMDRiLi4zZjZkMjYyYTYyOTNhY2M1OGEzMDllZTg0YTJjNGZhMGI1
OWNhMDVjIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTctMDEtMjAgIERvbiBPbG1zdGVhZCA8ZG9uLm9sbXN0ZWFkQGFtLnNvbnkuY29t
PiBhbmQgTXlsZXMgQy4gTWF4ZmllbGQgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAg
SW50cm9kdWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMzNTgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFNvdXJjZS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2UvY21h
a2UvV2ViS2l0RlMuY21ha2U6CisKIDIwMTctMDEtMjAgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgb3V0ZGF0ZWQgRU5BQkxFKENTUF9ORVhU
KSBidWlsZCBmbGFnCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>