<?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>117561</bug_id>
          
          <creation_ts>2013-06-12 14:07:03 -0700</creation_ts>
          <short_desc>[Windows] Implement Accessibility2 APIs in Windows</short_desc>
          <delta_ts>2013-06-12 17:05:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>
          
          <blocked>38882</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jonlee</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>899807</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-06-12 14:07:03 -0700</bug_when>
    <thetext>This change exposes the IAccessibility2 interface (http://accessibility.linuxfoundation.org/a11yspecs/ia2/docs/html/index.html) on Windows.

Most of the features are currently stubbed out, but the &quot;attributeValue&quot; method from Bug 117513 has been revised to present the IAccessibility2 interface signature.

Existing tests (such as title-ui-element-correctness.html) cover this behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899811</commentid>
    <comment_count>1</comment_count>
      <attachid>204534</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-06-12 14:24:08 -0700</bug_when>
    <thetext>Created attachment 204534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899813</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-12 14:26:10 -0700</bug_when>
    <thetext>Attachment 204534 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj&apos;, u&apos;Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters&apos;, u&apos;Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesCommon.props&apos;, u&apos;Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj&apos;, u&apos;Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters&apos;, u&apos;Source/WebKit/win/AccessibleBase.cpp&apos;, u&apos;Source/WebKit/win/AccessibleBase.h&apos;, u&apos;Source/WebKit/win/AccessibleDocument.cpp&apos;, u&apos;Source/WebKit/win/AccessibleDocument.h&apos;, u&apos;Source/WebKit/win/AccessibleImage.cpp&apos;, u&apos;Source/WebKit/win/AccessibleImage.h&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/Accessible2.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/Accessible2_2.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/AccessibleApplication.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/AccessibleRelation.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/AccessibleStates.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/IA2CommonTypes.idl&apos;, u&apos;Source/WebKit/win/Interfaces/AccessibleComparable.idl&apos;, u&apos;Source/WebKit/win/Interfaces/WebKit.idl&apos;, u&apos;Source/WebKit/win/WebFrame.cpp&apos;, u&apos;Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp&apos;, u&apos;Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp&apos;]&quot; exit_code: 1
Source/WebKit/win/AccessibleBase.cpp:133:  AccessibleBase::get_attribute is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:145:  AccessibleBase::get_accessibleWithCaret is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:151:  AccessibleBase::get_relationTargetsOfType is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:158:  AccessibleBase::get_nRelations is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:170:  AccessibleBase::get_relation is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:179:  AccessibleBase::get_relations is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:214:  AccessibleBase::get_groupPosition is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:220:  AccessibleBase::get_states is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:233:  AccessibleBase::get_extendedRole is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:245:  AccessibleBase::get_localizedExtendedRole is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:257:  AccessibleBase::get_nExtendedStates is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:270:  AccessibleBase::get_extendedStates is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:276:  AccessibleBase::get_localizedExtendedStates is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:282:  AccessibleBase::get_uniqueID is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:294:  AccessibleBase::get_windowHandle is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:300:  AccessibleBase::get_indexInParent is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:305:  AccessibleBase::get_locale is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:311:  AccessibleBase::get_attributes is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:320:  AccessibleBase::get_accParent is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:513:  AccessibleBase::get_accState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 20 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>899814</commentid>
    <comment_count>3</comment_count>
      <attachid>204535</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-06-12 14:34:31 -0700</bug_when>
    <thetext>Created attachment 204535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899815</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-06-12 14:35:55 -0700</bug_when>
    <thetext>Note: The non-standard &quot;get_XXXXX&quot; method signatures that stylebot is complaining about are mandated by the IAccessible2 specification and IDL.  We can&apos;t change them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899816</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-12 14:37:03 -0700</bug_when>
    <thetext>Attachment 204535 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj&apos;, u&apos;Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters&apos;, u&apos;Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesCommon.props&apos;, u&apos;Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj&apos;, u&apos;Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters&apos;, u&apos;Source/WebKit/win/AccessibleBase.cpp&apos;, u&apos;Source/WebKit/win/AccessibleBase.h&apos;, u&apos;Source/WebKit/win/AccessibleDocument.cpp&apos;, u&apos;Source/WebKit/win/AccessibleDocument.h&apos;, u&apos;Source/WebKit/win/AccessibleImage.cpp&apos;, u&apos;Source/WebKit/win/AccessibleImage.h&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/Accessible2.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/Accessible2_2.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/AccessibleApplication.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/AccessibleRelation.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/AccessibleStates.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/IA2CommonTypes.idl&apos;, u&apos;Source/WebKit/win/Interfaces/AccessibleComparable.idl&apos;, u&apos;Source/WebKit/win/Interfaces/WebKit.idl&apos;, u&apos;Source/WebKit/win/WebFrame.cpp&apos;, u&apos;Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp&apos;, u&apos;Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp&apos;]&quot; exit_code: 1
Source/WebKit/win/AccessibleBase.cpp:134:  AccessibleBase::get_attribute is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:146:  AccessibleBase::get_accessibleWithCaret is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:152:  AccessibleBase::get_relationTargetsOfType is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:159:  AccessibleBase::get_nRelations is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:171:  AccessibleBase::get_relation is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:180:  AccessibleBase::get_relations is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:215:  AccessibleBase::get_groupPosition is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:221:  AccessibleBase::get_states is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:234:  AccessibleBase::get_extendedRole is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:246:  AccessibleBase::get_localizedExtendedRole is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:258:  AccessibleBase::get_nExtendedStates is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:271:  AccessibleBase::get_extendedStates is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:277:  AccessibleBase::get_localizedExtendedStates is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:283:  AccessibleBase::get_uniqueID is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:295:  AccessibleBase::get_windowHandle is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:301:  AccessibleBase::get_indexInParent is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:306:  AccessibleBase::get_locale is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:312:  AccessibleBase::get_attributes is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:321:  AccessibleBase::get_accParent is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:514:  AccessibleBase::get_accState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 20 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>899820</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-06-12 14:51:20 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Attachment 204535 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, &gt; Source/WebKit/win/AccessibleBase.cpp:134:  AccessibleBase::get_attribute is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
[... etc. ...]
&gt; Total errors found: 20 in 24 files

These are all due to IAccessibility2 signature requirements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899831</commentid>
    <comment_count>7</comment_count>
      <attachid>204541</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-06-12 15:41:46 -0700</bug_when>
    <thetext>Created attachment 204541
Revised to not use global constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899832</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-12 15:42:49 -0700</bug_when>
    <thetext>Attachment 204541 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/ChangeLog&apos;, u&apos;Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj&apos;, u&apos;Source/WebKit/WebKit.vcxproj/Interfaces/Interfaces.vcxproj.filters&apos;, u&apos;Source/WebKit/WebKit.vcxproj/Interfaces/InterfacesCommon.props&apos;, u&apos;Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj&apos;, u&apos;Source/WebKit/WebKit.vcxproj/WebKitGUID/WebKitGUID.vcxproj.filters&apos;, u&apos;Source/WebKit/win/AccessibleBase.cpp&apos;, u&apos;Source/WebKit/win/AccessibleBase.h&apos;, u&apos;Source/WebKit/win/AccessibleDocument.cpp&apos;, u&apos;Source/WebKit/win/AccessibleDocument.h&apos;, u&apos;Source/WebKit/win/AccessibleImage.cpp&apos;, u&apos;Source/WebKit/win/AccessibleImage.h&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/Accessible2.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/Accessible2_2.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/AccessibleApplication.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/AccessibleRelation.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/AccessibleStates.idl&apos;, u&apos;Source/WebKit/win/Interfaces/Accessible2/IA2CommonTypes.idl&apos;, u&apos;Source/WebKit/win/Interfaces/AccessibleComparable.idl&apos;, u&apos;Source/WebKit/win/Interfaces/WebKit.idl&apos;, u&apos;Source/WebKit/win/WebFrame.cpp&apos;, u&apos;Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp&apos;, u&apos;Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp&apos;]&quot; exit_code: 1
Source/WebKit/win/AccessibleBase.cpp:135:  AccessibleBase::get_attribute is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:147:  AccessibleBase::get_accessibleWithCaret is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:153:  AccessibleBase::get_relationTargetsOfType is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:160:  AccessibleBase::get_nRelations is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:172:  AccessibleBase::get_relation is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:181:  AccessibleBase::get_relations is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:216:  AccessibleBase::get_groupPosition is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:222:  AccessibleBase::get_states is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:235:  AccessibleBase::get_extendedRole is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:247:  AccessibleBase::get_localizedExtendedRole is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:259:  AccessibleBase::get_nExtendedStates is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:272:  AccessibleBase::get_extendedStates is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:278:  AccessibleBase::get_localizedExtendedStates is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:284:  AccessibleBase::get_uniqueID is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:296:  AccessibleBase::get_windowHandle is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:302:  AccessibleBase::get_indexInParent is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:307:  AccessibleBase::get_locale is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:313:  AccessibleBase::get_attributes is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:322:  AccessibleBase::get_accParent is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Source/WebKit/win/AccessibleBase.cpp:515:  AccessibleBase::get_accState is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 20 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>899859</commentid>
    <comment_count>9</comment_count>
      <attachid>204541</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-06-12 16:39:01 -0700</bug_when>
    <thetext>Comment on attachment 204541
Revised to not use global constructors.

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

&gt; Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp:170
&gt; +static const _bstr_t&amp; titleUIElementAttributeKey()
&gt; +{
&gt; +    static const _bstr_t titleUIElementAttributeKey(L&quot;AXTitleUIElementAttribute&quot;);
&gt; +    return titleUIElementAttributeKey;
&gt; +}

This will create a global destructor. I think it’s fine to recreate the string every time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899870</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-06-12 17:05:38 -0700</bug_when>
    <thetext>Committed r151529: &lt;http://trac.webkit.org/changeset/151529&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204534</attachid>
            <date>2013-06-12 14:24:08 -0700</date>
            <delta_ts>2013-06-12 14:34:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117561-20130612142315.patch</filename>
            <type>text/plain</type>
            <size>101968</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTE1MjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA2LTEyICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBJbXBsZW1lbnQg
QWNjZXNzaWJpbGl0eTIgQVBJcyBpbiBXaW5kb3dzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3NTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQudmN4cHJvai9JbnRlcmZhY2VzL0ludGVy
ZmFjZXMudmN4cHJvajogQWRkIG5ldyBJQWNjZXNzaWJsZTIgSURMIGZpbGVzLgorICAgICAgICAq
IFdlYktpdC52Y3hwcm9qL0ludGVyZmFjZXMvSW50ZXJmYWNlcy52Y3hwcm9qLmZpbHRlcnM6IERp
dHRvLgorICAgICAgICAqIFdlYktpdC52Y3hwcm9qL0ludGVyZmFjZXMvSW50ZXJmYWNlc0NvbW1v
bi5wcm9wczogUmVmZXJlbmNlIG5ldyBBY2Nlc3NpYmxlMiBmb2xkZXIuCisgICAgICAgICogV2Vi
S2l0LnZjeHByb2ovV2ViS2l0R1VJRC9XZWJLaXRHVUlELnZjeHByb2o6IEJ1aWxkIElBY2Nlc3Np
YmxlMiBzeW1ib2xzLgorICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEdVSUQvV2ViS2l0
R1VJRC52Y3hwcm9qLmZpbHRlcnM6IERpdHRvLgorCiAyMDEzLTA2LTEwICBCZWFyIFRyYXZpcyAg
PGJldHJhdmlzQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFNoYXBlc11bQ1NTIEV4Y2x1c2lv
bnNdIFNwbGl0IENTUyBFeGNsdXNpb25zIGFuZCBDU1MgU2hhcGVzIGNvZGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovSW50ZXJmYWNlcy9JbnRlcmZhY2VzLnZjeHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9JbnRlcmZhY2VzL0ludGVy
ZmFjZXMudmN4cHJvagkocmV2aXNpb24gMTUxNTIyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQu
dmN4cHJvai9JbnRlcmZhY2VzL0ludGVyZmFjZXMudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTYxLDYgKzE2MSwxMSBAQAogICAgIDwvTGluaz4NCiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4N
CiAgIDxJdGVtR3JvdXA+DQorICAgIDxNaWRsIEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRlcmZhY2Vz
XEFjY2Vzc2libGUyXEFjY2Vzc2libGUyLmlkbCIgLz4NCisgICAgPE1pZGwgSW5jbHVkZT0iLi5c
Li5cd2luXEludGVyZmFjZXNcQWNjZXNzaWJsZTJcQWNjZXNzaWJsZTJfMi5pZGwiIC8+DQorICAg
IDxNaWRsIEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRlcmZhY2VzXEFjY2Vzc2libGUyXEFjY2Vzc2li
bGVBcHBsaWNhdGlvbi5pZGwiIC8+DQorICAgIDxNaWRsIEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRl
cmZhY2VzXEFjY2Vzc2libGUyXEFjY2Vzc2libGVSZWxhdGlvbi5pZGwiIC8+DQorICAgIDxNaWRs
IEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRlcmZhY2VzXEFjY2Vzc2libGUyXEFjY2Vzc2libGVTdGF0
ZXMuaWRsIiAvPg0KICAgICA8TWlkbCBJbmNsdWRlPSIuLlwuLlx3aW5cSW50ZXJmYWNlc1xBY2Nl
c3NpYmxlQ29tcGFyYWJsZS5pZGwiPg0KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+DQogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCkBAIC0yMzMsNiArMjM4LDcgQEAKICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQogICAg
IDwvTWlkbD4NCisgICAgPE1pZGwgSW5jbHVkZT0iLi5cLi5cd2luXEludGVyZmFjZXNcQWNjZXNz
aWJsZTJcSUEyQ29tbW9uVHlwZXMuaWRsIiAvPg0KICAgICA8TWlkbCBJbmNsdWRlPSIuLlwuLlx3
aW5cSW50ZXJmYWNlc1xJR0VOX0RPTU9iamVjdC5pZGwiPg0KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fp
cm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL0ludGVyZmFjZXMvSW50ZXJmYWNlcy52Y3hwcm9qLmZpbHRlcnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9JbnRlcmZhY2VzL0ludGVy
ZmFjZXMudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNTE1MjIpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL0ludGVyZmFjZXMvSW50ZXJmYWNlcy52Y3hwcm9qLmZpbHRlcnMJKHdv
cmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsMjQgQEAKICAgICA8TWlkbCBJbmNsdWRlPSIuLlwu
Llx3aW5cSW50ZXJmYWNlc1xXZWJLaXQuaWRsIj4NCiAgICAgICA8RmlsdGVyPklETDwvRmlsdGVy
Pg0KICAgICA8L01pZGw+DQorICAgIDxNaWRsIEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRlcmZhY2Vz
XEFjY2Vzc2libGUyXElBMkNvbW1vblR5cGVzLmlkbCI+DQorICAgICAgPEZpbHRlcj5JRExcQWNj
ZXNzaWJpbGl0eTI8L0ZpbHRlcj4NCisgICAgPC9NaWRsPg0KKyAgICA8TWlkbCBJbmNsdWRlPSIu
LlwuLlx3aW5cSW50ZXJmYWNlc1xBY2Nlc3NpYmxlMlxBY2Nlc3NpYmxlMi5pZGwiPg0KKyAgICAg
IDxGaWx0ZXI+SURMXEFjY2Vzc2liaWxpdHkyPC9GaWx0ZXI+DQorICAgIDwvTWlkbD4NCisgICAg
PE1pZGwgSW5jbHVkZT0iLi5cLi5cd2luXEludGVyZmFjZXNcQWNjZXNzaWJsZTJcQWNjZXNzaWJs
ZTJfMi5pZGwiPg0KKyAgICAgIDxGaWx0ZXI+SURMXEFjY2Vzc2liaWxpdHkyPC9GaWx0ZXI+DQor
ICAgIDwvTWlkbD4NCisgICAgPE1pZGwgSW5jbHVkZT0iLi5cLi5cd2luXEludGVyZmFjZXNcQWNj
ZXNzaWJsZTJcQWNjZXNzaWJsZVJlbGF0aW9uLmlkbCI+DQorICAgICAgPEZpbHRlcj5JRExcQWNj
ZXNzaWJpbGl0eTI8L0ZpbHRlcj4NCisgICAgPC9NaWRsPg0KKyAgICA8TWlkbCBJbmNsdWRlPSIu
LlwuLlx3aW5cSW50ZXJmYWNlc1xBY2Nlc3NpYmxlMlxBY2Nlc3NpYmxlU3RhdGVzLmlkbCI+DQor
ICAgICAgPEZpbHRlcj5JRExcQWNjZXNzaWJpbGl0eTI8L0ZpbHRlcj4NCisgICAgPC9NaWRsPg0K
KyAgICA8TWlkbCBJbmNsdWRlPSIuLlwuLlx3aW5cSW50ZXJmYWNlc1xBY2Nlc3NpYmxlMlxBY2Nl
c3NpYmxlQXBwbGljYXRpb24uaWRsIj4NCisgICAgICA8RmlsdGVyPklETFxBY2Nlc3NpYmlsaXR5
MjwvRmlsdGVyPg0KKyAgICA8L01pZGw+DQogICA8L0l0ZW1Hcm91cD4NCiAgIDxJdGVtR3JvdXA+
DQogICAgIDxOb25lIEluY2x1ZGU9IkludGVyZmFjZXNQb3N0QnVpbGQuY21kIiAvPg0KQEAgLTI2
Niw1ICsyODQsOCBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iSURMIj4NCiAgICAgICA8VW5pcXVl
SWRlbnRpZmllcj57NTE2NTJjMDEtZTMwMS00YjcyLTlkOTYtNWQ1MDQ5MWQyNThjfTwvVW5pcXVl
SWRlbnRpZmllcj4NCiAgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSURMXEFj
Y2Vzc2liaWxpdHkyIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MmUxNWZjMzgtZGY2Zi00
NzBmLWIyMDEtMjcyZThkMmQ5MWE0fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+
DQogICA8L0l0ZW1Hcm91cD4NCiA8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9JbnRlcmZhY2VzL0ludGVyZmFj
ZXNDb21tb24ucHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJv
ai9JbnRlcmZhY2VzL0ludGVyZmFjZXNDb21tb24ucHJvcHMJKHJldmlzaW9uIDE1MTUyMikKKysr
IFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovSW50ZXJmYWNlcy9JbnRlcmZhY2VzQ29tbW9u
LnByb3BzCSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogICA8L1Byb3BlcnR5R3JvdXA+
DQogICA8SXRlbURlZmluaXRpb25Hcm91cD4NCiAgICAgPE1pZGw+DQotICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iajMyXFdlYktp
dFxEZXJpdmVkU291cmNlczsuLi8uLi93aW4vSW50ZXJmYWNlczskKEludERpcilcaW5jbHVkZTsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmozMlxXZWJLaXRcRGVyaXZlZFNvdXJjZXM7Li4vLi4vd2luL0ludGVyZmFj
ZXM7Li4vLi4vd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTI7JChJbnREaXIpXGluY2x1ZGU7JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4NCiAgICAgPC9NaWRsPg0KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KICAgPEl0ZW1EZWZp
bml0aW9uR3JvdXA+DQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRH
VUlEL1dlYktpdEdVSUQudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktp
dC52Y3hwcm9qL1dlYktpdEdVSUQvV2ViS2l0R1VJRC52Y3hwcm9qCShyZXZpc2lvbiAxNTE1MjIp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEdVSUQvV2ViS2l0R1VJRC52
Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDEwIEBACiAgIDwvSXRlbUdyb3Vw
Pg0KICAgPEl0ZW1Hcm91cD4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqMzJcV2ViS2l0XEludGVyZmFjZXNcV2ViS2l0X2kuYyIgLz4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqMzJcV2ViS2l0
XEludGVyZmFjZXNcQWNjZXNzaWJsZTJfaS5jIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmozMlxXZWJLaXRcSW50ZXJmYWNlc1xBY2Nlc3Np
YmxlMl8yX2kuYyIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqMzJcV2ViS2l0XEludGVyZmFjZXNcQWNjZXNzaWJsZUFwcGxpY2F0aW9uX2ku
YyIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqMzJcV2ViS2l0XEludGVyZmFjZXNcQWNjZXNzaWJsZVJlbGF0aW9uX2kuYyIgLz4NCiAgIDwv
SXRlbUdyb3VwPg0KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29m
dC5DcHAudGFyZ2V0cyIgLz4NCiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0
cyI+DQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRHVUlEL1dlYktp
dEdVSUQudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0
LnZjeHByb2ovV2ViS2l0R1VJRC9XZWJLaXRHVUlELnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24g
MTUxNTIyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRHVUlEL1dlYktp
dEdVSUQudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC02LDUgKzYsOSBAQAogICA8
L0l0ZW1Hcm91cD4NCiAgIDxJdGVtR3JvdXA+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxXZWJLaXRcSW50ZXJmYWNlc1xXZWJLaXRfaS5jIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpc
V2ViS2l0XEludGVyZmFjZXNcQWNjZXNzaWJsZTJfaS5jIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcV2ViS2l0XEludGVyZmFjZXNcQWNj
ZXNzaWJsZTJfMl9pLmMiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9ialxXZWJLaXRcSW50ZXJmYWNlc1xBY2Nlc3NpYmxlQXBwbGljYXRpb25f
aS5jIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmpcV2ViS2l0XEludGVyZmFjZXNcQWNjZXNzaWJsZVJlbGF0aW9uX2kuYyIgLz4NCiAgIDwv
SXRlbUdyb3VwPg0KIDwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTE1MjMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMy0wNi0xMiAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gSW1w
bGVtZW50IEFjY2Vzc2liaWxpdHkyIEFQSXMgaW4gV2luZG93cy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzU2MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQWNjZXNzaWJsZUJhc2UuY3BwOiBBZGQg
c3R1YnMgZm9yIElBY2Nlc3NpYmxlMiBpbnRlcmZhY2UsIHJlcGxhY2UgYXR0cmlidXRlVmFsdWUK
KyAgICAgICAgbWV0aG9kIHdpdGggZ2V0X2F0dHJpYnV0ZSBmcm9tIElBY2Nlc3NpYmxlMiBBUEku
CisgICAgICAgICogQWNjZXNzaWJsZUJhc2UuaDogRGl0dG8uCisgICAgICAgICogQWNjZXNzaWJs
ZURvY3VtZW50LmNwcDogUmV2aXNlIHNpZ25hdHVyZXMgZm9yIElBY2Nlc3NpYmxlMi4KKyAgICAg
ICAgKiBBY2Nlc3NpYmxlRG9jdW1lbnQuaDogRGl0dG8uCisgICAgICAgICogQWNjZXNzaWJsZUlt
YWdlLmNwcDogUmV2aXNlIHNpZ25hdHVyZXMgZm9yIElBY2Nlc3NpYmxlMi4KKyAgICAgICAgKiBB
Y2Nlc3NpYmxlSW1hZ2UuaDogRGl0dG8uCisgICAgICAgICogSW50ZXJmYWNlcy9BY2Nlc3NpYmxl
MjogQWRkZWQuCisgICAgICAgICogSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlMi5p
ZGw6IEFkZGVkLgorICAgICAgICAqIEludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZTJf
Mi5pZGw6IEFkZGVkLgorICAgICAgICAqIEludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJs
ZUFwcGxpY2F0aW9uLmlkbDogQWRkZWQuCisgICAgICAgICogSW50ZXJmYWNlcy9BY2Nlc3NpYmxl
Mi9BY2Nlc3NpYmxlUmVsYXRpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBJbnRlcmZhY2VzL0Fj
Y2Vzc2libGUyL0FjY2Vzc2libGVTdGF0ZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBJbnRlcmZh
Y2VzL0FjY2Vzc2libGUyL0lBMkNvbW1vblR5cGVzLmlkbDogQWRkZWQuCisgICAgICAgICogSW50
ZXJmYWNlcy9BY2Nlc3NpYmxlQ29tcGFyYWJsZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9X
ZWJLaXQuaWRsOiBSZWZlcmVuY2UgSUFjY2Vzc2libGUyIHR5cGVzLgorICAgICAgICAqIFdlYkZy
YW1lLmNwcDogCisgICAgICAgIChXZWJGcmFtZTo6YWNjZXNzaWJsZSk6IFBhc3Mgd2luZG93IGhh
bmRsZSB0byBJQWNjZXNzaWJsZSB0eXBlcy4KKwogMjAxMy0wNi0xMiAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luZG93c10gU3VwcG9ydCBUaXRsZSBV
SSBFbGVtZW50IEFjY2Vzc2liaWxpdHkgQXR0cmlidXRlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9BY2Nlc3NpYmxlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQWNj
ZXNzaWJsZUJhc2UuY3BwCShyZXZpc2lvbiAxNTE1MjIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9B
Y2Nlc3NpYmxlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9I
VE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1F
dmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlck9iamVjdC5oPgpAQCAtNTMsOCArNTQsOSBAQAogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotQWNjZXNzaWJsZUJhc2U6OkFjY2Vzc2libGVCYXNlKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iaikKK0FjY2Vzc2libGVCYXNlOjpBY2Nlc3NpYmxlQmFzZShBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQogICAgIDogQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIob2JqKQorICAgICwgbV93aW5kb3cod2luZG93KQogICAgICwgbV9yZWZDb3VudCgwKQogewog
ICAgIEFTU0VSVF9BUkcob2JqLCBvYmopOwpAQCAtNjksMTkgKzcxLDIyIEBAIEFjY2Vzc2libGVC
YXNlOjp+QWNjZXNzaWJsZUJhc2UoKQogICAgIGdDbGFzc05hbWVDb3VudC5yZW1vdmUoIkFjY2Vz
c2libGVCYXNlIik7CiB9CiAKLUFjY2Vzc2libGVCYXNlKiBBY2Nlc3NpYmxlQmFzZTo6Y3JlYXRl
SW5zdGFuY2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQorQWNjZXNzaWJsZUJhc2UqIEFjY2Vz
c2libGVCYXNlOjpjcmVhdGVJbnN0YW5jZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQg
d2luZG93KQogewogICAgIEFTU0VSVF9BUkcob2JqLCBvYmopOwogCiAgICAgaWYgKG9iai0+aXNJ
bWFnZSgpKQotICAgICAgICByZXR1cm4gbmV3IEFjY2Vzc2libGVJbWFnZShvYmopOworICAgICAg
ICByZXR1cm4gbmV3IEFjY2Vzc2libGVJbWFnZShvYmosIHdpbmRvdyk7CiAKLSAgICByZXR1cm4g
bmV3IEFjY2Vzc2libGVCYXNlKG9iaik7CisgICAgcmV0dXJuIG5ldyBBY2Nlc3NpYmxlQmFzZShv
YmosIHdpbmRvdyk7CiB9CiAKIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OlF1ZXJ5U2VydmljZShS
RUZHVUlEIGd1aWRTZXJ2aWNlLCBSRUZJSUQgcmlpZCwgdm9pZCAqKnBwdk9iamVjdCkKIHsKLSAg
ICBpZiAoIUlzRXF1YWxHVUlEKGd1aWRTZXJ2aWNlLCBTSURfQWNjZXNzaWJsZUNvbXBhcmFibGUp
KSB7CisgICAgaWYgKCFJc0VxdWFsR1VJRChndWlkU2VydmljZSwgU0lEX0FjY2Vzc2libGVDb21w
YXJhYmxlKQorICAgICAgICAmJiAhSXNFcXVhbEdVSUQoZ3VpZFNlcnZpY2UsIElJRF9JQWNjZXNz
aWJsZTIpCisgICAgICAgICYmICFJc0VxdWFsR1VJRChndWlkU2VydmljZSwgSUlEX0lBY2Nlc3Np
YmxlQXBwbGljYXRpb24pCisgICAgICAgICYmICFJc0VxdWFsR1VJRChndWlkU2VydmljZSwgSUlE
X0lBY2Nlc3NpYmxlKSkgewogICAgICAgICAqcHB2T2JqZWN0ID0gMDsKICAgICAgICAgcmV0dXJu
IEVfSU5WQUxJREFSRzsKICAgICB9CkBAIC05Nyw2ICsxMDIsMTAgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBBY2Nlc3NpYmxlQmFzZQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nh
c3Q8SUFjY2Vzc2libGUqPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBf
X3V1aWRvZihJVW5rbm93bikpKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SUFj
Y2Vzc2libGUqPih0aGlzKTsKKyAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBfX3V1aWRv
ZihJQWNjZXNzaWJsZTJfMikpKQorICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SUFj
Y2Vzc2libGUyXzIqPih0aGlzKTsKKyAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBfX3V1
aWRvZihJQWNjZXNzaWJsZTIpKSkKKyAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElB
Y2Nlc3NpYmxlMio+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1YWxHVUlEKHJpaWQsIF9fdXVp
ZG9mKElBY2Nlc3NpYmxlQ29tcGFyYWJsZSkpKQogICAgICAgICAqcHB2T2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SUFjY2Vzc2libGVDb21wYXJhYmxlKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVh
bEdVSUQocmlpZCwgX191dWlkb2YoSVNlcnZpY2VQcm92aWRlcikpKQpAQCAtMTIwLDggKzEyOSwx
OTUgQEAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJsZUJhc2U6OgogICAgIHJldHVy
biAwOwogfQogCisvLyBJQWNjZXNzaWJsZTJfMgorSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0
X2F0dHJpYnV0ZShCU1RSIGtleSwgVkFSSUFOVCogdmFsdWUpCit7CisgICAgaWYgKCF2YWx1ZSkK
KyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgIEF0b21pY1N0cmluZyBrZXlBdG9taWMo
a2V5LCA6OlN5c1N0cmluZ0xlbihrZXkpKTsKKworICAgIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZShrZXlBdG9taWMsIHZhbHVlKTsKKworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxU
IEFjY2Vzc2libGVCYXNlOjpnZXRfYWNjZXNzaWJsZVdpdGhDYXJldChJVW5rbm93bioqIGFjY2Vz
c2libGUsIGxvbmcqIGNhcmV0T2Zmc2V0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIEVfTk9USU1QTDsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X3JlbGF0
aW9uVGFyZ2V0c09mVHlwZShCU1RSIHR5cGUsIGxvbmcgbWF4VGFyZ2V0cywgSVVua25vd24qKiog
dGFyZ2V0cywgbG9uZyogblRhcmdldHMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gRV9OT1RJTVBMOworfQorCisvLyBJQWNjZXNzaWJsZTIKK0hSRVNVTFQgQWNjZXNzaWJs
ZUJhc2U6OmdldF9uUmVsYXRpb25zKGxvbmcqIG5SZWxhdGlvbnMpCit7CisgICAgaWYgKCFuUmVs
YXRpb25zKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgaWYgKCFtX29iamVjdCkK
KyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICpuUmVs
YXRpb25zID0gMDsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxlQmFz
ZTo6Z2V0X3JlbGF0aW9uKGxvbmcgcmVsYXRpb25JbmRleCwgSUFjY2Vzc2libGVSZWxhdGlvbioq
IHJlbGF0aW9uKQoreworICAgIGlmICghcmVsYXRpb24pCisgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisK
K0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9yZWxhdGlvbnMobG9uZyBtYXhSZWxhdGlvbnMs
IElBY2Nlc3NpYmxlUmVsYXRpb24qKiByZWxhdGlvbnMsIGxvbmcqIG5SZWxhdGlvbnMpCit7Cisg
ICAgaWYgKCFyZWxhdGlvbnMgfHwgIW5SZWxhdGlvbnMpCisgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisK
K0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OnJvbGUobG9uZyogcm9sZSkKK3sKKyAgICBpZiAoIXJv
bGUpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAgICBpZiAoIW1fb2JqZWN0KQorICAg
ICAgICByZXR1cm4gRV9GQUlMOworCisgICAgKnJvbGUgPSB3cmFwcGVyKG1fb2JqZWN0KS0+cm9s
ZSgpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpzY3Jv
bGxUbyhJQTJTY3JvbGxUeXBlIHNjcm9sbFR5cGUpCit7CisgICAgaWYgKCFtX29iamVjdCkKKyAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICByZXR1cm4gU19GQUxTRTsKK30KKworSFJFU1VMVCBB
Y2Nlc3NpYmxlQmFzZTo6c2Nyb2xsVG9Qb2ludChJQTJDb29yZGluYXRlVHlwZSBjb29yZGluYXRl
VHlwZSwgbG9uZyB4LCBsb25nIHkpCit7CisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0
dXJuIEVfRkFJTDsKKyAgICByZXR1cm4gU19GQUxTRTsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxl
QmFzZTo6Z2V0X2dyb3VwUG9zaXRpb24obG9uZyogZ3JvdXBMZXZlbCwgbG9uZyogc2ltaWxhckl0
ZW1zSW5Hcm91cCwgbG9uZyogcG9zaXRpb25Jbkdyb3VwKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIEVfTk9USU1QTDsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6
Z2V0X3N0YXRlcyhBY2Nlc3NpYmxlU3RhdGVzKiBzdGF0ZXMpCit7CisgICAgaWYgKCFzdGF0ZXMp
CisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAg
ICByZXR1cm4gRV9GQUlMOworCisgICAgKnN0YXRlcyA9IDA7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2V4
dGVuZGVkUm9sZShCU1RSKiBleHRlbmRlZFJvbGUpCit7CisgICAgaWYgKCFleHRlbmRlZFJvbGUp
CisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAg
ICByZXR1cm4gRV9GQUlMOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU19G
QUxTRTsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2xvY2FsaXplZEV4dGVuZGVk
Um9sZShCU1RSKiBsb2NhbGl6ZWRFeHRlbmRlZFJvbGUpCit7CisgICAgaWYgKCFsb2NhbGl6ZWRF
eHRlbmRlZFJvbGUpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAgICBpZiAoIW1fb2Jq
ZWN0KQorICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gU19GQUxTRTsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X25FeHRl
bmRlZFN0YXRlcyhsb25nKiBuRXh0ZW5kZWRTdGF0ZXMpCit7CisgICAgaWYgKCFuRXh0ZW5kZWRT
dGF0ZXMpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAgICBpZiAoIW1fb2JqZWN0KQor
ICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAqbkV4
dGVuZGVkU3RhdGVzID0gMDsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBBY2Nlc3Np
YmxlQmFzZTo6Z2V0X2V4dGVuZGVkU3RhdGVzKGxvbmcgbWF4RXh0ZW5kZWRTdGF0ZXMsIEJTVFIq
KiBleHRlbmRlZFN0YXRlcywgbG9uZyogbkV4dGVuZGVkU3RhdGVzKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgcmV0dXJuIEVfTk9USU1QTDsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxl
QmFzZTo6Z2V0X2xvY2FsaXplZEV4dGVuZGVkU3RhdGVzKGxvbmcgbWF4TG9jYWxpemVkRXh0ZW5k
ZWRTdGF0ZXMsIEJTVFIqKiBsb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcywgbG9uZyogbkxvY2FsaXpl
ZEV4dGVuZGVkU3RhdGVzKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEVf
Tk9USU1QTDsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X3VuaXF1ZUlEKGxvbmcq
IHVuaXF1ZUlEKQoreworICAgIGlmICghdW5pcXVlSUQpCisgICAgICAgIHJldHVybiBFX1BPSU5U
RVI7CisKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm4gRV9GQUlMOworCisgICAg
KnVuaXF1ZUlEID0gc3RhdGljX2Nhc3Q8bG9uZz4obV9vYmplY3QtPmF4T2JqZWN0SUQoKSk7Cisg
ICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF93aW5kb3dI
YW5kbGUoSFdORCogd2luZG93SGFuZGxlKQoreworICAgICp3aW5kb3dIYW5kbGUgPSBtX3dpbmRv
dzsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2lu
ZGV4SW5QYXJlbnQobG9uZyogaW5kZXhJblBhcmVudCkKK3sKKyAgICByZXR1cm4gRV9OT1RJTVBM
OworfQorCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfbG9jYWxlKElBMkxvY2FsZSogbG9j
YWxlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEVfTk9USU1QTDsKK30K
KworSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2F0dHJpYnV0ZXMoQlNUUiogYXR0cmlidXRl
cykKK3sKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm4gRV9GQUlMOworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFNfRkFMU0U7Cit9CisKIC8vIElBY2Nlc3NpYmxl
Ci1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEFjY2Vzc2libGVCYXNlOjpnZXRfYWNjUGFyZW50
KElEaXNwYXRjaCoqIHBhcmVudCkKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9hY2NQYXJl
bnQoSURpc3BhdGNoKiogcGFyZW50KQogewogICAgICpwYXJlbnQgPSAwOwogCkBAIC0xMzUsMTAg
KzMzMSwxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEFjY2Vzc2libGVCYXNlCiAgICAg
ICAgIHJldHVybiBTX09LOwogICAgIH0KIAotICAgIGlmICghbV9vYmplY3QtPnRvcERvY3VtZW50
RnJhbWVWaWV3KCkpCisgICAgaWYgKCFtX3dpbmRvdykKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IAotICAgIHJldHVybiBXZWJWaWV3OjpBY2Nlc3NpYmxlT2JqZWN0RnJvbVdpbmRvdyhtX29iamVj
dC0+dG9wRG9jdW1lbnRGcmFtZVZpZXcoKS0+aG9zdFdpbmRvdygpLT5wbGF0Zm9ybVBhZ2VDbGll
bnQoKSwKKyAgICByZXR1cm4gV2ViVmlldzo6QWNjZXNzaWJsZU9iamVjdEZyb21XaW5kb3cobV93
aW5kb3csCiAgICAgICAgIE9CSklEX1dJTkRPVywgX191dWlkb2YoSUFjY2Vzc2libGUpLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4ocGFyZW50KSk7CiB9CiAKQEAgLTI1MCw3OSArNDQ2LDg1IEBA
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJsZUJhc2UKICAgICByZXR1cm4gU19P
SzsKIH0KIAotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2Fj
Y1N0YXRlKFZBUklBTlQgdkNoaWxkLCBWQVJJQU5UKiBwdlN0YXRlKQorbG9uZyBBY2Nlc3NpYmxl
QmFzZTo6c3RhdGUoKSBjb25zdAogewotICAgIGlmICghcHZTdGF0ZSkKLSAgICAgICAgcmV0dXJu
IEVfUE9JTlRFUjsKKyAgICBsb25nIHN0YXRlID0gMDsKKyAgICBpZiAobV9vYmplY3QtPmlzTGlu
a2VkKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZU1RFTV9MSU5LRUQ7CiAKLSAgICA6OlZh
cmlhbnRJbml0KHB2U3RhdGUpOworICAgIGlmIChtX29iamVjdC0+aXNIb3ZlcmVkKCkpCisgICAg
ICAgIHN0YXRlIHw9IFNUQVRFX1NZU1RFTV9IT1RUUkFDS0VEOwogCi0gICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogY2hpbGRPYmo7Ci0gICAgSFJFU1VMVCBociA9IGdldEFjY2Vzc2liaWxpdHlPYmpl
Y3RGb3JDaGlsZCh2Q2hpbGQsIGNoaWxkT2JqKTsKKyAgICBpZiAoIW1fb2JqZWN0LT5pc0VuYWJs
ZWQoKSkKKyAgICAgICAgc3RhdGUgfD0gU1RBVEVfU1lTVEVNX1VOQVZBSUxBQkxFOwogCi0gICAg
aWYgKEZBSUxFRChocikpCi0gICAgICAgIHJldHVybiBocjsKKyAgICBpZiAobV9vYmplY3QtPmlz
UmVhZE9ubHkoKSkKKyAgICAgICAgc3RhdGUgfD0gU1RBVEVfU1lTVEVNX1JFQURPTkxZOwogCi0g
ICAgcHZTdGF0ZS0+dnQgPSBWVF9JNDsKLSAgICBwdlN0YXRlLT5sVmFsID0gMDsKKyAgICBpZiAo
bV9vYmplY3QtPmlzT2ZmU2NyZWVuKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZU1RFTV9P
RkZTQ1JFRU47CiAKLSAgICBpZiAoY2hpbGRPYmotPmlzTGlua2VkKCkpCi0gICAgICAgIHB2U3Rh
dGUtPmxWYWwgfD0gU1RBVEVfU1lTVEVNX0xJTktFRDsKKyAgICBpZiAobV9vYmplY3QtPmlzUGFz
c3dvcmRGaWVsZCgpKQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9TWVNURU1fUFJPVEVDVEVEOwog
Ci0gICAgaWYgKGNoaWxkT2JqLT5pc0hvdmVyZWQoKSkKLSAgICAgICAgcHZTdGF0ZS0+bFZhbCB8
PSBTVEFURV9TWVNURU1fSE9UVFJBQ0tFRDsKKyAgICBpZiAobV9vYmplY3QtPmlzSW5kZXRlcm1p
bmF0ZSgpKQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9TWVNURU1fSU5ERVRFUk1JTkFURTsKIAot
ICAgIGlmICghY2hpbGRPYmotPmlzRW5hYmxlZCgpKQotICAgICAgICBwdlN0YXRlLT5sVmFsIHw9
IFNUQVRFX1NZU1RFTV9VTkFWQUlMQUJMRTsKKyAgICBpZiAobV9vYmplY3QtPmlzQ2hlY2tlZCgp
KQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9TWVNURU1fQ0hFQ0tFRDsKIAotICAgIGlmIChjaGls
ZE9iai0+aXNSZWFkT25seSgpKQotICAgICAgICBwdlN0YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RF
TV9SRUFET05MWTsKKyAgICBpZiAobV9vYmplY3QtPmlzUHJlc3NlZCgpKQorICAgICAgICBzdGF0
ZSB8PSBTVEFURV9TWVNURU1fUFJFU1NFRDsKIAotICAgIGlmIChjaGlsZE9iai0+aXNPZmZTY3Jl
ZW4oKSkKLSAgICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNURU1fT0ZGU0NSRUVOOwor
ICAgIGlmIChtX29iamVjdC0+aXNGb2N1c2VkKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZ
U1RFTV9GT0NVU0VEOwogCi0gICAgaWYgKGNoaWxkT2JqLT5pc1Bhc3N3b3JkRmllbGQoKSkKLSAg
ICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNURU1fUFJPVEVDVEVEOworICAgIGlmICht
X29iamVjdC0+aXNWaXNpdGVkKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZU1RFTV9UUkFW
RVJTRUQ7CiAKLSAgICBpZiAoY2hpbGRPYmotPmlzSW5kZXRlcm1pbmF0ZSgpKQotICAgICAgICBw
dlN0YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RFTV9JTkRFVEVSTUlOQVRFOworICAgIGlmIChtX29i
amVjdC0+Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkKKyAgICAgICAgc3RhdGUgfD0gU1RBVEVfU1lT
VEVNX0ZPQ1VTQUJMRTsKIAotICAgIGlmIChjaGlsZE9iai0+aXNDaGVja2VkKCkpCi0gICAgICAg
IHB2U3RhdGUtPmxWYWwgfD0gU1RBVEVfU1lTVEVNX0NIRUNLRUQ7CisgICAgaWYgKG1fb2JqZWN0
LT5pc1NlbGVjdGVkKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZU1RFTV9TRUxFQ1RFRDsK
IAotICAgIGlmIChjaGlsZE9iai0+aXNQcmVzc2VkKCkpCi0gICAgICAgIHB2U3RhdGUtPmxWYWwg
fD0gU1RBVEVfU1lTVEVNX1BSRVNTRUQ7CisgICAgaWYgKG1fb2JqZWN0LT5jYW5TZXRTZWxlY3Rl
ZEF0dHJpYnV0ZSgpKQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9TWVNURU1fU0VMRUNUQUJMRTsK
IAotICAgIGlmIChjaGlsZE9iai0+aXNGb2N1c2VkKCkpCi0gICAgICAgIHB2U3RhdGUtPmxWYWwg
fD0gU1RBVEVfU1lTVEVNX0ZPQ1VTRUQ7CisgICAgaWYgKG1fb2JqZWN0LT5pc011bHRpU2VsZWN0
YWJsZSgpKQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9TWVNURU1fRVhUU0VMRUNUQUJMRSB8IFNU
QVRFX1NZU1RFTV9NVUxUSVNFTEVDVEFCTEU7CiAKLSAgICBpZiAoY2hpbGRPYmotPmlzVmlzaXRl
ZCgpKQotICAgICAgICBwdlN0YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RFTV9UUkFWRVJTRUQ7Cisg
ICAgaWYgKCFtX29iamVjdC0+aXNWaXNpYmxlKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZ
U1RFTV9JTlZJU0lCTEU7CiAKLSAgICBpZiAoY2hpbGRPYmotPmNhblNldEZvY3VzQXR0cmlidXRl
KCkpCi0gICAgICAgIHB2U3RhdGUtPmxWYWwgfD0gU1RBVEVfU1lTVEVNX0ZPQ1VTQUJMRTsKKyAg
ICBpZiAobV9vYmplY3QtPmlzQ29sbGFwc2VkKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZ
U1RFTV9DT0xMQVBTRUQ7CiAKLSAgICBpZiAoY2hpbGRPYmotPmlzU2VsZWN0ZWQoKSkKLSAgICAg
ICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNURU1fU0VMRUNURUQ7CisgICAgaWYgKG1fb2Jq
ZWN0LT5yb2xlVmFsdWUoKSA9PSBQb3BVcEJ1dHRvblJvbGUpIHsKKyAgICAgICAgc3RhdGUgfD0g
U1RBVEVfU1lTVEVNX0hBU1BPUFVQOwogCi0gICAgaWYgKGNoaWxkT2JqLT5jYW5TZXRTZWxlY3Rl
ZEF0dHJpYnV0ZSgpKQotICAgICAgICBwdlN0YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RFTV9TRUxF
Q1RBQkxFOworICAgICAgICBpZiAoIW1fb2JqZWN0LT5pc0NvbGxhcHNlZCgpKQorICAgICAgICAg
ICAgc3RhdGUgfD0gU1RBVEVfU1lTVEVNX0VYUEFOREVEOworICAgIH0KIAotICAgIGlmIChjaGls
ZE9iai0+aXNNdWx0aVNlbGVjdGFibGUoKSkKLSAgICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFU
RV9TWVNURU1fRVhUU0VMRUNUQUJMRSB8IFNUQVRFX1NZU1RFTV9NVUxUSVNFTEVDVEFCTEU7Cisg
ICAgcmV0dXJuIHN0YXRlOworfQogCi0gICAgaWYgKCFjaGlsZE9iai0+aXNWaXNpYmxlKCkpCi0g
ICAgICAgIHB2U3RhdGUtPmxWYWwgfD0gU1RBVEVfU1lTVEVNX0lOVklTSUJMRTsKK0hSRVNVTFQg
QWNjZXNzaWJsZUJhc2U6OmdldF9hY2NTdGF0ZShWQVJJQU5UIHZDaGlsZCwgVkFSSUFOVCogcHZT
dGF0ZSkKK3sKKyAgICBpZiAoIXB2U3RhdGUpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAK
LSAgICBpZiAoY2hpbGRPYmotPmlzQ29sbGFwc2VkKCkpCi0gICAgICAgIHB2U3RhdGUtPmxWYWwg
fD0gU1RBVEVfU1lTVEVNX0NPTExBUFNFRDsKKyAgICA6OlZhcmlhbnRJbml0KHB2U3RhdGUpOwog
Ci0gICAgaWYgKGNoaWxkT2JqLT5yb2xlVmFsdWUoKSA9PSBQb3BVcEJ1dHRvblJvbGUpIHsKLSAg
ICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNURU1fSEFTUE9QVVA7CisgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogY2hpbGRPYmo7CisgICAgSFJFU1VMVCBociA9IGdldEFjY2Vzc2liaWxp
dHlPYmplY3RGb3JDaGlsZCh2Q2hpbGQsIGNoaWxkT2JqKTsKIAotICAgICAgICBpZiAoIWNoaWxk
T2JqLT5pc0NvbGxhcHNlZCgpKQotICAgICAgICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9T
WVNURU1fRVhQQU5ERUQ7Ci0gICAgfQorICAgIGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1
cm4gaHI7CisKKyAgICBwdlN0YXRlLT52dCA9IFZUX0k0OworICAgIHB2U3RhdGUtPmxWYWwgPSB3
cmFwcGVyKGNoaWxkT2JqKS0+c3RhdGUoKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtODIw
LDExICsxMDIyLDExIEBAIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldEFjY2Vzc2liaWxpdHkK
ICAgICByZXR1cm4gU19PSzsKIH0KIAotQWNjZXNzaWJsZUJhc2UqIEFjY2Vzc2libGVCYXNlOjp3
cmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK0FjY2Vzc2libGVCYXNlKiBBY2Nlc3Np
YmxlQmFzZTo6d3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopIGNvbnN0CiB7CiAgICAg
QWNjZXNzaWJsZUJhc2UqIHJlc3VsdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2libGVCYXNlKj4ob2Jq
LT53cmFwcGVyKCkpOwogICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXN1bHQgPSBjcmVhdGVJ
bnN0YW5jZShvYmopOworICAgICAgICByZXN1bHQgPSBjcmVhdGVJbnN0YW5jZShvYmosIG1fd2lu
ZG93KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC04MzQsMTUgKzEwMzYsMyBAQCBIUkVT
VUxUIEFjY2Vzc2libGVCYXNlOjppc1NhbWVPYmplY3QoSUFjCiAgICAgKnJlc3VsdCA9IChvdGhl
ckFjY2Vzc2libGVCYXNlID09IHRoaXMgfHwgb3RoZXJBY2Nlc3NpYmxlQmFzZS0+bV9vYmplY3Qg
PT0gbV9vYmplY3QpOwogICAgIHJldHVybiBTX09LOwogfQotCi1IUkVTVUxUIEFjY2Vzc2libGVC
YXNlOjphdHRyaWJ1dGVWYWx1ZShCU1RSIGtleSwgVkFSSUFOVCogdmFsdWUpCi17Ci0gICAgaWYg
KCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKLQotICAgIEF0b21pY1N0cmluZyBr
ZXlBdG9taWMoa2V5LCA6OlN5c1N0cmluZ0xlbihrZXkpKTsKLQotICAgIGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZShrZXlBdG9taWMsIHZhbHVlKTsKLQotICAgIHJldHVybiBTX09LOwotfQpJ
bmRleDogU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZUJhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlQmFzZS5oCShyZXZpc2lvbiAxNTE1MjIpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw3IEBACiAKIGNsYXNzIERFQ0xTUEVDX1VVSUQoIjNkYmQ1NjViLWRiMjItNGQ4OC04ZTBl
LTc3OGJkZTU0NTI0YSIpIEFjY2Vzc2libGVCYXNlIDogcHVibGljIElBY2Nlc3NpYmxlQ29tcGFy
YWJsZSwgcHVibGljIElTZXJ2aWNlUHJvdmlkZXIsIHB1YmxpYyBXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEFjY2Vzc2libGVCYXNlKiBj
cmVhdGVJbnN0YW5jZShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CisgICAgc3RhdGlj
IEFjY2Vzc2libGVCYXNlKiBjcmVhdGVJbnN0YW5jZShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiwgSFdORCk7CiAKICAgICAvLyBJU2VydmljZVByb3ZpZGVyCiAgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5U2VydmljZShSRUZHVUlEIGd1aWRTZXJ2aWNlLCBS
RUZJSUQgcmlpZCwgdm9pZCAqKnBwdik7CkBAIC00Miw2ICs0MiwzMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCkgeyByZXR1cm4gKytt
X3JlZkNvdW50OyB9CiAgICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBSZWxlYXNl
KHZvaWQpOwogCisgICAgLy8gSUFjY2Vzc2libGUyXzIKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZ2V0X2F0dHJpYnV0ZShCU1RSIG5hbWUsIFZBUklBTlQqIGF0dHJpYnV0
ZSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9hY2Nlc3NpYmxl
V2l0aENhcmV0KElVbmtub3duKiogYWNjZXNzaWJsZSwgbG9uZyogY2FyZXRPZmZzZXQpOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfcmVsYXRpb25UYXJnZXRzT2ZU
eXBlKEJTVFIgdHlwZSwgbG9uZyBtYXhUYXJnZXRzLCBJVW5rbm93bioqKiB0YXJnZXRzLCBsb25n
KiBuVGFyZ2V0cyk7CisKKyAgICAvLyBJQWNjZXNzaWJsZTIKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZ2V0X25SZWxhdGlvbnMobG9uZyopOworICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfcmVsYXRpb24obG9uZyByZWxhdGlvbkluZGV4LCBJ
QWNjZXNzaWJsZVJlbGF0aW9uKiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBnZXRfcmVsYXRpb25zKGxvbmcgbWF4UmVsYXRpb25zLCBJQWNjZXNzaWJsZVJlbGF0aW9u
KiogcmVsYXRpb25zLCBsb25nKiBuUmVsYXRpb25zKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcm9sZShsb25nKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHNjcm9sbFRvKElBMlNjcm9sbFR5cGUpOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBzY3JvbGxUb1BvaW50KElBMkNvb3JkaW5hdGVUeXBlLCBsb25nIHgs
IGxvbmcgeSk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9ncm91
cFBvc2l0aW9uKGxvbmcqIGdyb3VwTGV2ZWwsIGxvbmcqIHNpbWlsYXJJdGVtc0luR3JvdXAsIGxv
bmcqIHBvc2l0aW9uSW5Hcm91cCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIGdldF9zdGF0ZXMoQWNjZXNzaWJsZVN0YXRlcyopOworICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBnZXRfZXh0ZW5kZWRSb2xlKEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2xvY2FsaXplZEV4dGVuZGVkUm9sZShCU1RSKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9uRXh0ZW5kZWRTdGF0
ZXMobG9uZyopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfZXh0
ZW5kZWRTdGF0ZXMobG9uZyBtYXhFeHRlbmRlZFN0YXRlcywgQlNUUioqIGV4dGVuZGVkU3RhdGVz
LCBsb25nKiBuRXh0ZW5kZWRTdGF0ZXMpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBnZXRfbG9jYWxpemVkRXh0ZW5kZWRTdGF0ZXMobG9uZyBtYXhMb2NhbGl6ZWRFeHRl
bmRlZFN0YXRlcywgQlNUUioqIGxvY2FsaXplZEV4dGVuZGVkU3RhdGVzLCBsb25nKiBuTG9jYWxp
emVkRXh0ZW5kZWRTdGF0ZXMpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBnZXRfdW5pcXVlSUQobG9uZyopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBnZXRfd2luZG93SGFuZGxlKEhXTkQqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZ2V0X2luZGV4SW5QYXJlbnQobG9uZyopOworICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfbG9jYWxlKElBMkxvY2FsZSopOworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfYXR0cmlidXRlcyhCU1RSKik7CisKICAgICAv
LyBJQWNjZXNzaWJsZQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRf
YWNjUGFyZW50KElEaXNwYXRjaCoqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZ2V0X2FjY0NoaWxkQ291bnQobG9uZyopOwpAQCAtOTQsMjAgKzExOSwyMSBAQCBwdWJs
aWM6CiAKICAgICAvLyBJQWNjZXNzaWJsZUNvbXBhcmFibGUKICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgaXNTYW1lT2JqZWN0KElBY2Nlc3NpYmxlQ29tcGFyYWJsZSogb3Ro
ZXIsIEJPT0wqIHJlc3VsdCk7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGF0dHJpYnV0ZVZhbHVlKEJTVFIga2V5LCBWQVJJQU5UKiB2YWx1ZSk7CiAKIHByb3RlY3RlZDoK
LSAgICBBY2Nlc3NpYmxlQmFzZShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CisgICAg
QWNjZXNzaWJsZUJhc2UoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCosIEhXTkQpOwogICAg
IHZpcnR1YWwgfkFjY2Vzc2libGVCYXNlKCk7CiAKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIG5h
bWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBsb25nIHJvbGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGxvbmcgc3RhdGUoKSBjb25z
dDsKIAogICAgIEhSRVNVTFQgZ2V0QWNjZXNzaWJpbGl0eU9iamVjdEZvckNoaWxkKFZBUklBTlQg
dkNoaWxkLCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiYpIGNvbnN0OwogCi0gICAgc3Rh
dGljIEFjY2Vzc2libGVCYXNlKiB3cmFwcGVyKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Qq
KTsKKyAgICBBY2Nlc3NpYmxlQmFzZSogd3JhcHBlcihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KikgY29uc3Q7CiAKKyAgICBIV05EIG1fd2luZG93OwogICAgIGludCBtX3JlZkNvdW50Owog
CiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZURvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAxNTE1MjIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw4ICszMyw4IEBACiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogLy8gQWNjZXNzaWJsZURvY3VtZW50Ci1BY2Nlc3NpYmxlRG9jdW1lbnQ6OkFjY2Vz
c2libGVEb2N1bWVudChEb2N1bWVudCogZG9jKQotICAgIDogQWNjZXNzaWJsZUJhc2UoZG9jLT5h
eE9iamVjdENhY2hlKCktPnJvb3RPYmplY3QoKSkKK0FjY2Vzc2libGVEb2N1bWVudDo6QWNjZXNz
aWJsZURvY3VtZW50KERvY3VtZW50KiBkb2MsIEhXTkQgd2luZG93KQorICAgIDogQWNjZXNzaWJs
ZUJhc2UoZG9jLT5heE9iamVjdENhY2hlKCktPnJvb3RPYmplY3QoKSwgd2luZG93KQogewogfQog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlRG9jdW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlRG9jdW1lbnQuaAkocmV2aXNpb24gMTUx
NTIyKQorKysgU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZURvY3VtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwyMDEzIEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzAsNyArMzAsNyBAQAogCiBjbGFzcyBBY2Nlc3NpYmxlRG9jdW1lbnQgOiBwdWJsaWMg
QWNjZXNzaWJsZUJhc2UgewogcHVibGljOgotICAgIEFjY2Vzc2libGVEb2N1bWVudChXZWJDb3Jl
OjpEb2N1bWVudCopOworICAgIEFjY2Vzc2libGVEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudCos
IEhXTkQpOwogICAgIFdlYkNvcmU6OkRvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0OwogCiBwcm90
ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlSW1hZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVJbWFnZS5jcHAJKHJldmlzaW9u
IDE1MTUyMikKKysrIFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDggKzMyLDggQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU6OkhUTUxOYW1lczsKIAotQWNjZXNzaWJsZUltYWdlOjpBY2Nl
c3NpYmxlSW1hZ2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQotICAgIDogQWNjZXNzaWJsZUJh
c2Uob2JqKQorQWNjZXNzaWJsZUltYWdlOjpBY2Nlc3NpYmxlSW1hZ2UoQWNjZXNzaWJpbGl0eU9i
amVjdCogb2JqLCBIV05EIHdpbmRvdykKKyAgICA6IEFjY2Vzc2libGVCYXNlKG9iaiwgd2luZG93
KQogewogICAgIEFTU0VSVF9BUkcob2JqLCBvYmotPmlzSW1hZ2UoKSk7CiAgICAgQVNTRVJUX0FS
RyhvYmosIG9iai0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpOwpJbmRleDogU291cmNl
L1dlYktpdC93aW4vQWNjZXNzaWJsZUltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vQWNjZXNzaWJsZUltYWdlLmgJKHJldmlzaW9uIDE1MTUyMikKKysrIFNvdXJjZS9XZWJL
aXQvd2luL0FjY2Vzc2libGVJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
CiBjbGFzcyBBY2Nlc3NpYmxlSW1hZ2UgOiBwdWJsaWMgQWNjZXNzaWJsZUJhc2UKIHsKIHB1Ymxp
YzoKLSAgICBBY2Nlc3NpYmxlSW1hZ2UoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopOwor
ICAgIEFjY2Vzc2libGVJbWFnZShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgSFdORCk7
CiAgICAgdmlydHVhbCB+QWNjZXNzaWJsZUltYWdlKCkgeyB9CiAKIHByaXZhdGU6CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAxNTE1MjIpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDA5LCAyMDExLCAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2gg
SW4gTW90aW9uIExpbWl0ZWQgMjAwOS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTI1OTAsNyArMjU5MCw3IEBAIENPTVB0cjxJQWNjZXNzaWJsZT4gV2ViRnJhbWU6
OmFjY2Vzc2libGUKICAgICAgICAgLy8gdGhlIERvY3VtZW50IHJlbmRlcmVyIHdhcyBkZXN0cm95
ZWQgYW5kIGl0cyB3cmFwcGVyIHdhcyBkZXRhY2hlZCwgb3IKICAgICAgICAgLy8gdGhlIHByZXZp
b3VzIERvY3VtZW50IGlzIGluIHRoZSBwYWdlIGNhY2hlLCBhbmQgdGhlIGN1cnJlbnQgZG9jdW1l
bnQKICAgICAgICAgLy8gbmVlZHMgdG8gYmUgd3JhcHBlZC4KLSAgICAgICAgbV9hY2Nlc3NpYmxl
ID0gbmV3IEFjY2Vzc2libGVEb2N1bWVudChjdXJyZW50RG9jdW1lbnQpOworICAgICAgICBtX2Fj
Y2Vzc2libGUgPSBuZXcgQWNjZXNzaWJsZURvY3VtZW50KGN1cnJlbnREb2N1bWVudCwgd2ViVmll
dygpLT52aWV3V2luZG93KCkpOwogICAgIH0KICAgICByZXR1cm4gbV9hY2Nlc3NpYmxlLmdldCgp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlQ29tcGFy
YWJsZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nl
c3NpYmxlQ29tcGFyYWJsZS5pZGwJKHJldmlzaW9uIDE1MTUyMikKKysrIFNvdXJjZS9XZWJLaXQv
d2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZUNvbXBhcmFibGUuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw2ICsyOSw3IEBAIGltcG9ydCAib2NpZGwuaWRsIjsKICNlbmRpZgogCiBpbXBvcnQgIm9s
ZWFjYy5pZGwiOworaW1wb3J0ICJBY2Nlc3NpYmxlMl8yLmlkbCI7CiAKIGNwcF9xdW90ZSgiZXh0
ZXJuIGNvbnN0IEdVSUQgIF9fZGVjbHNwZWMoc2VsZWN0YW55KSBTSURfQWNjZXNzaWJsZUNvbXBh
cmFibGUgPSB7IDB4NjJiOGNiNWYsIDB4ZmI3YSwgMHg0ZmFmLCAweDgxLCAweGU4LCAweDUyLCAw
eGI2LCAweDVmLCAweDEyLCAweDhiLCAweDMxIH07IikKIApAQCAtMzksOCArNDAsNyBAQCBjcHBf
cXVvdGUoImV4dGVybiBjb25zdCBHVUlEICBfX2RlY2xzcGVjCiAgICAgZHVhbCwKICAgICBwb2lu
dGVyX2RlZmF1bHQodW5pcXVlKQogXQotaW50ZXJmYWNlIElBY2Nlc3NpYmxlQ29tcGFyYWJsZSA6
IElBY2Nlc3NpYmxlCitpbnRlcmZhY2UgSUFjY2Vzc2libGVDb21wYXJhYmxlIDogSUFjY2Vzc2li
bGUyXzIKIHsKICAgICBIUkVTVUxUIGlzU2FtZU9iamVjdChbaW5dIElBY2Nlc3NpYmxlQ29tcGFy
YWJsZSogb3RoZXIsIFtvdXQsIHJldHZhbF0gQk9PTCogcmVzdWx0KTsKLSAgICBIUkVTVUxUIGF0
dHJpYnV0ZVZhbHVlKFtpbl0gQlNUUiBrZXksIFtvdXQsIHJldHZhbF0gVkFSSUFOVCogdmFsdWUp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAkocmV2aXNp
b24gMTUxNTIyKQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9XZWJLaXQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw4IEBAIGNwcF9xdW90ZSgiICovIikKIGltcG9ydCAi
b2FpZGwuaWRsIjsKIGltcG9ydCAib2NpZGwuaWRsIjsKIAoraW1wb3J0ICJBY2Nlc3NpYmxlQXBw
bGljYXRpb24uaWRsIjsKKwogI2luY2x1ZGUgIkFjY2Vzc2libGVDb21wYXJhYmxlLmlkbCIKICNp
bmNsdWRlICJXZWJTY3JvbGxiYXJUeXBlcy5pZGwiCiAjaW5jbHVkZSAiSmF2YVNjcmlwdENvcmVB
UElUeXBlcy5pZGwiCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2li
bGUyL0FjY2Vzc2libGUyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRl
cmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGUyLmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZTIuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICBG
aWxlIE5hbWUgKEFjY2Vzc2libGUyLmlkbCkKKyAqIAorICogIElBY2Nlc3NpYmxlMiBJREwgU3Bl
Y2lmaWNhdGlvbiAKKyAqIAorICogIENvcHlyaWdodCAoYykgMjAwNywgMjAxMyBMaW51eCBGb3Vu
ZGF0aW9uIAorICogIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gCisgKiAgQ29w
eXJpZ2h0IChjKSAyMDAwLCAyMDA2IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gCisgKiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4gCisgKiAgIAorICogICAKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCisgKiAgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIAorICogIGFyZSBtZXQ6IAorICogICAKKyAqICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgCisgKiAgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g
CisgKiAgIAorICogICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIAorICogICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyAKKyAqICAgICAgZGlzY2xhaW1lciBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIAorICogICAgICBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICoKKyAqICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgTGludXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyAKKyAqICAgICAgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyAKKyAqICAg
ICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIAorICogICAgICBwZXJtaXNzaW9uLiAKKyAqICAgCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIAorICogIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAorICogIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAorICog
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IAorICogIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
IE9SIAorICogIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCAKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgCisgKiAgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IAorICogIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIAorICogIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiAKKyAqICBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
CisgKiAgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgCisgKiAgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKiAgIAorICogIFRoaXMgQlNEIExpY2Vuc2UgY29uZm9ybXMgdG8gdGhl
IE9wZW4gU291cmNlIEluaXRpYXRpdmUgIlNpbXBsaWZpZWQgCisgKiAgQlNEIExpY2Vuc2UiIGFz
IHB1Ymxpc2hlZCBhdDogCisgKiAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9i
c2QtbGljZW5zZS5waHAgCisgKiAgIAorICogIElBY2Nlc3NpYmxlMiBpcyBhIHRyYWRlbWFyayBv
ZiB0aGUgTGludXggRm91bmRhdGlvbi4gVGhlIElBY2Nlc3NpYmxlMiAKKyAqICBtYXJrIG1heSBi
ZSB1c2VkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgTGludXggRm91bmRhdGlvbiBUcmFkZW1hcmsg
CisgKiAgUG9saWN5IHRvIGluZGljYXRlIGNvbXBsaWFuY2Ugd2l0aCB0aGUgSUFjY2Vzc2libGUy
IHNwZWNpZmljYXRpb24uIAorICogCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAKKworLyoqIEBtYWlucGFn
ZQorCisgQHNlY3Rpb24gX2ludGVyZmFjZXMgSW50ZXJmYWNlcworICBJQWNjZXNzaWJsZTJcbgor
ICBJQWNjZXNzaWJsZTJfMlxuCisgIElBY2Nlc3NpYmxlQWN0aW9uXG4KKyAgSUFjY2Vzc2libGVB
cHBsaWNhdGlvblxuCisgIElBY2Nlc3NpYmxlQ29tcG9uZW50XG4KKyAgSUFjY2Vzc2libGVEb2N1
bWVudFxuCisgIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0XG4KKyAgSUFjY2Vzc2libGVIeXBlcnRl
eHRcbgorICBJQWNjZXNzaWJsZUh5cGVydGV4dDJcbgorICBJQWNjZXNzaWJsZUh5cGVybGlua1xu
CisgIElBY2Nlc3NpYmxlSW1hZ2VcbgorICBJQWNjZXNzaWJsZVJlbGF0aW9uXG4KKyAgSUFjY2Vz
c2libGVUYWJsZSBbRGVwcmVjYXRlZF1cbgorICBJQWNjZXNzaWJsZVRhYmxlMlxuCisgIElBY2Nl
c3NpYmxlVGFibGVDZWxsXG4KKyAgSUFjY2Vzc2libGVUZXh0XG4KKyAgSUFjY2Vzc2libGVUZXh0
MlxuCisgIElBY2Nlc3NpYmxlVmFsdWUKKworIEBzZWN0aW9uIF9zdHJ1Y3RzIFN0cnVjdHMKKyAg
SUEyTG9jYWxlXG4KKyAgSUEyVGFibGVNb2RlbENoYW5nZVxuCisgIElBMlRleHRTZWdtZW50CisK
KyBAc2VjdGlvbiBfZW51bXMgRW51bXMKKyAgOjpJQTJBY3Rpb25zIHZhbHVlcyBhcmUgcHJlZGVm
aW5lZCBhY3Rpb25zIGZvciB1c2Ugd2hlbiBpbXBsZW1lbnRpbmcgc3VwcG9ydCBmb3IgSFRNTDUg
bWVkaWEuXG4KKyAgOjpJQTJDb29yZGluYXRlVHlwZSB2YWx1ZXMgZGVmaW5lIHRoZSByZXF1ZXN0
ZWQgY29vcmRpbmF0ZSB0eXBlIChzY3JlZW4gb3IgcGFyZW50IHdpbmRvdykuXG4KKyAgOjpJQTJF
dmVudElEIHZhbHVlcyBpZGVudGlmeSBldmVudHMuXG4KKyAgOjpJQTJSb2xlIHZhbHVlcyBkZWZp
bmVzIHJvbGVzIHdoaWNoIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgZXhpc3RpbmcgTVNBQSByb2xl
cy5cbgorICA6OklBMlNjcm9sbFR5cGUgdmFsdWVzIGRlZmluZSB3aGVyZSB0byBwbGFjZSBhbiBv
YmplY3Qgb3Igc3Vic3RyaW5nIG9uIHRoZSBzY3JlZW4uXG4KKyAgOjpJQTJTdGF0ZXMgdmFsdWVz
IGRlZmluZSBzdGF0ZXMgd2hpY2ggYXJlIGluIGFkZGl0aW9uIHRvIHRoZSBleGlzdGluZyBNU0FB
IHN0YXRlcy5cbgorICA6OklBMlRhYmxlTW9kZWxDaGFuZ2VUeXBlIHZhbHVlcyBkZXNjcmliZSB0
aGUga2luZHMgb2YgY2hhbmdlcyBtYWRlIHRvIGEgdGFibGUgKGluc2VydCwgZGVsZXRlLCB1cGRh
dGUpLlxuCisgIDo6SUEyVGV4dEJvdW5kYXJ5VHlwZSB2YWx1ZXMgZGVmaW5lIHRoZSByZXF1ZXN0
ZWQgdGV4dCB1bml0IChjaGFyYWN0ZXIsIHdvcmQsIHNlbnRlbmNlLCBsaW5lLCBwYXJhZ3JhcGgp
LlxuCisgIDo6SUEyVGV4dFNwZWNpYWxPZmZzZXRzIHZhbHVlcyBkZWZpbmUgc3BlY2lhbCBvZmZz
ZXRzIGZvciB1c2UgaW4gdGhlIHRleHQgaW50ZXJmYWNlcy4KKworIEBzZWN0aW9uIF9jb25zdGFu
dHMgQ29uc3RhbnRzCisgIEByZWYgZ3JwUmVsYXRpb25zCisKKyBAc2VjdGlvbiBfbWlzYyBNaXNj
ZWxsYW5lb3VzCisgIEByZWYgX2xpY2Vuc2VQYWdlICJCU0QgTGljZW5zZSJcbgorICBAcmVmIF9n
ZW5lcmFsSW5mbyAiR2VuZXJhbCBJbmZvcm1hdGlvbiJcbgorCisgQHBhZ2UgX2xpY2Vuc2VQYWdl
IEJTRCBMaWNlbnNlCisgICVJQWNjZXNzaWJsZTIgSURMIFNwZWNpZmljYXRpb24KKworICBDb3B5
cmlnaHQgKGMpIDIwMDcsIDIwMTMgTGludXggRm91bmRhdGlvblxuCisgIENvcHlyaWdodCAoYykg
MjAwNiBJQk0gQ29ycG9yYXRpb25cbgorICBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgU3VuIE1p
Y3Jvc3lzdGVtcywgSW5jLlxuCisgIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyAgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
IAorICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgCisgIGFyZSBtZXQ6IAorICAgIAorICAgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgCisgICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuIAorIAorICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSAKKyAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIAorICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIAorICAgICAgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyAKKyAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIExpbnV4IEZv
dW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgCisgICAgICBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIAorICAgICAgZGVyaXZlZCBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIAorICAgICAgcGVy
bWlzc2lvbi4gCisgCisgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCAKKyAgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgCisgIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAorICBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSAKKyAgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIAorICBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgCisg
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IAorICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gCisgIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiAKKyAgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgCisgIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorIAorICBUaGlzIEJTRCBMaWNlbnNlIGNvbmZvcm1zIHRv
IHRoZSBPcGVuIFNvdXJjZSBJbml0aWF0aXZlICJTaW1wbGlmaWVkIAorICBCU0QgTGljZW5zZSIg
YXMgcHVibGlzaGVkIGF0OiAKKyAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9i
c2QtbGljZW5zZS5waHAgCisgCisgICVJQWNjZXNzaWJsZTIgaXMgYSB0cmFkZW1hcmsgb2YgdGhl
IExpbnV4IEZvdW5kYXRpb24uIFRoZSAlSUFjY2Vzc2libGUyIAorICBtYXJrIG1heSBiZSB1c2Vk
IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUKKyAgPGEgaHJlZj0iaHR0cDovL3d3dy5saW51eGZvdW5k
YXRpb24ub3JnL2NvbGxhYm9yYXRlL3dvcmtncm91cHMvYWNjZXNzaWJpbGl0eS90cmFkZW1hcmst
cG9saWN5Ij4KKyAgTGludXggRm91bmRhdGlvbiBUcmFkZW1hcmsgUG9saWN5PC9hPiB0byBpbmRp
Y2F0ZSBjb21wbGlhbmNlIHdpdGggdGhlICVJQWNjZXNzaWJsZTIgc3BlY2lmaWNhdGlvbi4gCisK
KyBAcGFnZSBfZ2VuZXJhbEluZm8gR2VuZXJhbCBJbmZvcm1hdGlvbiAKKyAgVGhlIGZvbGxvd2lu
ZyBpbmZvcm1hdGlvbiBpcyBhcHBsaWNhYmxlIHRvIHR3byBvciBtb3JlIGludGVyZmFjZXMuCisK
KyBAcmVmIF9lcnJvcnNcbgorIEByZWYgX21lbW9yeVxuCisgJm5ic3A7Jm5ic3A7QHJlZiBfYXJy
YXlDb25zaWRlcmF0aW9uXG4KKyBAcmVmIF9pbmRleGVzXG4KKyBAcmVmIF9lbnVtc1xuCisgQHJl
ZiBfc3BlY2lhbE9mZnNldHNcbgorIEByZWYgX2RpY292ZXJpbmdJbnRlcmZhY2VzXG4KKyBAcmVm
IF9jaGFuZ2luZ0ludGVyZmFjZXNcbgorIEByZWYgX2FwcGxpY2F0aW9uSW5mb1xuCisgQHJlZiBf
Y2hpbGRJRHNcbgorIEByZWYgX3ZhcmlhbnRzXG4KKyBAcmVmIF9pYWFjdGlvbi1pYWh5cGVybGlu
a1xuCisgQHJlZiBfdHJhZGVtYXJrCisKKyBAc2VjdGlvbiBfZXJyb3JzIEVycm9yIEhhbmRsaW5n
CisgIEhSRVNVTFQgdmFsdWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBNaWNyb3NvZnQmcmVnOyBXaW4z
MiZyZWc7IEFQSS4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCByZWZlciB0bworICA8YSBocmVmPSJo
dHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2Fh
Mzc4MTM3JTI4dj12cy44NSUyOS5hc3B4Ij4KKyAgSW50ZXJwcmV0aW5nIEhSRVNVTFQgVmFsdWVz
PC9hPiBpbiBNU0ROJnJlZzsuCisKKyAgTm90ZSB0aGF0IHRoZSBTX0ZBTFNFIHJldHVybiB2YWx1
ZSBpcyBjb25zaWRlcmVkIGEgbm9uLWVycm9yIHZhbHVlIGFuZCB0aGUgCisgIFNVQ0NFRURFRCBt
YWNybyB3aWxsIHJldHVybiBUUlVFLiAgU19GQUxTRSBpcyB1c2VkIHdoZW4gdGhlcmUgaXMgbm8g
ZmFpbHVyZQorICBidXQgdGhlcmUgd2FzIG5vdGhpbmcgdmFsaWQgdG8gcmV0dXJuLCBlLmcuIGlu
IElBY2Nlc3NpYmxlMjo6YXR0cmlidXRlcyB3aGVuCisgIHRoZXJlIGFyZSBubyBhdHRyaWJ1dGVz
LiAgV2hlbiBTX0ZBTFNFIGlzIHJldHVybmVkIFtvdXRdIHBvaW50ZXIgdHlwZXMgc2hvdWxkIAor
ICBiZSBOVUxMIGFuZCBbb3V0XSBsb25ncyBzaG91bGQgZ2VuZXJhbGx5IGJlIDAsIGJ1dCBzb21l
dGltZXMgLTEgaXMgdXNlZCBzdWNoCisgIGFzIElBY2Nlc3NpYmxlMjo6aW5kZXhJblBhcmVudCwg
SUFjY2Vzc2libGVUZXh0OjpjYXJldE9mZnNldCwgYW5kCisgIElBY2Nlc3NpYmxlSHlwZXJ0ZXh0
OjpoeXBlcmxpbmtJbmRleC4KKworICBOb3RlIHRoYXQgZm9yIEJTVFIgW291dF0gdmFyaWFibGVz
IGNvbW1vbiBDT00gcHJhY3RpY2UgaXMgdGhhdCB0aGUgc2VydmVyIGRvZXMgCisgIHRoZSBTeXNB
bGxvY1N0cmluZyBhbmQgdGhlIGNsaWVudCBkb2VzIHRoZSBTeXNGcmVlU3RyaW5nLiAgQWxzbyBu
b3RlIHRoYXQgd2hlbgorICBOVUxMIGlzIHJldHVybmVkIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRo
ZSBjbGllbnQgdG8gY2FsbCBTeXNGcmVlU3RyaW5nLiAgUGxlYXNlCisgIHJlZmVyIHRvIHRoZSBk
b2N1bWVudGF0aW9uIGZvciBlYWNoIG1ldGhvZCBmb3IgbW9yZSBkZXRhaWxzIHJlZ2FyZGluZyBl
cnJvciBoYW5kbGluZy4KKworIEBzZWN0aW9uIF9tZW1vcnkgTWVtb3J5IE1hbmFnZW1lbnQKKyAg
VGhlIGZvbGxvd2luZyBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMgc2hvdWxkIGJlIGNvbnNpZGVy
ZWQ6CisgIEBsaSBBbHRob3VnaCBbb3V0XSBCU1RSIHZhcmlhYmxlcyBhcmUgZGVjbGFyZWQgYnkg
dGhlIGNsaWVudCwgdGhlaXIgc3BhY2UgaXMgCisgICBhbGxvY2F0ZWQgYnkgdGhlIHNlcnZlci4g
IFRoZXkgbmVlZCB0byBiZSBmcmVlZCB3aXRoIFN5c0ZyZWVTdHJpbmcgYnkgdGhlIAorICAgY2xp
ZW50IGF0IGVuZCBvZiBsaWZlOyB0aGUgc2FtZSBpcyB0cnVlIHdoZW4gQlNUUnMgYXJlIHVzZWQg
aW4gc3RydWN0cyBvciAKKyAgIGFycmF5cyB3aGljaCBhcmUgcGFzc2VkIHRvIHRoZSBzZXJ2ZXIu
CisgIEBsaSBJZiB0aGVyZSBpcyBubyB2YWxpZCBbb3V0XSBCU1RSIHRvIHJldHVybiwgdGhlIHNl
cnZlciBzaG91bGQgcmV0dXJuIFNfRkFMU0UgYW5kIAorICAgYXNzaWduIE5VTEwgdG8gdGhlIG91
dHB1dCwgZS5nLiAqdGhlT3V0QlNUUiA9IE5VTEw7LiAKKyAgQGxpIENPTSBpbnRlcmZhY2VzIG5l
ZWQgdG8gYmUgcmVmZXJlbmNlZCB3aXRoIEFkZFJlZiB3aGVuIHVzZWQgYW5kIGRlcmVmZXJlbmNl
ZAorICAgd2l0aCBSZWxlYXNlIGF0IGVuZCBvZiBsaWZlLgorICBAbGkgU2luZ2xlIFtvdXRdIGxv
bmdzLCBIV05EcywgYm9vbGVhbnMsIGFuZCBzdHJ1Y3RzIGFyZSBkZWNsYXJlZCBieSB0aGUgY2Fs
bGVyCisgICBhbmQgcGFzc2VkIGJ5IHJlZmVyZW5jZS4gVGhlIG1hcnNoYWxsZXIgZG9lcyBhbGwg
dGhlIG1lbW9yeSBtYW5hZ2VtZW50LgorICAKKyAgVGhlIGZvbGxvd2luZyBhcnRpY2xlcyBtYXkg
YmUgaGVscGZ1bCBmb3IgdW5kZXJzdGFuZGluZyBtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXM6Cisg
IEBsaSBBbiBhcnRpY2xlIGJ5IERvbiBCb3ggaW4gYQorICAgPGEgaHJlZj0iaHR0cDovL3d3dy5t
aWNyb3NvZnQuY29tL21zai8xMTk2L2FjdGl2ZXgxMTk2LmFzcHgiPlEgJiBBIHNlY3Rpb248L2E+
CisgICBvZiB0aGUgTm92ZW1iZXIgMTk5NiBlZGl0aW9uIG9mIHRoZSBNaWNyb3NvZnQgU3lzdGVt
cyBKb3VybmFsLgorICBAbGkgQSBwb3N0aW5nIHRvIGEgQ29kZUd1cnUgZm9ydW0sIAorICAgPGEg
aHJlZj0iaHR0cDovL3d3dy5jb2RlZ3VydS5jb20vZm9ydW0vc2hvd3RocmVhZC5waHA/dD0zNjQ1
MTEiPldpbmRvd3MgU0RLIAorICAgU3RyaW5nOiBXaGF0IGFyZSB0aGUgcnVsZXMgZm9yIEJTVFIg
YWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uPzwvYT4KKworIEBzdWJzZWN0aW9uIF9hcnJheUNv
bnNpZGVyYXRpb24gU3BlY2lhbCBDb25zaWRlcmF0aW9uIHdoZW4gdXNpbmcgQXJyYXlzCisgIFRo
ZXJlIGFyZSBzZXZlcmFsIG1ldGhvZHMgd2hpY2ggcmV0dXJuIGFycmF5cy4gIEluIHRoZSBjYXNl
IG9mIElBY2Nlc3NpYmxlMjo6cmVsYXRpb25zCisgIGFuZCBJQWNjZXNzaWJsZVJlbGF0aW9uOjp0
YXJnZXRzIHRoZSBjbGllbnQgbXVzdCBhbGxvY2F0ZSBhbmQgZnJlZSB0aGUgYXJyYXlzLgorCisg
IEZvciB0aGUgcmVtYWluaW5nIG1ldGhvZHMgd2hpY2ggcmV0dXJuIGFycmF5cywgdGhlIHNlcnZl
ciBtdXN0IGFsbG9jYXRlIHRoZSBhcnJheQorICBhbmQgdGhlIGNsaWVudCBtdXN0IGZyZWUgdGhl
IGFycmF5IHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4gIFRoZXNlIG1ldGhvZHMgYXJlCisgIElBY2Nl
c3NpYmxlMjo6ZXh0ZW5kZWRTdGF0ZXMsIElBY2Nlc3NpYmxlMjo6bG9jYWxpemVkRXh0ZW5kZWRT
dGF0ZXMsCisgIElBY2Nlc3NpYmxlMl8yOjpyZWxhdGlvblRhcmdldHNPZlR5cGUsIElBY2Nlc3Np
YmxlQWN0aW9uOjprZXlCaW5kaW5nLCAKKyAgSUFjY2Vzc2libGVIeXBlcnRleHQyOjpoeXBlcmxp
bmtzLCBJQWNjZXNzaWJsZVRhYmxlOjpzZWxlY3RlZENoaWxkcmVuLCAKKyAgSUFjY2Vzc2libGVU
YWJsZTo6c2VsZWN0ZWRDb2x1bW5zLCBJQWNjZXNzaWJsZVRhYmxlOjpzZWxlY3RlZFJvd3MsCisg
IElBY2Nlc3NpYmxlVGFibGUyOjpzZWxlY3RlZENlbGxzLCBJQWNjZXNzaWJsZVRhYmxlMjo6c2Vs
ZWN0ZWRDb2x1bW5zLAorICBJQWNjZXNzaWJsZVRhYmxlMjo6c2VsZWN0ZWRSb3dzLCBJQWNjZXNz
aWJsZVRhYmxlQ2VsbDo6Y29sdW1uSGVhZGVyQ2VsbHMsCisgIGFuZCBJQWNjZXNzaWJsZVRhYmxl
Q2VsbDo6cm93SGVhZGVyQ2VsbHMuCisgIEZvciB0aG9zZSBtZXRob2RzLCB0aGUgc2VydmVyIG11
c3QgYWxsb2NhdGUgYm90aCB0aGUgdG9wIGxldmVsIGFycmF5IGFuZCBhbnkgc3RvcmFnZSAKKyAg
YXNzb2NpYXRlZCB3aXRoIGl0LCBlLmcuIGZvciBCU1RScy4gIFRoZSBzZXJ2ZXIgbXVzdCBhbGxv
Y2F0ZSB0aGUgYXJyYXlzIHdpdGggCisgIENvVGFza01lbUFsbG9jIGFuZCBhbnkgQlNUUnMgd2l0
aCBTeXNBbGxvY1N0cmluZy4gIFRoZSBjbGllbnQgbXVzdCB1c2UgQ29UYXNrTWVtRnJlZQorICB0
byBmcmVlIHRoZSBhcnJheSBhbmQgYW55IEJTVFJzIG11c3QgYmUgZnJlZWQgd2l0aCBTeXNGcmVl
U3RyaW5nLiAgCisgIAorICBBbHNvLCB0aGUgSURMIGZvciBJQWNjZXNzaWJsZTI6OmV4dGVuZGVk
U3RhdGVzLCBJQWNjZXNzaWJsZTI6OmxvY2FsaXplZEV4dGVuZGVkU3RhdGVzLCAKKyAgSUFjY2Vz
c2libGVBY3Rpb246OmtleUJpbmRpbmcsIElBY2Nlc3NpYmxlVGFibGU6OnNlbGVjdGVkQ2hpbGRy
ZW4sIAorICBJQWNjZXNzaWJsZVRhYmxlOjpzZWxlY3RlZENvbHVtbnMsIGFuZCBJQWNjZXNzaWJs
ZVRhYmxlOjpzZWxlY3RlZFJvd3MgaW5jbHVkZXMgYW4KKyAgZXh0cmFuZW91cyBbaW5dIHBhcmFt
ZXRlciBmb3IgdGhlIGNhbGxlciB0byBzcGVjaWZ5IHRoZSBtYXggc2l6ZSBvZiB0aGUgYXJyYXku
CisgIFRoaXMgcGFyYW1ldGVyIHdpbGwgYmUgaWdub3JlZCBieSB0aGUgQ09NIHNlcnZlci4KKwor
IEBzZWN0aW9uIF9pbmRleGVzIFplcm8gYW5kIE9uZSBCYXNlZCBJbmRleGVzCisgIFVubGVzcyBv
dGhlcndpc2Ugc3BlY2lmaWVkIGFsbCBvZmZzZXRzIGFuZCBpbmRleGVzIGFyZSAwIGJhc2VkLiAK
KworIEBzZWN0aW9uIF9lbnVtcyBFbnVtcworICBOb3RlIHRoYXQgZW51bXMgc3RhcnQgYXQgMC4K
KworIEBzZWN0aW9uIF9zcGVjaWFsT2Zmc2V0cyBTcGVjaWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0
aGUgSUFjY2Vzc2libGVUZXh0IGFuZCBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dCBNZXRob2RzCisg
IElBY2Nlc3NpYmxlVGV4dCBhbmQgSUFjY2Vzc2libGVFZGl0YWJsZVRleHQgY2FuIHVzZSBvbmUg
b3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nCisgIHNwZWNpYWwgb2Zmc2V0IHZhbHVlcy4gIFRoZXkg
YXJlIGRlZmluZWQgaW4gdGhlIDo6SUEyVGV4dFNwZWNpYWxPZmZzZXRzIGVudW0uCisgIEBsaSBV
c2luZyA6OklBMl9URVhUX09GRlNFVF9MRU5HVEggKC0xKSBhcyBhbiBvZmZzZXQgaW4gYW55IG9m
IHRoZSBJQWNjZXNzaWJsZVRleHQgb3IKKyAgIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0IG1ldGhv
ZHMgaXMgdGhlIHNhbWUgYXMgc3BlY2lmeWluZyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuCisg
IEBsaSBVc2luZyA6OklBMl9URVhUX09GRlNFVF9DQVJFVCAoLTIpIGFzIGFuIG9mZnNldCBmb3Ig
SUFjY2Vzc2libGVUZXh0Ojp0ZXh0QmVmb3JlT2Zmc2V0LCAKKyAgIElBY2Nlc3NpYmxlVGV4dDo6
dGV4dEF0T2Zmc2V0LCBhbmQgSUFjY2Vzc2libGVUZXh0Ojp0ZXh0QWZ0ZXJPZmZzZXQgaW5kaWNh
dGVzIHRoYXQgdGhlIAorICAgdGV4dCByZWxhdGVkIHRvIHRoZSBwaHlzaWNhbCBsb2NhdGlvbiBv
ZiB0aGUgY2FyZXQgc2hvdWxkIGJlIHVzZWQuICBUaGlzIGlzIG5lZWRlZCBmb3IgCisgICBhcHBs
aWNhdGlvbnMgdGhhdCBjb25zaWRlciB0aGUgY2hhcmFjdGVyIG9mZnNldCBvZiB0aGUgZW5kIG9m
IG9uZSBsaW5lIChhcyByZWFjaGVkIGJ5IAorICAgcHJlc3NpbmcgdGhlIEVuZCBrZXkpIHRoZSBz
YW1lIGFzIHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvbiB0aGUgbmV4dCBsaW5l
LgorICAgU2luY2UgdGhlIHNhbWUgb2Zmc2V0IGlzIGFzc29jaWF0ZWQgd2l0aCB0d28gZGlmZmVy
ZW50IGxpbmVzIGEgc3BlY2lhbCBtZWFucyBpcyBuZWVkZWQgCisgICB0byBmZXRjaCB0ZXh0IGZy
b20gdGhlIGxpbmUgd2hlcmUgdGhlIGNhcmV0IGlzIHBoeXNpY2FsbHkgbG9jYXRlZC4KKworIEBz
ZWN0aW9uIF9kaWNvdmVyaW5nSW50ZXJmYWNlcyBEaXNjb3Zlcnkgb2YgSW50ZXJmYWNlcworICBJ
biBnZW5lcmFsIEFUIChBc3Npc3RpdmUgVGVjaG5vbG9neSkgc2hvdWxkIHRyeSBJQWNjZXNzaWJs
ZTIgaW50ZXJmYWNlcywgZm9sbG93ZWQgYnkgdXNpbmcgCisgIHRoZSBNU0FBIChNaWNyb3NvZnQm
cmVnOyBBY3RpdmUgQWNjZXNzaWJpbGl0eSZyZWc7KSBpbnRlcmZhY2VzLiAgKEluIGNhc2VzIHdo
ZXJlIHRoZSBhbiBhcHBsaWNhdGlvbgorICBpcyBrbm93biB0byBoYXZlIGN1c3RvbSBpbnRlcmZh
Y2VzIHdoaWNoIHByb3ZpZGUgaW5mb3JtYXRpb24gbm90IHN1cHBsaWVkIGJ5IElBY2Nlc3NpYmxl
MgorICBvciBNU0FBLCB0aGVuIHRob3NlIGN1c3RvbSBpbnRlcmZhY2VzIGNhbiBiZSB1c2VkLikg
IFRoZSBBVCBjYW4gdGhlbiwgYnkgZGVmYXVsdCwgc3VwcG9ydAorICB1bmtub3duIElBY2Nlc3Np
YmxlMi9NU0FBIGFwcGxpY2F0aW9ucywgd2l0aG91dCB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcGVy
cyBoYXZpbmcgdG8gcmVxdWVzdAorICBBVCB2ZW5kb3JzIGZvciBzdXBwb3J0IG9uIGFuIGluZGl2
aWR1YWwgYXBwbGljYXRpb24gYnkgYXBwbGljYXRpb24gYmFzaXMuCisKKyAgV2hlbiB5b3UgaGF2
ZSBhIHJlZmVyZW5jZSB0byBhbiBJQWNjZXNzaWJsZSBhbmQgcmVxdWlyZSBhIHJlZmVyZW5jZSB0
byBhbiBJQWNjZXNzaWJsZTIgdXNlIAorICBRdWVyeVNlcnZpY2UgYXMgZm9sbG93czoKKyAgQGNv
ZGUKKyAgLy8gcEFjYyBpcyBhIHJlZmVyZW5jZSB0byB0aGUgYWNjZXNzaWJsZSBvYmplY3QncyBJ
QWNjZXNzaWJsZSBpbnRlcmZhY2UuIAorICBJU2VydmljZVByb3ZpZGVyICpwU2VydmljZSA9IE5V
TEw7IAorICBociA9IHBBY2MtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JU2VydmljZVByb3ZpZGVyLCAo
dm9pZCAqKikmcFNlcnZpY2UpOyAKKyAgaWYoU1VDQ0VFREVEKGhyKSkgeyAKKyAgICBJQWNjZXNz
aWJsZTIgKnBJQTIgPSBOVUxMOyAKKyAgICBociA9IHBTZXJ2aWNlLT5RdWVyeVNlcnZpY2UoSUlE
X0lBY2Nlc3NpYmxlLCBJSURfSUFjY2Vzc2libGUyLCAodm9pZCoqKSZwSUEyKTsgCisgICAgaWYg
KFNVQ0NFRURFRChocikgJiYgcElBMikgeyAKKyAgICAgIC8vIFRoZSBjb250cm9sIHN1cHBvcnRz
IElBY2Nlc3NpYmxlMi4gCisgICAgICAvLyBwSUEyIGlzIHRoZSByZWZlcmVuY2UgdG8gdGhlIGFj
Y2Vzc2libGUgb2JqZWN0J3MgSUFjY2Vzc2libGUyIGludGVyZmFjZS4KKyAgICB9IAorICB9IAor
ICBAZW5kY29kZQorCisgIEBzZWN0aW9uIF9jaGFuZ2luZ0ludGVyZmFjZXMgQ2hhbmdpbmcgYmV0
d2VlbiBBY2Nlc3NpYmxlIEludGVyZmFjZXMKKyAgTm90ZSB0aGF0IGRldmVsb3BlcnMgbXVzdCBh
bHdheXMgaW1wbGVtZW50IE1TQUEncyBJQWNjZXNzaWJsZSBhbmQsIGlmIG5lZWRlZCwgc29tZQor
ICBvZiB0aGUgaW50ZXJmYWNlcyBpbiB0aGUgc2V0IG9mIElBY2Nlc3NpYmxlMiBpbnRlcmZhY2Vz
LiAgQWx0aG91Z2ggdGhlIElBY2Nlc3NpYmxlMgorICBJREwgaXMgY29kZWQgc3VjaCB0aGF0IElB
Y2Nlc3NpYmxlMiBpcyBhIHN1YmNsYXNzIG9mIE1TQUEncyBJQWNjZXNzaWJsZSwgbm9uZSBvZgor
ICBNU0FBJ3MgSUFjY2Vzc2libGUgbWV0aG9kcyBhcmUgcmVkZWZpbmVkIGJ5IElBY2Nlc3NpYmxl
Mi4KKworICBRdWVyeVNlcnZpY2UgbXVzdCBiZSB1c2VkIHRvIHN3aXRjaCBmcm9tIGEgcmVmZXJl
bmNlIHRvIGFuIE1TQUEgSUFjY2Vzc2libGUgaW50ZXJmYWNlIAorICB0byBhbm90aGVyIGludGVy
ZmFjZS4gIFRoaXMgaGFzIGJlZW4gCisgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXRpYS5vcmcvZmls
ZXMvcHVibGljL0ludHJvZHVjaW5nX0lBY2Nlc3NpYmxlRXguZG9jIj4KKyAgZG9jdW1lbnRlZDwv
YT4gYW5kIHRoZSBwZXJ0aW5lbnQgZmFjdHMgaGF2ZSBiZWVuIGV4dHJhY3RlZCBiZWxvdzogCisK
KyAgQHBhciAKKyAgIFdoeSB1c2UgUXVlcnlTZXJ2aWNlIGluc3RlYWQgb2YganVzdCB1c2luZyBR
dWVyeUludGVyZmFjZSB0byBnZXQgSUFjY2Vzc2libGVFeCAKKyAgIGRpcmVjdGx5PyBUaGUgcmVh
c29uIGlzIHRoYXQgc2luY2UgTVNBQSAyLjAsIGNsaWVudHMgZG9uJ3QgdGFsayB0byBhIHNlcnZl
cidzIAorICAgSUFjY2Vzc2libGUgaW50ZXJmYWNlIGRpcmVjdGx5OyBpbnN0ZWFkIHRoZXkgdGFs
ayB0byBhbiBpbnRlcm1lZGlhdGUgTVNBQS1wcm92aWRlZCAKKyAgIHdyYXBwZXIgdGhhdCBjYWxs
cyB0aHJvdWdoIHRvIHRoZSBvcmlnaW5hbCBJQWNjZXNzaWJsZS4gVGhpcyB3cmFwcGVyIHByb3Zp
ZGVzIHNlcnZpY2VzIAorICAgc3VjaCBhcyBpbXBsZW1lbnRpbmcgSURpc3BhdGNoLCBzdXBwbHlp
bmcgaW5mb3JtYXRpb24gZnJvbSBNU0FBIDIuMCdzIER5bmFtaWMgQW5ub3RhdGlvbiAKKyAgIHNl
cnZpY2UsIGFuZCBzY2FsaW5nIGxvY2F0aW9ucyB3aGVuIHJ1bm5pbmcgb24gV2luZG93cyBWaXN0
YSB3aXRoIERQSSBzY2FsaW5nIGVuYWJsZWQuIAorICAgUXVlcnlTZXJ2aWNlIGlzIHRoZSBzdXBw
b3J0ZWQgd2F5IHRvIGV4cG9zZSBhZGRpdGlvbmFsIGludGVyZmFjZXMgZnJvbSBhbiBleGlzdGlu
ZyAKKyAgIElBY2Nlc3NpYmxlIGFuZCB3YXMgb3JpZ2luYWxseSB1c2VkIGJ5IE1TSFRNTCB0byBl
eHBvc2UgSUhUTUxFbGVtZW50IG9iamVjdHMgY29ycmVzcG9uZGluZyAKKyAgIHRvIElBY2Nlc3Np
Ymxlcy4gUXVlcnlTZXJ2aWNlIGlzIG9mdGVuIG1vcmUgY29udmVuaWVudCBmb3Igc2VydmVycyB0
byBpbXBsZW1lbnQgdGhhbiAKKyAgIFF1ZXJ5SW50ZXJmYWNlIGJlY2F1c2UgaXQgZG9lcyBub3Qg
aGF2ZSB0aGUgc2FtZSByZXF1aXJlbWVudHMgZm9yIHByZXNlcnZpbmcgb2JqZWN0IAorICAgaWRl
bnRpdHkgb3Igc3ltbWV0cnkvdHJhbnNpdGl2aXR5IGFzIFF1ZXJ5SW50ZXJmYWNlLCBzbyBRdWVy
eVNlcnZpY2UgYWxsb3dzIHNlcnZlcnMgdG8gCisgICBlYXNpbHkgaW1wbGVtZW50IHRoZSBpbnRl
cmZhY2Ugb24gdGhlIHNhbWUgb2JqZWN0IG9yIGEgc2VwYXJhdGUgb2JqZWN0LiBUaGUgbGF0dGVy
IGlzIAorICAgb2Z0ZW4gaGFyZCB0byBkbyB3aXRoIFF1ZXJ5SW50ZXJmYWNlIHVubGVzcyB0aGUg
b3JpZ2luYWwgb2JqZWN0IHN1cHBvcnRzIGFnZ3JlZ2F0aW9uLiAKKworICBUd28gcmVsYXRlZCBy
ZWZlcmVuY2VzIGluIE1TRE4mcmVnOyBhcmU6IAorICBAbGkgPGEgaHJlZj0iaHR0cDovL21zZG4u
bWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNjk2MDc4KFZTLjg1KS5hc3B4Ij4KKyAgIlVz
aW5nIFF1ZXJ5U2VydmljZSB0byBleHBvc2UgYSBuYXRpdmUgb2JqZWN0IG1vZGVsIGludGVyZmFj
ZSBmb3IgYW4gSUFjY2Vzc2libGUgb2JqZWN0IjwvYT4KKyAgQGxpIDxhIGhyZWY9Imh0dHA6Ly9t
c2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczUyODQxNS5hc3B4I2FjY19vYmoiPiAK
KyAgIkFjY2Vzc2luZyB0aGUgSW50ZXJuZXQgRXhwbG9yZXIgT2JqZWN0IEFzc29jaWF0ZWQgd2l0
aCBhbiBBY2Nlc3NpYmxlIE9iamVjdCI8L2E+CisKKyAgQmFzZWQgb24gdGhpcyBpbmZvcm1hdGlv
biBmcm9tIE1pY3Jvc29mdCwgUXVlcnlTZXJ2aWNlIG11c3QgYmUgdXNlZCB0byBzd2l0Y2ggYmFj
ayBhbmQgZm9ydGggCisgIGJldHdlZW4gYSByZWZlcmVuY2UgdG8gYW4gTVNBQSBJQWNjZXNzaWJs
ZSBpbnRlcmZhY2UgYW5kIGFueSBvZiB0aGUgSUFjY2Vzc2libGUyIGludGVyZmFjZXMuIAorCisg
IFJlZ2FyZGluZyBzd2l0Y2hpbmcgYmV0d2VlbiBhbnkgb2YgdGhlIElBY2Nlc3NpYmxlMiBpbnRl
cmZhY2VzLCBhcHBsaWNhdGlvbnMgaW1wbGVtZW50aW5nCisgIElBY2Nlc3NpYmxlMiBzaG91bGQg
aW1wbGVtZW50IHRoZSBJQWNjZXNzaWJsZTIgaW50ZXJmYWNlcyBvbiBhIHNpbmdsZSBvYmplY3Qg
c2luY2UgQVRzCisgIHdpbGwgYmUgdXNpbmcgUXVlcnlJbnRlcmZhY2UgdG8gc3dpdGNoIGJldHdl
ZW4gdGhlIElBY2Nlc3NpbGJlMiBpbnRlcmZhY2VzLiAgSW1wbGVtZW50aW5nCisgIHRoZSBJQWNj
ZXNzaWJsZTIgaW50ZXJmYWNlcyBvbiBzZXBhcmF0ZSBvYmplY3RzIHdvdWxkIHJlcXVpcmUgdGhl
IHVzZSBvZiBRdWVyeVNlcnZpY2UuCisgIFRoZXJlIGlzIG9uZSBleGNlcHRpb24sIElBY2Nlc3Np
YmxlQXBwbGljYXRpb24gY2FuIGJlIGltcGxlbWVudGVkIG9uIGEgc2VwYXJhdGUgb2JqZWN0IHNv
CisgIGl0cyBjb21tb24gY29kZSBkb2Vzbid0IGhhdmUgdG8gYmUgaW5jbHVkZWQgaW4gZWFjaCBh
Y2Nlc3NpYmxlIG9iamVjdC4gIEFUcyBzaG91bGQgdXNlCisgIFF1ZXJ5U2VydmljZSB0byBhY2Nl
c3MgSUFjY2Vzc2libGVBcHBsaWNhdGlvbi4KKworIEBzZWN0aW9uIF9hcHBsaWNhdGlvbkluZm8g
QWNjZXNzIHRvIEluZm9ybWF0aW9uIGFib3V0IHRoZSBBcHBsaWNhdGlvbgorICBTZXJ2ZXJzIGlt
cGxlbWVudGluZyBJQWNjZXNzaWJsZTIgc2hvdWxkIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBJQWNj
ZXNzaWJsZUFwcGxpY2F0aW9uIAorICBpbnRlcmZhY2UgdmlhIFF1ZXJ5U2VydmljZSBmcm9tIGFu
eSBvYmplY3Qgc28gdGhhdCBBVHMgY2FuIGVhc2lseSBkZXRlcm1pbmUgc3BlY2lmaWMgCisgIGlu
Zm9ybWF0aW9uIGFib3V0IHRoZSBhcHBsaWNhdGlvbiBzdWNoIGFzIGl0cyBuYW1lIG9yIHZlcnNp
b24uCisKKyBAc2VjdGlvbiBfY2hpbGRJRHMgQ2hpbGQgSURzCisgIFRoZSBJQWNjZXNzaWJsZTIg
aW50ZXJmYWNlcyBkbyBub3Qgc3VwcG9ydCBjaGlsZCBJRHMsIGkuZS4gc2ltcGxlIGNoaWxkIGVs
ZW1lbnRzLgorICBGdWxsIGFjY2Vzc2libGUgb2JqZWN0cyBtdXN0IGJlIGNyZWF0ZWQgZm9yIGVh
Y2ggb2JqZWN0IHRoYXQgc3VwcG9ydHMgSUFjY2Vzc2libGUyLgorICBUaGVyZWZvcmUgTVNBQSdz
IGdldF9hY2NDaGlsZCBzaG91bGQgbmV2ZXIgcmV0dXJuIGEgY2hpbGQgSUQgKG90aGVyIHRoYW4g
Q0hJTERJRF9TRUxGKQorICBmb3IgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyBhbnkgb2YgdGhl
IElBY2Nlc3NpYmxlMiBpbnRlcmZhY2VzLgorCisgIE1pY3Jvc29mdCdzIFVJIEF1dG9tYXRpb24g
c3BlY2lmaWNhdGlvbiBoYXMgdGhlIHNhbWUgbGltaXRhdGlvbiBhbmQgdGhpcyB3YXMgcmVzb2x2
ZWQKKyAgaW4gdGhlIFVJIEF1dG9tYXRpb24gRXhwcmVzcyBzcGVjaWZpY2F0aW9uIGJ5IGFkZGlu
ZyBJQWNjZXNzaWJsZUV4OjpHZXRPYmplY3RGb3JDaGlsZAorICBhbmQgSUFjY2Vzc2libGVFeDo6
R2V0SUFjY2Vzc2libGVQYWlyLiAgVGhlc2UgbWV0aG9kcyBhbGxvdyBtYXBwaW5nIGJhY2sgYW5k
IGZvcnRoIAorICBiZXR3ZWVuIGFuIElBY2Nlc3NpYmxlRXggYW5kIGFuIHtJQWNjZXNzaWJsZSwg
Q2hpbGQgSUR9IHBhaXIuICBBIGZ1dHVyZSB2ZXJzaW9uIG9mIAorICBJQWNjZXNzaWJsZTIgbWF5
IGluY2x1ZGUgc2ltaWxhciBtZXRob2RzIHRvIG1hcCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIGFu
IElBY2Nlc3NpYmxlMgorICBhbmQgYW4ge0lBY2Nlc3NpYmxlLCBDaGlsZCBJRH0gcGFpci4KKwor
IEBzZWN0aW9uIF92YXJpYW50cyBWQVJJQU5UcworICBTb21lIG1ldGhvZHMgcmV0dXJuIGEgVkFS
SUFOVC4gIEltcGxlbWVudGVycyBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZXR1cm4gdHlw
ZSBpcyAKKyAgc3BlY2lmaWVkLCBpLmUuIFZUX0k0LCBWVF9JRElTUEFUQ0gsIGV0Yy4gIFRoZSBt
ZXRob2RzIHRoYXQgcmV0dXJuIFZBUklBTlRzIGFyZSAKKyAgSUFjY2Vzc2libGVIeXBlcmxpbms6
OmFuY2hvciwgSUFjY2Vzc2libGVIeXBlcmxpbms6OmFuY2hvclRhcmdldCwgSUFjY2Vzc2libGVW
YWx1ZTo6Y3VycmVudFZhbHVlLAorICBJQWNjZXNzaWJsZVZhbHVlOjptYXhpbXVtVmFsdWUsIElB
Y2Nlc3NpYmxlVmFsdWU6Om1pbmltdW1WYWx1ZS4KKworIEBzZWN0aW9uIF9pYWFjdGlvbi1pYWh5
cGVybGluayBJQWNjZXNzaWJsZUh5cGVybGluayBhcyBzdWJjbGFzcyBvZiBJQWNjZXNzaWJsZUFj
dGlvbgorICBJbiB0aGlzIHZlcnNpb24gb2YgdGhlIElETCwgSUFjY2Vzc2libGVIeXBlcmxpbmsg
aXMgYSBzdWJjbGFzcyBvZiBJQWNjZXNzaWJsZUFjdGlvbi4gIAorICBIb3dldmVyLCB0aGVyZSBp
cyBubyBwcmFjdGljYWwgbmVlZCBmb3IgdGhhdCBpbmhlcml0YW5jZSBhbmQgaW4gc29tZSBjYXNl
cywgc3VjaCBhcworICBhbiBpbWFnZSBtYXAgb2Ygc21hcnQgdGFncywgaXQgZG9lc24ndCBtYWtl
IHNlbnNlIGJlY2F1c2Ugc3VjaCBhbiBpbWFnZSBtYXAgZG9lc24ndCAKKyAgaGF2ZSBhY3Rpb25h
YmxlIG9iamVjdHM7IGl0J3MgdGhlIHNlY29uZGFyeSBzbWFydCB0YWdzIHRoYXQgYXJlIGFjdGlv
bmFibGUuICBBcyBhIAorICByZXN1bHQsIGltcGxlbWVudGF0aW9ucyBzaG91bGQgbm90IHJlbHkg
b24gdGhlIGluaGVyaXRhbmNlIGFzIGl0IG1heSBiZSByZW1vdmVkIGluIAorICBhIGxhdGVyIHZl
cnNpb24gb2YgdGhlIElETC4KKworIEBzZWN0aW9uIF90cmFkZW1hcmsgVHJhZGVtYXJrIEF0dHJp
YnV0aW9uCisgIFRoZSBuYW1lcyBvZiBhY3R1YWwgY29tcGFuaWVzIGFuZCBwcm9kdWN0cyBtZW50
aW9uZWQgaGVyZWluIG1heSBiZSB0aGUgdHJhZGVtYXJrcyBvZgorICB0aGVpciByZXNwZWN0aXZl
IG93bmVycy4gIEluIHBhcnRpY3VsYXIsIEFjdGl2ZSBBY2Nlc3NpYmlsaXR5LCBNaWNyb3NvZnQs
IE1TRE4sIGFuZCBXaW4zMgorICBhcmUgdHJhZGVtYXJrcyBvZiB0aGUgTWljcm9zb2Z0IGdyb3Vw
IG9mIGNvbXBhbmllcyBpbiB0aGUgVS5TLkEuIGFuZC9vciBvdGhlciBjb3VudHJpZXMuCisKKyoq
LworCitpbXBvcnQgIm9iamlkbC5pZGwiOworaW1wb3J0ICJvYWlkbC5pZGwiOworaW1wb3J0ICJv
bGVhY2MuaWRsIjsKK2ltcG9ydCAiQWNjZXNzaWJsZVJlbGF0aW9uLmlkbCI7CitpbXBvcnQgIkFj
Y2Vzc2libGVTdGF0ZXMuaWRsIjsKK2ltcG9ydCAiSUEyQ29tbW9uVHlwZXMuaWRsIjsKKworLyoq
IEEgc3RydWN0dXJlIGRlZmluaW5nIHRoZSBsb2NhbGUgb2YgYW4gYWNjZXNzaWJsZSBvYmplY3Qu
CisgCitJQWNjZXNzaWJsZTI6OmxvY2FsZSByZXR1cm5zIHRoaXMgc3RydWN0LgorKi8KK3R5cGVk
ZWYgc3RydWN0IElBMkxvY2FsZSB7CisgIEJTVFIgbGFuZ3VhZ2U7IC8vLzwgSVNPIDYzOS0xIEFs
cGhhLTIgdHdvIGNoYXJhY3RlciBsYW5ndWFnZSBjb2RlCisgIEJTVFIgY291bnRyeTsgIC8vLzwg
SVNPIDMxNjYtMSBBbHBoYS0yIHR3byBjaGFyYWN0ZXIgY291bnRyeSBjb2RlCisgIEJTVFIgdmFy
aWFudDsgIC8vLzwgQXBwbGljYXRpb24gc3BlY2lmaWMgdmFyaWFudCBvZiB0aGUgbG9jYWxlCit9
IElBMkxvY2FsZTsKKworLyoqIEBicmllZiBUaGlzIGludGVyZmFjZSBleHBvc2VzIHRoZSBwcmlt
YXJ5IHNldCBvZiBpbmZvcm1hdGlvbiBhYm91dCBhbgorIElBY2Nlc3NpYmxlMiBlbmFibGVkIGFj
Y2Vzc2libGUgb2JqZWN0LgorCisgVGhpcyBpbnRlcmZhY2UgbXVzdCBhbHdheXMgYmUgcHJvdmlk
ZWQgZm9yIG9iamVjdHMgdGhhdCBzdXBwb3J0IHNvbWUKKyBwb3J0aW9uIG9mIHRoZSBjb2xsZWN0
aW9uIG9mIHRoZSAlSUFjY2Vzc2libGUyIGludGVyZmFjZXMuCisKKyBQbGVhc2UgcmVmZXIgdG8g
QHJlZiBfY2hhbmdpbmdJbnRlcmZhY2VzICJDaGFuZ2luZyBiZXR3ZWVuIEFjY2Vzc2libGUgSW50
ZXJmYWNlcyIKKyBmb3Igc3BlY2lhbCBjb25zaWRlcmF0aW9ucyByZWxhdGVkIHRvIHVzZSBvZiB0
aGUgTVNBQSBJQWNjZXNzaWJsZSBpbnRlcmZhY2UgYW5kIAorIHRoZSBzZXQgb2YgJUlBY2Nlc3Np
YmxlMiBpbnRlcmZhY2VzLgorICovCitbb2JqZWN0LCB1dWlkKEU4OUY3MjZFLUM0RjQtNGMxOS1C
QjE5LUI2NDdEN0ZBODQ3OCldCitpbnRlcmZhY2UgSUFjY2Vzc2libGUyIDogSUFjY2Vzc2libGUK
K3sKKworICAvKiogQGJyaWVmIFJldHVybnMgdGhlIG51bWJlciBvZiBhY2Nlc3NpYmxlIHJlbGF0
aW9ucyBmb3IgdGhpcyBvYmplY3QuCisgICBAcGFyYW0gW291dF0gblJlbGF0aW9ucworICAgQHJl
dHZhbCBTX09LCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIG5SZWxhdGlvbnMKKyAgICAoCisg
ICAgIFtvdXQsIHJldHZhbF0gbG9uZyAqblJlbGF0aW9ucworICAgICk7CisKKyAgLyoqIEBicmll
ZiBSZXR1cm5zIG9uZSBhY2Nlc3NpYmxlIHJlbGF0aW9uIGZvciB0aGlzIG9iamVjdC4KKyAgIEBw
YXJhbSBbaW5dIHJlbGF0aW9uSW5kZXgKKyAgICAgMCBiYXNlZAorICAgQHBhcmFtIFtvdXRdIHJl
bGF0aW9uCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlmIGJhZCBb
aW5dIHBhc3NlZAorICAqLworICBbcHJvcGdldF0gSFJFU1VMVCByZWxhdGlvbgorICAgICgKKyAg
ICAgW2luXSBsb25nIHJlbGF0aW9uSW5kZXgsCisgICAgIFtvdXQsIHJldHZhbF0gSUFjY2Vzc2li
bGVSZWxhdGlvbiAqKnJlbGF0aW9uCisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMgbXVs
dGlwbGUgYWNjZXNzaWJsZSByZWxhdGlvbnMgZm9yIHRoaXMgb2JqZWN0LgorICAgQHBhcmFtIFtp
bl0gbWF4UmVsYXRpb25zCisgICAgIG1heGltdW0gc2l6ZSBvZiB0aGUgYXJyYXkgYWxsb2NhdGVk
IGJ5IHRoZSBjbGllbnQKKyAgIEBwYXJhbSBbb3V0XSByZWxhdGlvbnMKKyAgICBUaGUgYXJyYXkg
b2YgYWNjZXNzaWJsZSByZWxhdGlvbiBvYmplY3RzLiAgTm90ZSB0aGF0IHRoaXMgYXJyYXkgaXMg
dG8gYmUKKyAgICBhbGxvY2F0ZWQgYnkgdGhlIGNsaWVudCBhbmQgZnJlZWQgd2hlbiBubyBsb25n
ZXIgbmVlZGVkLiAgUmVmZXIgdG8gQHJlZiAKKyAgICBfYXJyYXlDb25zaWRlcmF0aW9uICJTcGVj
aWFsIENvbnNpZGVyYXRpb24gd2hlbiB1c2luZyBBcnJheXMiIGZvciBtb3JlIGRldGFpbHMuCisg
ICBAcGFyYW0gW291dF0gblJlbGF0aW9ucyAKKyAgICBhY3R1YWwgbnVtYmVyIG9mIHJlbGF0aW9u
cyBpbiB0aGUgcmV0dXJuZWQgYXJyYXkgKG5vdCBtb3JlIHRoYW4gbWF4UmVsYXRpb25zKQorICAg
QHJldHZhbCBTX09LCisgICBAcmV0dmFsIFNfRkFMU0UgaWYgdGhlcmUgYXJlIG5vIHJlbGF0aW9u
cywgblJlbGF0aW9ucyBpcyBzZXQgdG8gMAorICAgQG5vdGUgQXMgYSBwZXJmb3JtYW50IGFsdGVy
bmF0aXZlLCBjbGllbnQgY29kZSBzaG91bGQgY29uc2lkZXIgdXNpbmcgSUFjY2Vzc2libGUyXzI6
OnJlbGF0aW9uVGFyZ2V0c09mVHlwZS4KKyAgKi8KKyAgW3Byb3BnZXRdIEhSRVNVTFQgcmVsYXRp
b25zCisgICAgKAorICAgICBbaW5dIGxvbmcgbWF4UmVsYXRpb25zLCAKKyAgICAgW291dCwgc2l6
ZV9pcyhtYXhSZWxhdGlvbnMpLCBsZW5ndGhfaXMoKm5SZWxhdGlvbnMpXQorICAgICAgIElBY2Nl
c3NpYmxlUmVsYXRpb24gKipyZWxhdGlvbnMsIAorICAgICBbb3V0LCByZXR2YWxdIGxvbmcgKm5S
ZWxhdGlvbnMgCisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMgdGhlIHJvbGUgb2YgYW4g
JUlBY2Nlc3NpYmxlMiBvYmplY3QuCisgICBAcGFyYW0gW291dF0gcm9sZQorICAgIFRoZSByb2xl
IG9mIGFuICVJQWNjZXNzaWJsZTIgb2JqZWN0LgorICAgQHJldHZhbCBTX09LCisgICBAbm90ZSAK
KyAgIEBsaSBGb3IgY29udmVuaWVuY2UgTVNBQSByb2xlcyBhcmUgYWxzbyBwYXNzZWQgdGhyb3Vn
aCB0aGlzIG1ldGhvZCBzbyB0aGUKKyAgICBBVCBkb2Vzbid0IGhhdmUgdG8gYWxzbyBmZXRjaCBy
b2xlcyB0aHJvdWdoIE1TQUEncyBnZXRfYWNjUm9sZS4KKyAgIEBsaSAlSUFjY2Vzc2libGUyIHJv
bGVzIHNob3VsZCBub3QgYmUgcGFzc2VkIHRocm91Z2ggTVNBQSdzIGdldF9hY2NSb2xlLgorICAg
QGxpIEZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uIElBY2Nlc3NpYmxlMiBlbmFibGVkIEFUcywg
SUFjY2Vzc2libGUyIAorICAgIGFwcGxpY2F0aW9ucyBzaG91bGQgYWxzbyBhZGQgc3VwcG9ydCB0
byBnZXRfYWNjUm9sZSB0byByZXR1cm4gdGhlIGNsb3Nlc3QgCisgICAgTVNBQSByb2xlIG9yIFJP
TEVfU1lTVEVNX0NMSUVOVCAodGhlIE1TQUEgZGVmaW5lZCBkZWZhdWx0IHJvbGUpIGlmIHRoZXJl
IAorICAgIGlzIG5vdCBhIGdvb2QgbWF0Y2guICAKKyAgIEBsaSBUaGlzIG1ldGhvZCBpcyBtaXNz
aW5nIGEgW3Byb3BnZXRdIHByZWZpeCBpbiB0aGUgSURMLiAgVGhlIHJlc3VsdCBpcyB0aGUKKyAg
ICBtZXRob2QgaXMgbmFtZWQgcm9sZSBpbiBnZW5lcmF0ZWQgQysrIGNvZGUgaW5zdGVhZCBvZiBn
ZXRfcm9sZS4KKyAgKi8KKyAgSFJFU1VMVCByb2xlCisgICAgKAorICAgICBbb3V0LCByZXR2YWxd
IGxvbmcgKnJvbGUKKyAgICApOworCisgIC8qKiBAYnJpZWYgTWFrZXMgYW4gb2JqZWN0IHZpc2li
bGUgb24gdGhlIHNjcmVlbi4KKyAgIEBwYXJhbSBbaW5dIHNjcm9sbFR5cGUKKyAgICBEZWZpbmVz
IHdoZXJlIHRoZSBvYmplY3Qgc2hvdWxkIGJlIHBsYWNlZCBvbiB0aGUgc2NyZWVuLgorICAgQHJl
dHZhbCBTX09LCisgICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQKKyAg
Ki8KKyAgSFJFU1VMVCBzY3JvbGxUbworICAgICgKKyAgICAgW2luXSBlbnVtIElBMlNjcm9sbFR5
cGUgc2Nyb2xsVHlwZSAKKyAgICApOworCisgIC8qKiBAYnJpZWYgTW92ZXMgdGhlIHRvcCBsZWZ0
IG9mIGFuIG9iamVjdCB0byBhIHNwZWNpZmllZCBsb2NhdGlvbi4KKworICAgQHBhcmFtIFtpbl0g
Y29vcmRpbmF0ZVR5cGUKKyAgICBTcGVjaWZpZXMgd2hldGhlciB0aGUgY29vcmRpbmF0ZXMgYXJl
IHJlbGF0aXZlIHRvIHRoZSBzY3JlZW4gb3IgdGhlIHBhcmVudCBvYmplY3QuCisgICBAcGFyYW0g
W2luXSB4CisgICAgRGVmaW5lcyB0aGUgeCBjb29yZGluYXRlLgorICAgQHBhcmFtIFtpbl0geQor
ICAgIERlZmluZXMgdGhlIHkgY29vcmRpbmF0ZS4KKyAgIEByZXR2YWwgU19PSworICAgQHJldHZh
bCBFX0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFzc2VkCisgICovCisgIEhSRVNVTFQgc2Nyb2xs
VG9Qb2ludAorICAgICgKKyAgICAgW2luXSBlbnVtIElBMkNvb3JkaW5hdGVUeXBlIGNvb3JkaW5h
dGVUeXBlLAorICAgICBbaW5dIGxvbmcgeCwKKyAgICAgW2luXSBsb25nIHkgCisgICAgKTsKKwor
ICAvKiogQGJyaWVmIFJldHVybnMgZ3JvdXBpbmcgaW5mb3JtYXRpb24uCisgICAKKyAgIFVzZWQg
Zm9yIHRyZWUgaXRlbXMsIGxpc3QgaXRlbXMsIHRhYiBwYW5lbCBsYWJlbHMsIHJhZGlvIGJ1dHRv
bnMsIGV0Yy4KKyAgIEFsc28gdXNlZCBmb3IgY29sbGVjdGlvbnMgb2Ygbm9uLXRleHQgb2JqZWN0
cy4KKworICAgQHBhcmFtIFtvdXRdIGdyb3VwTGV2ZWwKKyAgICAxIGJhc2VkLCAwIGluZGljYXRl
cyB0aGF0IHRoaXMgdmFsdWUgaXMgbm90IGFwcGxpY2FibGUKKyAgIEBwYXJhbSBbb3V0XSBzaW1p
bGFySXRlbXNJbkdyb3VwCisgICAgMSBiYXNlZCwgMCBpbmRpY2F0ZXMgdGhhdCB0aGlzIHZhbHVl
IGlzIG5vdCBhcHBsaWNhYmxlCisgICBAcGFyYW0gW291dF0gcG9zaXRpb25Jbkdyb3VwCisgICAg
MSBiYXNlZCwgMCBpbmRpY2F0ZXMgdGhhdCB0aGlzIHZhbHVlIGlzIG5vdCBhcHBsaWNhYmxlLiBU
aGlzIGlzIGFuIGluZGV4CisgICAgaW50byB0aGUgb2JqZWN0cyBpbiB0aGUgY3VycmVudCBncm91
cCwgbm90IGFuIGluZGV4IGludG8gYWxsIHRoZSBvYmplY3RzCisgICAgYXQgdGhlIHNhbWUgZ3Jv
dXAgbGV2ZWwuCisgICBAcmV0dmFsIFNfT0sgaWYgYXQgbGVhc3Qgb25lIHZhbHVlIGlzIHZhbGlk
CisgICBAcmV0dmFsIFNfRkFMU0UgaWYgbm8gdmFsdWVzIGFyZSB2YWxpZCwgW291dF0gdmFsdWVz
IGFyZSAwcworICAgQG5vdGUgVGhpcyBtZXRob2QgaXMgbWVhbnQgdG8gZGVzY3JpYmUgdGhlIG5h
dHVyZSBvZiBhbiBvYmplY3QncyBjb250YWlubWVudAorICAgIHN0cnVjdHVyZS4gIEl0J3MgZXhw
b3NlZCBieSB0cmVlcywgdHJlZSBncmlkcywgbmVzdGVkIGxpc3RzLCBuZXN0ZWQgbWVudXMsCisg
ICAgYnV0IG5vdCBoZWFkaW5ncywgd2hpY2ggdXNlcyB0aGUgbGV2ZWwgb2JqZWN0IGF0dHJpYnV0
ZS4gIEl0IGlzIGFsc28gZXhwb3NlZAorICAgIGJ5IHJhZGlvIGJ1dHRvbnMgKHdpdGggZ3JvdXBM
ZXZlbCA9PSAwKS4KKyAgIEBub3RlIFRoaXMgaXMgbm9ybWFsbHkgbm90IGltcGxlbWVudGVkIG9u
IGEgY29tYm8gYm94IHRvIGRlc2NyaWJlIHRoZSBuYXR1cmUKKyAgICBvZiBpdHMgY29udGVudHMu
ICBOb3JtYWxseSBhbiBBVCB3aWxsIGdldCB0aGF0IGluZm9ybWF0aW9uIGZyb20gaXRzIGNoaWxk
IGxpc3QgCisgICAgb2JqZWN0LiAgSG93ZXZlciwgaW4gc29tZSBjYXNlcyB3aGVuIG5vbi1lZGl0
IGNvbWJvIGJveGVzIGFyZSBub3QgYWJsZSB0byBiZSBzdHJ1Y3R1cmVkCisgICAgc3VjaCB0aGF0
IHRoZSBsaXN0IGlzIGEgY2hpbGQgb2YgdGhlIGNvbWJvIGJveCwgdGhpcyBtZXRob2QgaXMgaW1w
bGVtZW50ZWQgb24KKyAgICB0aGUgY29tYm8gYm94IGl0c2VsZi4gQVRzIGNhbiB1c2UgdGhpcyBp
bnRlcmZhY2UgaWYgYSBjaGlsZCBsaXN0IGlzIG5vdCBmb3VuZC4KKyAgKi8KKyAgW3Byb3BnZXRd
IEhSRVNVTFQgZ3JvdXBQb3NpdGlvbgorICAgICgKKyAgICAgW291dF0gbG9uZyAqZ3JvdXBMZXZl
bCwKKyAgICAgW291dF0gbG9uZyAqc2ltaWxhckl0ZW1zSW5Hcm91cCwKKyAgICAgW291dCwgcmV0
dmFsXSBsb25nICpwb3NpdGlvbkluR3JvdXAgCisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVy
bnMgdGhlIGJpdCBzdHJpcCBjb250YWluaW5nIGFueSBJQWNjZXNzaWJsZTIgc3RhdGVzLgorICAK
KyAgIFRoZSBJQWNjZXNzaWJsZTIgc3RhdGVzIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgTVNBQSBz
dGF0ZXMgYW5kIGFyZSBkZWZpbmVkIGluCisgICB0aGUgSUEyU3RhdGVzIGVudW0uCisKKyAgIEBw
YXJhbSBbb3V0XSBzdGF0ZXMKKyAgIEByZXR2YWwgU19PSworICAqLworICBbcHJvcGdldF0gSFJF
U1VMVCBzdGF0ZXMKKyAgICAoCisgICAgIFtvdXQsIHJldHZhbF0gQWNjZXNzaWJsZVN0YXRlcyAq
c3RhdGVzCisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMgdGhlIGV4dGVuZGVkIHJvbGUu
CisgICAKKyAgIEFuIGV4dGVuZGVkIHJvbGUgaXMgYSByb2xlIHdoaWNoIGlzIGR5bmFtaWNhbGx5
IGdlbmVyYXRlZCBieSB0aGUgYXBwbGljYXRpb24uCisgICBJdCBpcyBub3QgcHJlZGVmaW5lZCBi
eSB0aGUgJUlBY2Nlc3NpYmxlMiBzcGVjaWZpY2F0aW9uLgorICAgCisgICBAcGFyYW0gW291dF0g
ZXh0ZW5kZWRSb2xlCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxTRSBpZiB0aGVy
ZSBpcyBub3RoaW5nIHRvIHJldHVybiwgW291dF0gdmFsdWUgaXMgTlVMTAorICAqLworICBbcHJv
cGdldF0gSFJFU1VMVCBleHRlbmRlZFJvbGUKKyAgICAoCisgICAgIFtvdXQsIHJldHZhbF0gQlNU
UiAqZXh0ZW5kZWRSb2xlCisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMgdGhlIGxvY2Fs
aXplZCBleHRlbmRlZCByb2xlLgorICAgQHBhcmFtIFtvdXRdIGxvY2FsaXplZEV4dGVuZGVkUm9s
ZQorICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFsIFNfRkFMU0UgaWYgdGhlcmUgaXMgbm90aGlu
ZyB0byByZXR1cm4sIFtvdXRdIHZhbHVlIGlzIE5VTEwKKyAgKi8KKyAgW3Byb3BnZXRdIEhSRVNV
TFQgbG9jYWxpemVkRXh0ZW5kZWRSb2xlCisgICAgKAorICAgICBbb3V0LCByZXR2YWxdIEJTVFIg
KmxvY2FsaXplZEV4dGVuZGVkUm9sZQorICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIHRo
ZSBudW1iZXIgb2YgZXh0ZW5kZWQgc3RhdGVzLgorICAgQHBhcmFtIFtvdXRdIG5FeHRlbmRlZFN0
YXRlcworICAgQHJldHZhbCBTX09LCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIG5FeHRlbmRl
ZFN0YXRlcworICAgICgKKyAgICAgW291dCwgcmV0dmFsXSBsb25nICpuRXh0ZW5kZWRTdGF0ZXMK
KyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJucyB0aGUgZXh0ZW5kZWQgc3RhdGVzIChhcnJh
eSBvZiBzdHJpbmdzKS4KKworICAgQW4gZXh0ZW5kZWQgc3RhdGUgaXMgYSBzdGF0ZSB3aGljaCBp
cyBkeW5hbWljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgorICAgSXQgaXMgbm90
IHByZWRlZmluZWQgYnkgdGhlICVJQWNjZXNzaWJsZTIgc3BlY2lmaWNhdGlvbi4KKworICAgQHBh
cmFtIFtpbl0gbWF4RXh0ZW5kZWRTdGF0ZXMKKyAgICBUaGlzIHBhcmFtZXRlciBpcyBpZ25vcmVk
LiBSZWZlciB0byBAcmVmIF9hcnJheUNvbnNpZGVyYXRpb24gCisgICAgIlNwZWNpYWwgQ29uc2lk
ZXJhdGlvbiB3aGVuIHVzaW5nIEFycmF5cyIgZm9yIG1vcmUgZGV0YWlscy4KKyAgIEBwYXJhbSBb
b3V0XSBleHRlbmRlZFN0YXRlcworICAgIFRoaXMgYXJyYXkgaXMgYWxsb2NhdGVkIGJ5IHRoZSBz
ZXJ2ZXIuICBUaGUgY2xpZW50IG11c3QgZnJlZSBpdCB3aXRoIENvVGFza01lbUZyZWUuCisgICBA
cGFyYW0gW291dF0gbkV4dGVuZGVkU3RhdGVzCisgICAgVGhlIG51bWJlciBvZiBleHRlbmRlZCBz
dGF0ZXMgcmV0dXJuZWQ7IHRoZSBzaXplIG9mIHRoZSByZXR1cm5lZCBhcnJheS4KKyAgIEByZXR2
YWwgU19PSworICAgQHJldHZhbCBTX0ZBTFNFIGlmIHRoZXJlIGFyZSBubyBzdGF0ZXMsIFtvdXRd
IHZhbHVlcyBhcmUgTlVMTCBhbmQgMCByZXNwZWN0aXZlbHkKKyAgKi8KKyAgW3Byb3BnZXRdIEhS
RVNVTFQgZXh0ZW5kZWRTdGF0ZXMKKyAgICAoCisgICAgIFtpbl0gbG9uZyBtYXhFeHRlbmRlZFN0
YXRlcywKKyAgICAgW291dCwgc2l6ZV9pcygsbWF4RXh0ZW5kZWRTdGF0ZXMpLCBsZW5ndGhfaXMo
LCpuRXh0ZW5kZWRTdGF0ZXMpXSBCU1RSICoqZXh0ZW5kZWRTdGF0ZXMsCisgICAgIFtvdXQsIHJl
dHZhbF0gbG9uZyAqbkV4dGVuZGVkU3RhdGVzCisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVy
bnMgdGhlIGxvY2FsaXplZCBleHRlbmRlZCBzdGF0ZXMgKGFycmF5IG9mIHN0cmluZ3MpLgorCisg
ICBAcGFyYW0gW2luXSBtYXhMb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcworICAgIFRoaXMgcGFyYW1l
dGVyIGlzIGlnbm9yZWQuIFJlZmVyIHRvIEByZWYgX2FycmF5Q29uc2lkZXJhdGlvbiAKKyAgICAi
U3BlY2lhbCBDb25zaWRlcmF0aW9uIHdoZW4gdXNpbmcgQXJyYXlzIiBmb3IgbW9yZSBkZXRhaWxz
LgorICAgQHBhcmFtIFtvdXRdIGxvY2FsaXplZEV4dGVuZGVkU3RhdGVzCisgICAgVGhpcyBhcnJh
eSBpcyBhbGxvY2F0ZWQgYnkgdGhlIHNlcnZlci4gIFRoZSBjbGllbnQgbXVzdCBmcmVlIGl0IHdp
dGggQ29UYXNrTWVtRnJlZS4gCisgICBAcGFyYW0gW291dF0gbkxvY2FsaXplZEV4dGVuZGVkU3Rh
dGVzCisgICAgVGhlIG51bWJlciBvZiBsb2NhbGl6ZWQgZXh0ZW5kZWQgc3RhdGVzIHJldHVybmVk
OyB0aGUgc2l6ZSBvZiB0aGUgcmV0dXJuZWQgYXJyYXkuCisgICBAcmV0dmFsIFNfT0sKKyAgIEBy
ZXR2YWwgU19GQUxTRSBpZiB0aGVyZSBhcmUgbm8gc3RhdGVzLCBbb3V0XSB2YWx1ZXMgYXJlIE5V
TEwgYW5kIDAgcmVzcGVjdGl2ZWx5CisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIGxvY2FsaXpl
ZEV4dGVuZGVkU3RhdGVzCisgICAgKAorICAgICBbaW5dIGxvbmcgbWF4TG9jYWxpemVkRXh0ZW5k
ZWRTdGF0ZXMsCisgICAgIFtvdXQsIHNpemVfaXMoLG1heExvY2FsaXplZEV4dGVuZGVkU3RhdGVz
KSwgbGVuZ3RoX2lzKCwqbkxvY2FsaXplZEV4dGVuZGVkU3RhdGVzKV0gQlNUUiAqKmxvY2FsaXpl
ZEV4dGVuZGVkU3RhdGVzLAorICAgICBbb3V0LCByZXR2YWxdIGxvbmcgKm5Mb2NhbGl6ZWRFeHRl
bmRlZFN0YXRlcworICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSB1bmlxdWUgSUQu
CisgICAKKyAgIFRoZSB1bmlxdWVJRCBpcyBhbiBpZGVudGlmaWVyIGZvciB0aGlzIG9iamVjdCwg
aXMgdW5pcXVlIHdpdGhpbiB0aGUKKyAgIGN1cnJlbnQgd2luZG93LCBhbmQgcmVtYWlucyB0aGUg
c2FtZSBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBhY2Nlc3NpYmxlCisgICBvYmplY3QuIAorICAg
CisgICBUaGUgdW5pcXVlSUQgaXMgbm90IHJlbGF0ZWQgdG86CisgICAtIHRoZSBNU0FBIG9iamVj
dElEIHdoaWNoIGlzIHVzZWQgYnkgdGhlIHNlcnZlciB0byBkaXNhbWJpZ3VhdGUgYmV0d2Vlbgor
ICAgSUFjY2Vzc2libGVzIHBlciBIV05EIG9yCisgICAtIHRoZSBNU0FBIGNoaWxkSUQgd2hpY2gg
aXMgdXNlZCB0byBkaXNhbWJpZ3VhdGUgYmV0d2VlbiBjaGlsZHJlbiBiZWluZworICAgbWFuYWdl
ZCBieSBhbiBJQWNjZXNzaWJsZS4KKworICAgVGhpcyB2YWx1ZSBpcyBwcm92aWRlZCBzbyB0aGUg
QVQgY2FuIGhhdmUgYWNjZXNzIHRvIGEgdW5pcXVlIHJ1bnRpbWUgcGVyc2lzdGVudCAKKyAgIGlk
ZW50aWZpZXIgZXZlbiB3aGVuIG5vdCBoYW5kbGluZyBhbiBldmVudCBmb3IgdGhlIG9iamVjdC4K
KyAgIAorICAgQW4gZXhhbXBsZSBvZiB3aGVuIHRoaXMgdmFsdWUgaXMgdXNlZnVsIGlzIGlmIHRo
ZSBBVCB3YW50cyB0byBidWlsZCBhIGNhY2hlLiAKKyAgIFRoZSBBVCBjb3VsZCBjYWNoZSB0aGUg
dW5pcXVlSURzIGluIGFkZGl0aW9uIHRvIG90aGVyIGRhdGEgYmVpbmcgY2FjaGVkLiAKKyAgIFdo
ZW4gYW4gZXZlbnQgaXMgZmlyZWQgdGhlIEFUIGNvdWxkIG1hcCB0aGUgdW5pcXVlSUQgdG8gaXRz
IGludGVybmFsIG1vZGVsLgorICAgVGh1cywgaWYgdGhlcmUncyBhIFJFT1JERVIvU0hPVy9ISURF
IGV2ZW50IHRoZSBBVCBrbm93cyB3aGljaCBwYXJ0IG9mIHRoZSAKKyAgIGludGVybmFsIHN0cnVj
dHVyZSBoYXMgYmVlbiBpbnZhbGlkYXRlZCBhbmQgY2FuIHJlZmV0Y2gganVzdCB0aGF0IHBhcnQu
CisKKyAgIFRoaXMgdmFsdWUgY2FuIGFsc28gYmUgdXNlZCBieSBhbiBBVCB0byBkZXRlcm1pbmUg
d2hlbiB0aGUgY3VycmVudCBjb250cm9sCisgICBoYXMgY2hhbmdlZC4gSWYgdGhlIHJvbGUgaXMg
dGhlIHNhbWUgZm9yIHR3byBjb250cm9scyB0aGF0IGFyZSBhZGphY2VudCBpbiAKKyAgIHRoZSB0
YWIgb3JkZXIsIHRoaXMgY2FuIGJlIHVzZWQgdG8gZGV0ZWN0IHRoZSBuZXcgY29udHJvbC4KKwor
ICAgQW5vdGhlciB1c2Ugb2YgdGhpcyB2YWx1ZSBieSBhbiBBVCBpcyB0byBpZGVudGlmeSB3aGVu
IGEgZ3JvdXBpbmcgb2JqZWN0IGhhcyAKKyAgIGNoYW5nZWQsIGUuZy4gd2hlbiBtb3ZpbmcgZnJv
bSBhIHJhZGlvIGJ1dHRvbiBpbiBvbmUgZ3JvdXAgdG8gYSByYWRpbyBidXR0b24gaW4gYSAKKyAg
IGRpZmZlcmVudCBncm91cC4KKworICAgT25lIG1lYW5zIG9mIGltcGxlbWVudGluZyB0aGlzIHdv
dWxkIGJlIHRvIGNyZWF0ZSBhIGZhY3Rvcnkgd2l0aCBhIDMyIGJpdCBudW1iZXIgCisgICBnZW5l
cmF0b3IgYW5kIGEgcmV1c2UgcG9vbC4gIFRoZSBudW1iZXIgZ2VuZXJhdG9yIHdvdWxkIGVtaXQg
bnVtYmVycyBzdGFydGluZyAKKyAgIGF0IDEuICBFYWNoIHRpbWUgYW4gb2JqZWN0J3MgbGlmZSBj
eWNsZSBlbmRlZCwgaXRzIG51bWJlciB3b3VsZCBiZSBzYXZlZCBpbnRvIGEgCisgICByZXVzZSBw
b29sLiAgVGhlIG51bWJlciBnZW5lcmF0b3Igd291bGQgYmUgdXNlZCB3aGVuZXZlciB0aGUgcmV1
c2UgcG9vbCB3YXMgZW1wdHkuCisKKyAgIEFub3RoZXIgd2F5IHRvIGNyZWF0ZSBhIHVuaXF1ZSBJ
RCBpcyB0byBnZW5lcmF0ZSBpdCBmcm9tIGEgcG9pbnRlciB2YWx1ZSwgZS5nLiBhbgorICAgb2Jq
ZWN0J3MgYWRkcmVzcy4gVGhhdCB3b3VsZCBiZSB1bmlxdWUgYmVjYXVzZSBubyB0d28gYWN0aXZl
IG9iamVjdHMgY2FuIHVzZSB0aGUKKyAgIHNhbWUgYWxsb2NhdGVkIG1lbW9yeSBzcGFjZS4KKwor
ICAgQHBhcmFtIFtvdXRdIHVuaXF1ZUlECisgICBAcmV0dmFsIFNfT0sKKyAgKi8KKyAgW3Byb3Bn
ZXRdIEhSRVNVTFQgdW5pcXVlSUQKKyAgICAoCisgICAgIFtvdXQsIHJldHZhbF0gbG9uZyAqdW5p
cXVlSUQKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJucyB0aGUgd2luZG93IGhhbmRsZSBm
b3IgdGhlIHBhcmVudCB3aW5kb3cgd2hpY2ggY29udGFpbnMgdGhpcyBvYmplY3QuCisKKyAgIFRo
aXMgaXMgdGhlIHNhbWUgd2luZG93IGhhbmRsZSB3aGljaCB3aWxsIGJlIHBhc3NlZCBmb3IgYW55
IGV2ZW50cyB0aGF0IG9jY3VyIG9uIHRoZSAKKyAgIG9iamVjdCwgYnV0IGlzIGNhY2hlZCBpbiB0
aGUgYWNjZXNzaWJsZSBvYmplY3QgZm9yIHVzZSB3aGVuIGl0IHdvdWxkIGJlIGhlbHBmdWwgdG8g
CisgICBhY2Nlc3MgdGhlIHdpbmRvdyBoYW5kbGUgaW4gY2FzZXMgd2hlcmUgYW4gZXZlbnQgaXNu
J3QgZmlyZWQgb24gdGhpcyBvYmplY3QuCisKKyAgIEEgdXNlIGNhc2UgaXMgd2hlbiBhIHNjcmVl
biByZWFkZXIgaXMgZ3JhYmJpbmcgYW4gZW50aXJlIHdlYiBwYWdlIG9uIGEgcGFnZSBsb2FkLiAK
KyAgIFdpdGhvdXQgdGhlIGF2YWlsYWJpbGl0eSBvZiB3aW5kb3dIYW5kbGUsIHRoZSBBVCB3b3Vs
ZCBoYXZlIHRvIGdldCB0aGUgd2luZG93IGhhbmRsZQorICAgYnkgdXNpbmcgV2luZG93RnJvbUFj
Y2Vzc2libGVPYmplY3Qgb24gZWFjaCBJQWNjZXNzaWJsZSwgd2hpY2ggaXMgc2xvdyBiZWNhdXNl
IGl0J3MgCisgICBpbXBsZW1lbnRlZCBieSBvbGVhY2MuZGxsIGFzIGEgbG9vcCB3aGljaCBjcmF3
bHMgdXAgdGhlIGFuY2VzdG9yIGNoYWluIGFuZCBsb29rcyBmb3IgCisgICBhIFJPTEVfV0lORE9X
IG9iamVjdCwgbWFwcGluZyB0aGF0IGJhY2sgdG8gYSB3aW5kb3cgaGFuZGxlLgorICAgCisgICBA
cGFyYW0gW291dF0gd2luZG93SGFuZGxlCisgICBAcmV0dmFsIFNfT0sKKyAgKi8KKyAgW3Byb3Bn
ZXRdIEhSRVNVTFQgd2luZG93SGFuZGxlCisgICAgKAorICAgICBbb3V0LCByZXR2YWxdIEhXTkQg
KndpbmRvd0hhbmRsZQorICAgICk7CisgCisgIC8qKiBAYnJpZWYgUmV0dXJucyB0aGUgaW5kZXgg
b2YgdGhpcyBvYmplY3QgaW4gaXRzIHBhcmVudCBvYmplY3QuCisgICBAcGFyYW0gW291dF0gaW5k
ZXhJblBhcmVudAorICAgICAwIGJhc2VkOyAtMSBpbmRpY2F0ZXMgdGhlcmUgaXMgbm8gcGFyZW50
OyB0aGUgdXBwZXIgYm91bmQgaXMgdGhlIHZhbHVlIAorICAgICByZXR1cm5lZCBieSB0aGUgcGFy
ZW50J3MgSUFjY2Vzc2libGU6OmdldF9hY2NDaGlsZENvdW50LgorICAgQHJldHZhbCBTX09LCisg
ICBAcmV0dmFsIFNfRkFMU0UgaWYgbm8gcGFyZW50LCBbb3V0XSB2YWx1ZSBpcyAtMQorICAqLwor
ICBbcHJvcGdldF0gSFJFU1VMVCBpbmRleEluUGFyZW50CisgICAgKAorICAgICBbb3V0LCByZXR2
YWxdIGxvbmcgKmluZGV4SW5QYXJlbnQKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJucyB0
aGUgSUEyTG9jYWxlIG9mIHRoZSBhY2Nlc3NpYmxlIG9iamVjdC4gCisgICBAcGFyYW0gW291dF0g
bG9jYWxlCisgICBAcmV0dmFsIFNfT0sKKyAgKi8KKyAgW3Byb3BnZXRdIEhSRVNVTFQgbG9jYWxl
CisgICAgKAorICAgICBbb3V0LCByZXR2YWxdIElBMkxvY2FsZSAqbG9jYWxlCisgICAgKTsKKwor
ICAvKiogQGJyaWVmIFJldHVybnMgdGhlIGF0dHJpYnV0ZXMgc3BlY2lmaWMgdG8gdGhpcyBvYmpl
Y3QsIHN1Y2ggYXMgYSBjZWxsJ3MgZm9ybXVsYS4KKyAgIEBwYXJhbSBbb3V0XSBhdHRyaWJ1dGVz
CisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxTRSByZXR1cm5lZCBpZiB0aGVyZSBp
cyBub3RoaW5nIHRvIHJldHVybiwgW291dF0gdmFsdWUgaXMgTlVMTAorICAqLworICBbcHJvcGdl
dF0gSFJFU1VMVCBhdHRyaWJ1dGVzCisgICAgKAorICAgICBbb3V0LCByZXR2YWxdIEJTVFIgKmF0
dHJpYnV0ZXMKKyAgICApOworCit9CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZTJfMi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlMl8yLmlkbAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNz
aWJsZTJfMi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMjMgQEAKKy8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCisgKgorICogIEZpbGUgTmFtZSAoQWNjZXNzaWJsZTJfMi5pZGwpCisgKiAKKyAqICBJ
QWNjZXNzaWJsZTIgSURMIFNwZWNpZmljYXRpb24gCisgKiAKKyAqICBDb3B5cmlnaHQgKGMpIDIw
MDcsIDIwMTMgTGludXggRm91bmRhdGlvbiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENv
cnBvcmF0aW9uIAorICogIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBTdW4gTWljcm9zeXN0ZW1z
LCBJbmMuIAorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIAorICogICAKKyAqICAgCisgKiAgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0IAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyAKKyAqICBhcmUgbWV0OiAKKyAqICAgCisgKiAgIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0IAorICogICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuIAorICogICAKKyAqICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgCisgKiAgICAg
IGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyAK
KyAqICAgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqCisgKiAgIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgdGhlIExpbnV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBp
dHMgCisgKiAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgCisgKiAgICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiAKKyAqICAgICAgcGVybWlzc2lvbi4gCisgKiAgIAorICog
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAK
KyAqICBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCAKKyAqICBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiAKKyAqICBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSAKKyAqICBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqICBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIAorICogIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyAKKyAq
ICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSAKKyAqICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gCisgKiAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIAorICogIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIAorICogIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogICAKKyAqICBUaGlzIEJTRCBMaWNl
bnNlIGNvbmZvcm1zIHRvIHRoZSBPcGVuIFNvdXJjZSBJbml0aWF0aXZlICJTaW1wbGlmaWVkIAor
ICogIEJTRCBMaWNlbnNlIiBhcyBwdWJsaXNoZWQgYXQ6IAorICogIGh0dHA6Ly93d3cub3BlbnNv
dXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwIAorICogICAKKyAqICBJQWNjZXNzaWJs
ZTIgaXMgYSB0cmFkZW1hcmsgb2YgdGhlIExpbnV4IEZvdW5kYXRpb24uIFRoZSBJQWNjZXNzaWJs
ZTIgCisgKiAgbWFyayBtYXkgYmUgdXNlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIExpbnV4IEZv
dW5kYXRpb24gVHJhZGVtYXJrIAorICogIFBvbGljeSB0byBpbmRpY2F0ZSBjb21wbGlhbmNlIHdp
dGggdGhlIElBY2Nlc3NpYmxlMiBzcGVjaWZpY2F0aW9uLiAKKyAqIAorICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8gCisKK2ltcG9ydCAib2JqaWRsLmlkbCI7CitpbXBvcnQgIm9haWRsLmlkbCI7CitpbXBvcnQg
Im9sZWFjYy5pZGwiOworaW1wb3J0ICJBY2Nlc3NpYmxlMi5pZGwiOworCisvKiogQGJyaWVmIFRo
aXMgaW50ZXJmYWNlIGV4cG9zZXMgdGhlIHByaW1hcnkgc2V0IG9mIGluZm9ybWF0aW9uIGFib3V0
IGFuCisgSUFjY2Vzc2libGUyIGVuYWJsZWQgYWNjZXNzaWJsZSBvYmplY3QuCisKKyBUaGlzIGlu
dGVyZmFjZSBtdXN0IGFsd2F5cyBiZSBwcm92aWRlZCBmb3Igb2JqZWN0cyB0aGF0IHN1cHBvcnQg
c29tZQorIHBvcnRpb24gb2YgdGhlIGNvbGxlY3Rpb24gb2YgdGhlICVJQWNjZXNzaWJsZTIgaW50
ZXJmYWNlcy4KKworIFBsZWFzZSByZWZlciB0byBAcmVmIF9jaGFuZ2luZ0ludGVyZmFjZXMgIkNo
YW5naW5nIGJldHdlZW4gQWNjZXNzaWJsZSBJbnRlcmZhY2VzIgorIGZvciBzcGVjaWFsIGNvbnNp
ZGVyYXRpb25zIHJlbGF0ZWQgdG8gdXNlIG9mIHRoZSBNU0FBIElBY2Nlc3NpYmxlIGludGVyZmFj
ZSBhbmQgCisgdGhlIHNldCBvZiAlSUFjY2Vzc2libGUyIGludGVyZmFjZXMuCisgKi8KK1tvYmpl
Y3QsIHV1aWQoNkM5NDMwRTktMjk5RC00RTZGLUJEMDEtQTgyQTFFODhEM0ZGKV0KK2ludGVyZmFj
ZSBJQWNjZXNzaWJsZTJfMiA6IElBY2Nlc3NpYmxlMgoreworICAvKiogQGJyaWVmIFJldHVybnMg
dGhlIGF0dHJpYnV0ZSB2YWx1ZSBvZiBhIHNwZWNpZmllZCBhdHRyaWJ1dGUgc3BlY2lmaWMgdG8g
dGhpcyBvYmplY3QuCisgICBAcGFyYW0gW2luXSBuYW1lCisgICBAcGFyYW0gW291dF0gYXR0cmli
dXRlCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxTRSByZXR1cm5lZCBpZiB0aGVy
ZSBpcyBub3RoaW5nIHRvIHJldHVybiwgW291dF0gdmFsdWUgaXMgTlVMTC4KKyAgIEByZXR2YWwg
RV9JTlZBTElEQVJHIGlmIGJhZCBbaW5dIHBhc3NlZC4KKyAgIEBub3RlIFRoZSBvdXRwdXQgdmFs
dWUgaXMgYSBWQVJJQU5ULiAgVHlwaWNhbGx5IGl0IHdpbGwgYmUgYSBWVF9CU1RSLCBidXQgdGhl
cmUKKyAgICAgYXJlIHNvbWUgY2FzZXMgd2hlcmUgaXQgd2lsbCBiZSBhIFZUX0k0IG9yIFZUX0JP
T0wuICBSZWZlciB0byB0aGUgPGEgaHJlZj0KKyAgICAgImh0dHA6Ly93d3cubGludXhmb3VuZGF0
aW9uLm9yZy9jb2xsYWJvcmF0ZS93b3JrZ3JvdXBzL2FjY2Vzc2liaWxpdHkvaWFjY2Vzc2libGUy
L29iamVjdGF0dHJpYnV0ZXNJQWNjZXNzaWJsZTIiPgorICAgICBPYmplY3QgQXR0cmlidXRlcyBz
cGVjaWZpY2F0aW9uPC9hPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgKi8KKyAgW3Byb3BnZXRd
IEhSRVNVTFQgYXR0cmlidXRlCisgICAgKAorICAgICBbaW5dIEJTVFIgbmFtZSwKKyAgICAgW291
dCwgcmV0dmFsXSBWQVJJQU5UICphdHRyaWJ1dGUKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0
dXJucyB0aGUgZGVlcGVzdCBoeXBlcnRleHQgYWNjZXNzaWJsZSBpbiB0aGUgc3VidHJlZSBvZiB0
aGlzIG9iamVjdCwgYW5kIHRoZSBjYXJldCBvZmZzZXQgd2l0aGluIGl0LgorICAgQHBhcmFtIFtv
dXRdIGFjY2Vzc2libGUKKyAgIEBwYXJhbSBbb3V0XSBjYXJldE9mZnNldAorICAgQHJldHZhbCBT
X09LCisgICBAcmV0dmFsIFNfRkFMU0UgcmV0dXJuZWQgaWYgdGhlcmUgaXMgbm8gY2FyZXQgaW4g
YW55IG9mIHRoZSBvYmplY3RzIGluIHRoZSBzdWJ0cmVlLCBbb3V0XSBhY2Nlc3NpYmxlIGlzIE5V
TEwgYW5kIFtvdXRdIGNhcmV0T2Zmc2V0IGlzIC0xLgorICAqLworICBbcHJvcGdldF0gSFJFU1VM
VCBhY2Nlc3NpYmxlV2l0aENhcmV0CisgICAgKAorICAgICBbb3V0XSBJVW5rbm93biAqKmFjY2Vz
c2libGUsCisgICAgIFtvdXQsIHJldHZhbF0gbG9uZyAqY2FyZXRPZmZzZXQKKyAgICApOworCisg
IC8qKiBAYnJpZWYgUmV0dXJucyByZWxhdGlvbiB0YXJnZXRzIGZvciBhIHNwZWNpZmllZCB0YXJn
ZXQgdHlwZS4KKyAgIEBwYXJhbSBbaW5dIHR5cGUKKyAgICBUaGUgcmVxdWVzdGVkIEByZWYgZ3Jw
UmVsYXRpb25zICJyZWxhdGlvbiB0eXBlIi4KKyAgIEBwYXJhbSBbaW5dIG1heFRhcmdldHMKKyAg
ICBUaGUgbnVtYmVyIG9mIHRhcmdldHMgcmVxdWVzdGVkLiAgMCBpbmRpY2F0ZXMgdGhhdCBhbGwg
dGFyZ2V0cyBzaG91bGQgYmUgcmV0dXJuZWQuCisgICBAcGFyYW0gW291dF0gdGFyZ2V0cworICAg
IFRoaXMgYXJyYXkgaXMgYWxsb2NhdGVkIGJ5IHRoZSBzZXJ2ZXIuICBUaGUgY2xpZW50IG11c3Qg
ZnJlZSBpdCB3aXRoIENvVGFza01lbUZyZWUuCisgICBAcGFyYW0gW291dF0gblRhcmdldHMKKyAg
ICBUaGUgbnVtYmVyIG9mIHRhcmdldHMgcmV0dXJuZWQ7IHRoZSBzaXplIG9mIHRoZSByZXR1cm5l
ZCBhcnJheS4KKyAgIEByZXR2YWwgU19PSworICAgQHJldHZhbCBTX0ZBTFNFIGlmIHRoZXJlIGFy
ZSBubyB0YXJnZXRzLCBbb3V0XSB2YWx1ZXMgYXJlIE5VTEwgYW5kIDAgcmVzcGVjdGl2ZWx5Lgor
ICAgQHJldHZhbCBFX0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFzc2VkLgorICAqLworICBbcHJv
cGdldF0gSFJFU1VMVCByZWxhdGlvblRhcmdldHNPZlR5cGUKKyAgICAoCisgICAgIFtpbl0gQlNU
UiB0eXBlLAorICAgICBbaW5dIGxvbmcgbWF4VGFyZ2V0cywKKyAgICAgW291dCwgc2l6ZV9pcygs
Km5UYXJnZXRzKV0gSVVua25vd24gKioqdGFyZ2V0cywKKyAgICAgW291dCwgcmV0dmFsXSBsb25n
ICpuVGFyZ2V0cworICAgICk7CisKK30KKwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJm
YWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlQXBwbGljYXRpb24uaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZUFwcGxp
Y2F0aW9uLmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMv
QWNjZXNzaWJsZTIvQWNjZXNzaWJsZUFwcGxpY2F0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDEyMSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgRmlsZSBOYW1lIChBY2Nl
c3NpYmxlQXBwbGljYXRpb24uaWRsKQorICogCisgKiAgSUFjY2Vzc2libGUyIElETCBTcGVjaWZp
Y2F0aW9uIAorICogCisgKiAgQ29weXJpZ2h0IChjKSAyMDA3LCAyMDEwIExpbnV4IEZvdW5kYXRp
b24gCisgKiAgQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvbiAKKyAqICBDb3B5cmln
aHQgKGMpIDIwMDAsIDIwMDYgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiAKKyAqICBBbGwgcmlnaHRz
IHJlc2VydmVkLiAKKyAqICAgCisgKiAgIAorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCAKKyAqICBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
CisgKiAgYXJlIG1ldDogCisgKiAgIAorICogICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCAKKyAqICAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAq
ICAgCisgKiAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgCisgKiAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIAorICogICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgCisgKiAgICAgIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4gCisgKgorICogICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBM
aW51eCBGb3VuZGF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzIAorICogICAgICBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIAorICogICAgICBk
ZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
CisgKiAgICAgIHBlcm1pc3Npb24uIAorICogICAKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCisgKiAgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgCisgKiAgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgCisgKiAgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisg
KiAgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1Ig
CisgKiAgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCAKKyAqICBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgCisgKiAgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgCisgKiAgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIAorICogIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiAKKyAq
ICBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCAKKyAqICBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqICAgCisgKiAgVGhpcyBCU0QgTGljZW5zZSBjb25mb3JtcyB0byB0aGUgT3Bl
biBTb3VyY2UgSW5pdGlhdGl2ZSAiU2ltcGxpZmllZCAKKyAqICBCU0QgTGljZW5zZSIgYXMgcHVi
bGlzaGVkIGF0OiAKKyAqICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1s
aWNlbnNlLnBocCAKKyAqICAgCisgKiAgSUFjY2Vzc2libGUyIGlzIGEgdHJhZGVtYXJrIG9mIHRo
ZSBMaW51eCBGb3VuZGF0aW9uLiBUaGUgSUFjY2Vzc2libGUyIAorICogIG1hcmsgbWF5IGJlIHVz
ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBMaW51eCBGb3VuZGF0aW9uIFRyYWRlbWFyayAKKyAq
ICBQb2xpY3kgdG8gaW5kaWNhdGUgY29tcGxpYW5jZSB3aXRoIHRoZSBJQWNjZXNzaWJsZTIgc3Bl
Y2lmaWNhdGlvbi4gCisgKiAKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovIAorCisKK2ltcG9ydCAib2JqaWRs
LmlkbCI7CitpbXBvcnQgIm9haWRsLmlkbCI7CitpbXBvcnQgIm9sZWFjYy5pZGwiOworCisvKiog
QGJyaWVmIFRoaXMgaW50ZXJmYWNlIGdpdmVzIGFjY2VzcyB0byB0aGUgYXBwbGljYXRpb24ncyBu
YW1lIGFuZCB2ZXJzaW9uIGluZm9ybWF0aW9uLgorICAgICAgICAKKyBUaGlzIGludGVyZmFjZSBw
cm92aWRlcyB0aGUgQVQgd2l0aCB0aGUgaW5mb3JtYXRpb24gaXQgbmVlZHMgdG8gZGlmZmVyZW50
aWF0ZSAKKyB0aGlzIGFwcGxpY2F0aW9uIGZyb20gb3RoZXIgYXBwbGljYXRpb25zLCBmcm9tIG90
aGVyIHZlcnNpb25zIG9mIHRoaXMgCisgYXBwbGljYXRpb24sIG9yIGZyb20gb3RoZXIgdmVyc2lv
bnMgb2YgdGhpcyBhcHBsaWNhdGlvbiBydW5uaW5nIG9uIGRpZmZlcmVudCAKKyB2ZXJzaW9ucyBv
ZiBhbiBhY2Nlc3NpYmlsaXR5IGJyaWRnZSBvciBhY2Nlc3NpYmlsaXR5IHRvb2xraXQuCisKKyBT
ZXJ2ZXJzIGltcGxlbWVudGluZyBJQWNjZXNzaWJsZTIgc2hvdWxkIHByb3ZpZGUgYWNjZXNzIHRv
IHRoZSAlSUFjY2Vzc2libGVBcHBsaWNhdGlvbiAKKyBpbnRlcmZhY2UgdmlhIFF1ZXJ5U2Vydmlj
ZSBmcm9tIGFueSBvYmplY3Qgc28gdGhhdCBBVHMgY2FuIGVhc2lseSBkZXRlcm1pbmUgc3BlY2lm
aWMgCisgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFwcGxpY2F0aW9uIHN1Y2ggYXMgaXRzIG5hbWUg
b3IgdmVyc2lvbi4KKyovCitbb2JqZWN0LCB1dWlkKEQ0OURFRDgzLTVCMjUtNDNGNC05Qjk1LTkz
QjQ0NTk1OTc5RSldCitpbnRlcmZhY2UgSUFjY2Vzc2libGVBcHBsaWNhdGlvbiA6IElVbmtub3du
Cit7CisgIAorICAvKiogQGJyaWVmIFJldHVybnMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuCisgICBA
cGFyYW0gW291dF0gbmFtZQorICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFsIFNfRkFMU0UgaWYg
dGhlcmUgaXMgbm90aGluZyB0byByZXR1cm4sIFtvdXRdIHZhbHVlIGlzIE5VTEwKKyAgKi8KKyAg
W3Byb3BnZXRdIEhSRVNVTFQgYXBwTmFtZQorICAgICgKKyAgICAgW291dCwgcmV0dmFsXSBCU1RS
ICpuYW1lCisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMgdGhlIGFwcGxpY2F0aW9uIHZl
cnNpb24uCisgICBAcGFyYW0gW291dF0gdmVyc2lvbgorICAgIFRoZSB2ZXJzaW9uIHN0cmluZyBt
dXN0IG5vdCBjb250YWluIGxldmVscyB3aGVuIGl0IGlzIGtub3cgYmVmb3JlaGFuZCB0aGF0Cisg
ICAgdGhpcyBpbmZvcm1hdGlvbiB3aWxsIG5ldmVyIHJlcXVpcmUgYSBjaGFuZ2UgaW4gYSBjbGll
bnQncyBiZWhhdmlvci4KKyAgICBGb3IgZXhhbXBsZSwgdXNlICIzLjYuMCIgcmF0aGVyIHRoYW4g
IjMuNi4wLnYyMDEwMDUxMzE1MDAiLgorICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFsIFNfRkFM
U0UgaWYgdGhlcmUgaXMgbm90aGluZyB0byByZXR1cm4sIFtvdXRdIHZhbHVlIGlzIE5VTEwKKyAg
Ki8KKyAgW3Byb3BnZXRdIEhSRVNVTFQgYXBwVmVyc2lvbgorICAgICgKKyAgICAgW291dCwgcmV0
dmFsXSBCU1RSICp2ZXJzaW9uCisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMgdGhlIHRv
b2xraXQvYnJpZGdlIG5hbWUuCisgICBAcGFyYW0gW291dF0gbmFtZQorICAgQHJldHZhbCBTX09L
CisgICBAcmV0dmFsIFNfRkFMU0UgaWYgdGhlcmUgaXMgbm90aGluZyB0byByZXR1cm4sIFtvdXRd
IHZhbHVlIGlzIE5VTEwKKyAgKi8KKyAgW3Byb3BnZXRdIEhSRVNVTFQgdG9vbGtpdE5hbWUKKyAg
ICAoCisgICAgIFtvdXQsIHJldHZhbF0gQlNUUiAqbmFtZQorICAgICk7CisKKyAgLyoqIEBicmll
ZiBSZXR1cm5zIHRoZSB0b29sa2l0L2JyaWRnZSB2ZXJzaW9uLgorICAgQHBhcmFtIFtvdXRdIHZl
cnNpb24KKyAgICBUaGUgdmVyc2lvbiBzdHJpbmcgbXVzdCBub3QgY29udGFpbiBsZXZlbHMgd2hl
biBpdCBpcyBrbm93IGJlZm9yZWhhbmQgdGhhdAorICAgIHRoaXMgaW5mb3JtYXRpb24gd2lsbCBu
ZXZlciByZXF1aXJlIGEgY2hhbmdlIGluIGEgY2xpZW50J3MgYmVoYXZpb3IuCisgICAgRm9yIGV4
YW1wbGUsIHVzZSAiMy42LjAiIHJhdGhlciB0aGFuICIzLjYuMC52MjAxMDA1MTMxNTAwIi4KKyAg
IEByZXR2YWwgU19PSworICAgQHJldHZhbCBTX0ZBTFNFIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8g
cmV0dXJuLCBbb3V0XSB2YWx1ZSBpcyBOVUxMCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIHRv
b2xraXRWZXJzaW9uCisgICAgKAorICAgICBbb3V0LCByZXR2YWxdIEJTVFIgKnZlcnNpb24KKyAg
ICApOyAgCisKK30KKwpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3Np
YmxlMi9BY2Nlc3NpYmxlUmVsYXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZVJlbGF0aW9uLmlkbAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNz
aWJsZVJlbGF0aW9uLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIyNyBAQAorLyoqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKKyAqCisgKiAgRmlsZSBOYW1lIChBY2Nlc3NpYmxlUmVsYXRpb24uaWRsKQor
ICogCisgKiAgSUFjY2Vzc2libGUyIElETCBTcGVjaWZpY2F0aW9uIAorICogCisgKiAgQ29weXJp
Z2h0IChjKSAyMDA3LCAyMDEzIExpbnV4IEZvdW5kYXRpb24gCisgKiAgQ29weXJpZ2h0IChjKSAy
MDA2IElCTSBDb3Jwb3JhdGlvbiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgU3VuIE1p
Y3Jvc3lzdGVtcywgSW5jLiAKKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiAKKyAqICAgCisgKiAg
IAorICogIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dCAKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgCisgKiAgYXJlIG1ldDogCisgKiAgIAor
ICogICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodCAKKyAqICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgCisgKiAgIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IAorICogICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgCisgKiAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKgor
ICogICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBMaW51eCBGb3VuZGF0aW9uIG5vciB0aGUg
bmFtZXMgb2YgaXRzIAorICogICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIAorICogICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gCisgKiAgICAgIHBlcm1pc3Npb24uIAor
ICogICAKKyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgCisgKiAgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgCisgKiAgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgCisgKiAgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgKiAgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiAgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIAorICogIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCAKKyAq
ICBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgCisgKiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgCisgKiAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIAorICogIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiAKKyAqICBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCAKKyAqICBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqICAgCisgKiAgVGhp
cyBCU0QgTGljZW5zZSBjb25mb3JtcyB0byB0aGUgT3BlbiBTb3VyY2UgSW5pdGlhdGl2ZSAiU2lt
cGxpZmllZCAKKyAqICBCU0QgTGljZW5zZSIgYXMgcHVibGlzaGVkIGF0OiAKKyAqICBodHRwOi8v
d3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocCAKKyAqICAgCisgKiAg
SUFjY2Vzc2libGUyIGlzIGEgdHJhZGVtYXJrIG9mIHRoZSBMaW51eCBGb3VuZGF0aW9uLiBUaGUg
SUFjY2Vzc2libGUyIAorICogIG1hcmsgbWF5IGJlIHVzZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRo
ZSBMaW51eCBGb3VuZGF0aW9uIFRyYWRlbWFyayAKKyAqICBQb2xpY3kgdG8gaW5kaWNhdGUgY29t
cGxpYW5jZSB3aXRoIHRoZSBJQWNjZXNzaWJsZTIgc3BlY2lmaWNhdGlvbi4gCisgKiAKKyAqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovIAorCitpbXBvcnQgIm9iamlkbC5pZGwiOworaW1wb3J0ICJvYWlkbC5pZGwi
OworaW1wb3J0ICJvbGVhY2MuaWRsIjsKKworLyoqIEBkZWZncm91cCBncnBSZWxhdGlvbnMgUmVs
YXRpb25zIAorICBVc2UgdGhlIGZvbGxvd2luZyBjb25zdGFudHMgdG8gY29tcGFyZSBhZ2FpbnN0
IHRoZSBCU1RScyByZXR1cm5lZCBieSAKKyAgSUFjY2Vzc2libGVSZWxhdGlvbjo6cmVsYXRpb25U
eXBlLgorKi8gCisvLy9AeworCisvKiogVGhlIHRhcmdldCBvYmplY3QgaXMgdGhlIGNvbnRhaW5p
bmcgYXBwbGljYXRpb24gb2JqZWN0LiAqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxBVElP
Tl9DT05UQUlOSU5HX0FQUExJQ0FUSU9OID0gTCJjb250YWluaW5nQXBwbGljYXRpb24iOworCisv
KiogVGhlIHRhcmdldCBvYmplY3QgaXMgdGhlIGNvbnRhaW5pbmcgZG9jdW1lbnQgb2JqZWN0LiBU
aGUgdGFyZ2V0IG9iamVjdCBpbXBsZW1lbnRzCisgdGhlIElBY2Nlc3NpYmxlRG9jdW1lbnQgaW50
ZXJmYWNlLgorKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fQ09OVEFJTklOR19E
T0NVTUVOVCA9IEwiY29udGFpbmluZ0RvY3VtZW50IjsKKworLyoqIFRoZSB0YXJnZXQgb2JqZWN0
IGlzIHRoZSBjb250YWluaW5nIHRhYiBwYW5lIG9iamVjdC4gKi8KK2NvbnN0IFdDSEFSICpjb25z
dCBJQTJfUkVMQVRJT05fQ09OVEFJTklOR19UQUJfUEFORSA9IEwiY29udGFpbmluZ1RhYlBhbmUi
OworCisvKiogVGhlIHRhcmdldCBvYmplY3QgaXMgdGhlIGNvbnRhaW5pbmcgd2luZG93IG9iamVj
dC4gKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fQ09OVEFJTklOR19XSU5ET1cg
PSBMImNvbnRhaW5pbmdXaW5kb3ciOworCisvKiogU29tZSBhdHRyaWJ1dGUgb2YgdGhpcyBvYmpl
Y3QgaXMgYWZmZWN0ZWQgYnkgYSB0YXJnZXQgb2JqZWN0LiAqLworY29uc3QgV0NIQVIgKmNvbnN0
IElBMl9SRUxBVElPTl9DT05UUk9MTEVEX0JZID0gTCJjb250cm9sbGVkQnkiOworCisvKiogVGhp
cyBvYmplY3QgaXMgaW50ZXJhY3RpdmUgYW5kIGNvbnRyb2xzIHNvbWUgYXR0cmlidXRlIG9mIGEg
dGFyZ2V0IG9iamVjdC4gKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fQ09OVFJP
TExFUl9GT1IgPSBMImNvbnRyb2xsZXJGb3IiOworCisvKiogVGhpcyBvYmplY3QgaXMgZGVzY3Jp
YmVkIGJ5IHRoZSB0YXJnZXQgb2JqZWN0LiAqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxB
VElPTl9ERVNDUklCRURfQlkgPSBMImRlc2NyaWJlZEJ5IjsKKworLyoqIFRoaXMgb2JqZWN0IGlz
IGRlc2NyaWJlcyB0aGUgdGFyZ2V0IG9iamVjdC4gKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJf
UkVMQVRJT05fREVTQ1JJUFRJT05fRk9SID0gTCJkZXNjcmlwdGlvbkZvciI7CisKKy8qKiBUaGlz
IG9iamVjdCBpcyBlbWJlZGRlZCBieSBhIHRhcmdldCBvYmplY3QuICovCitjb25zdCBXQ0hBUiAq
Y29uc3QgSUEyX1JFTEFUSU9OX0VNQkVEREVEX0JZID0gTCJlbWJlZGRlZEJ5IjsKKworLyoqIFRo
aXMgb2JqZWN0IGVtYmVkcyBhIHRhcmdldCBvYmplY3QuIFRoaXMgcmVsYXRpb24gY2FuIGJlIHVz
ZWQgb24gdGhlCisgT0JKSURfQ0xJRU5UIGFjY2Vzc2libGUgZm9yIGEgdG9wIGxldmVsIHdpbmRv
dyB0byBzaG93IHdoZXJlIHRoZSBjb250ZW50IAorIGFyZWFzIGFyZS4KKyovCitjb25zdCBXQ0hB
UiAqY29uc3QgSUEyX1JFTEFUSU9OX0VNQkVEUyA9IEwiZW1iZWRzIjsKKworLyoqIENvbnRlbnQg
Zmxvd3MgdG8gdGhpcyBvYmplY3QgZnJvbSBhIHRhcmdldCBvYmplY3QuIAorIFRoaXMgcmVsYXRp
b24gYW5kIElBMl9SRUxBVElPTl9GTE9XU19UTyBhcmUgdXNlZnVsIHRvIHRpZSB0ZXh0IGFuZCBu
b24tdGV4dAorIG9iamVjdHMgdG9nZXRoZXIgaW4gb3JkZXIgdG8gYWxsb3cgYXNzaXN0aXZlIHRl
Y2hub2xvZ3kgdG8gZm9sbG93IHRoZQorIGludGVuZGVkIHJlYWRpbmcgb3JkZXIuCisqLworY29u
c3QgV0NIQVIgKmNvbnN0IElBMl9SRUxBVElPTl9GTE9XU19GUk9NID0gTCJmbG93c0Zyb20iOwor
CisvKiogQ29udGVudCBmbG93cyBmcm9tIHRoaXMgb2JqZWN0IHRvIGEgdGFyZ2V0IG9iamVjdC4g
Ki8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fRkxPV1NfVE8gPSBMImZsb3dzVG8i
OworCisvKiogVGhpcyBvYmplY3QgaXMgbGFiZWwgZm9yIGEgdGFyZ2V0IG9iamVjdC4gKi8KK2Nv
bnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fTEFCRUxfRk9SID0gTCJsYWJlbEZvciI7CisK
Ky8qKiBUaGlzIG9iamVjdCBpcyBsYWJlbGxlZCBieSBhIHRhcmdldCBvYmplY3QuIE5vdGUgdGhh
dCB0aGUgZG91YmxlIEwgc3BlbGxpbmcKKyB3aGljaCBmb2xsb3dzIGlzIHByZWZlcnJlZC4gIFBs
ZWFzZSB1c2UgaXQgaW5zdGVhZC4gIFRoaXMgc2luZ2xlIEwgdmVyc2lvbiBtYXkKKyBiZSByZW1v
dmVkIGluIGEgbGF0ZXIgdmVyc2lvbi4KKyovCitjb25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFU
SU9OX0xBQkVMRURfQlkgPSBMImxhYmVsbGVkQnkiOworCisvKiogVGhpcyBvYmplY3QgaXMgbGFi
ZWxsZWQgYnkgYSB0YXJnZXQgb2JqZWN0LiAqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxB
VElPTl9MQUJFTExFRF9CWSA9IEwibGFiZWxsZWRCeSI7CisKKy8qKiBUaGlzIG9iamVjdCBpcyBh
IG1lbWJlciBvZiBhIGdyb3VwIG9mIG9uZSBvciBtb3JlIG9iamVjdHMuIFdoZW4gCisgdGhlcmUg
aXMgbW9yZSB0aGFuIG9uZSBvYmplY3QgaW4gdGhlIGdyb3VwIGVhY2ggbWVtYmVyIG1heSBoYXZl
IG9uZSBhbmQgdGhlIAorIHNhbWUgdGFyZ2V0LCBlLmcuIGEgZ3JvdXBpbmcgb2JqZWN0LiAgSXQg
aXMgYWxzbyBwb3NzaWJsZSB0aGF0IGVhY2ggbWVtYmVyIGhhcyAKKyBtdWx0aXBsZSBhZGRpdGlv
bmFsIHRhcmdldHMsIGUuZy4gb25lIGZvciBldmVyeSBvdGhlciBtZW1iZXIgaW4gdGhlIGdyb3Vw
LgorKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fTUVNQkVSX09GID0gTCJtZW1i
ZXJPZiI7CisKKy8qKiBUaGUgdGFyZ2V0IG9iamVjdCBpcyB0aGUgbmV4dCBvYmplY3QgaW4gdGhl
IHRhYiBvcmRlci4gKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fTkVYVF9UQUJC
QUJMRSA9IEwibmV4dFRhYmJhYmxlIjsKKworLyoqIFRoaXMgb2JqZWN0IGlzIGEgbG9naWNhbCBj
aGlsZCBvZiBhIHRhcmdldCBvYmplY3QuICBUaGlzIHJlbGF0aW9uIGlzIHRoZSByZWNpcHJvY2Fs
Cisgb2YgdGhlIElBMl9SRUxBVElPTl9OT0RFX1BBUkVOVF9PRiByZWxhdGlvbi4gSW4gc29tZSBj
YXNlcyBhbiBhcHBsaWNhdGlvbidzIGFjY2Vzc2libGUKKyB0cmVlIGlzIHN1Y2ggdGhhdCBvYmpl
Y3RzIGNhbiBiZSBpbiBhIGxvZ2ljYWwgcGFyZW50LWNoaWxkIHJlbGF0aW9uc2hpcCB3aGljaCBp
cworIGRpZmZlcmVudCBmcm9tIHRoZSBoaWVyYXJjaHkgb2YgdGhlIGFjY2Vzc2libGUgdHJlZS4g
Ki8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fTk9ERV9DSElMRF9PRiA9IEwibm9k
ZUNoaWxkT2YiOworCisvKiogVGhpcyBvYmplY3QgaXMgYSBsb2dpY2FsIHBhcmVudCBvZiBhIHRh
cmdldCBvYmplY3QuIFRoaXMgcmVsYXRpb24gaXMgdGhlIHJlY2lwcm9jYWwKKyBvZiB0aGUgSUEy
X1JFTEFUSU9OX05PREVfQ0hJTERfT0YgcmVsYXRpb24uIEluIHNvbWUgY2FzZXMgYW4gYXBwbGlj
YXRpb24ncyBhY2Nlc3NpYmxlCisgdHJlZSBpcyBzdWNoIHRoYXQgb2JqZWN0cyBjYW4gYmUgaW4g
YSBsb2dpY2FsIHBhcmVudC1jaGlsZCByZWxhdGlvbnNoaXAgd2hpY2ggaXMKKyBkaWZmZXJlbnQg
ZnJvbSB0aGUgaGllcmFyY2h5IG9mIHRoZSBhY2Nlc3NpYmxlIHRyZWUuICovCitjb25zdCBXQ0hB
UiAqY29uc3QgSUEyX1JFTEFUSU9OX05PREVfUEFSRU5UX09GID0gTCJub2RlUGFyZW50T2YiOwor
CisvKiogVGhpcyBvYmplY3QgaXMgYSBwYXJlbnQgd2luZG93IG9mIHRoZSB0YXJnZXQgb2JqZWN0
LiAqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxBVElPTl9QQVJFTlRfV0lORE9XX09GID0g
TCJwYXJlbnRXaW5kb3dPZiI7CisKKy8qKiBUaGlzIG9iamVjdCBpcyBhIHRyYW5zaWVudCBjb21w
b25lbnQgcmVsYXRlZCB0byB0aGUgdGFyZ2V0IG9iamVjdC4gCisgV2hlbiB0aGlzIG9iamVjdCBp
cyBhY3RpdmF0ZWQgdGhlIHRhcmdldCBvYmplY3QgZG9lc24ndCBsb3NlIGZvY3VzLgorKi8KK2Nv
bnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fUE9QVVBfRk9SID0gTCJwb3B1cEZvciI7CisK
Ky8qKiBUaGUgdGFyZ2V0IG9iamVjdCBpcyB0aGUgcHJldmlvdXMgb2JqZWN0IGluIHRoZSB0YWIg
b3JkZXIuICovCitjb25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX1BSRVZJT1VTX1RBQkJB
QkxFID0gTCJwcmV2aW91c1RhYmJhYmxlIjsKKworLyoqIFRoaXMgb2JqZWN0IGlzIGEgc3ViIHdp
bmRvdyBvZiBhIHRhcmdldCBvYmplY3QuICovCitjb25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFU
SU9OX1NVQldJTkRPV19PRiA9IEwic3Vid2luZG93T2YiOworCisvLy9AfQorCisvKiogVGhpcyBp
bnRlcmZhY2UgZ2l2ZXMgYWNjZXNzIHRvIGFuIG9iamVjdCdzIHNldCBvZiByZWxhdGlvbnMuCisq
LworW29iamVjdCwgdXVpZCg3Q0RGODZFRS1DM0RBLTQ5NmEtQkRBNC0yODFCMzM2RTFGREMpXQor
aW50ZXJmYWNlIElBY2Nlc3NpYmxlUmVsYXRpb24gOiBJVW5rbm93bgoreworICAvKiogQGJyaWVm
IFJldHVybnMgdGhlIHR5cGUgb2YgdGhlIHJlbGF0aW9uLgorICAgQHBhcmFtIFtvdXRdIHJlbGF0
aW9uVHlwZQorICAgIFRoZSBzdHJpbmdzIHJldHVybmVkIGFyZSBkZWZpbmVkIEByZWYgZ3JwUmVs
YXRpb25zICJpbiB0aGlzIHNlY3Rpb24gb2YgdGhlIGRvY3VtZW50YXRpb24iLgorICAgQHJldHZh
bCBTX09LCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIHJlbGF0aW9uVHlwZQorICAgICgKKyAg
ICAgW291dCwgcmV0dmFsXSBCU1RSICpyZWxhdGlvblR5cGUKKyAgICApOworCisgIC8qKiBAYnJp
ZWYgUmV0dXJucyBhIGxvY2FsaXplZCB2ZXJzaW9uIG9mIHRoZSByZWxhdGlvbiB0eXBlLgorICAg
QHBhcmFtIFtvdXRdIGxvY2FsaXplZFJlbGF0aW9uVHlwZQorICAgQHJldHZhbCBTX09LCisgICov
CisgIFtwcm9wZ2V0XSBIUkVTVUxUIGxvY2FsaXplZFJlbGF0aW9uVHlwZQorICAgICgKKyAgICAg
W291dCwgcmV0dmFsXSBCU1RSICpsb2NhbGl6ZWRSZWxhdGlvblR5cGUKKyAgICApOworCisgIC8q
KiBAYnJpZWYgUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRhcmdldHMgZm9yIHRoaXMgcmVsYXRpb24u
CisgICBAcGFyYW0gW291dF0gblRhcmdldHMKKyAgIEByZXR2YWwgU19PSworICAqLworICBbcHJv
cGdldF0gSFJFU1VMVCBuVGFyZ2V0cworICAgICgKKyAgICAgW291dCwgcmV0dmFsXSBsb25nICpu
VGFyZ2V0cworICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIG9uZSBhY2Nlc3NpYmxlIHJl
bGF0aW9uIHRhcmdldC4KKyAgIEBwYXJhbSBbaW5dIHRhcmdldEluZGV4CisgICAgMCBiYXNlZCBp
bmRleAorICAgQHBhcmFtIFtvdXRdIHRhcmdldAorICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFs
IEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQKKyAgIEBub3RlIFVzZSBRdWVyeUludGVy
ZmFjZSB0byBnZXQgSUFjY2Vzc2libGUyLgorICAqLworICBbcHJvcGdldF0gSFJFU1VMVCB0YXJn
ZXQKKyAgICAoCisgICAgIFtpbl0gbG9uZyB0YXJnZXRJbmRleCwKKyAgICAgW291dCwgcmV0dmFs
XSBJVW5rbm93biAqKnRhcmdldCAKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJucyBtdWx0
aXBsZSBhY2Nlc3NpYmxlIHJlbGF0aW9uIHRhcmdldHMKKyAgIEBwYXJhbSBbaW5dIG1heFRhcmdl
dHMKKyAgICBtYXhpbXVtIHNpemUgb2YgdGhlIGFycmF5IGFsbG9jYXRlZCBieSB0aGUgY2xpZW50
CisgICBAcGFyYW0gW291dF0gdGFyZ2V0cworICAgIFRoZSBhcnJheSBvZiB0YXJnZXQgb2JqZWN0
cy4gIE5vdGUgdGhhdCB0aGlzIGFycmF5IGlzIHRvIGJlIGFsbG9jYXRlZCBieSB0aGUKKyAgICBj
bGllbnQgYW5kIGZyZWVkIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4gIFJlZmVyIHRvIEByZWYgX2Fy
cmF5Q29uc2lkZXJhdGlvbiAKKyAgICAiU3BlY2lhbCBDb25zaWRlcmF0aW9uIHdoZW4gdXNpbmcg
QXJyYXlzIiBmb3IgbW9yZSBkZXRhaWxzLiAgWW91IHdpbGwgbmVlZCB0byB1c2UgCisgICAgUXVl
cnlJbnRlcmZhY2Ugb24gdGhlIElVbmtub3duIHRvIGdldCB0aGUgSUFjY2Vzc2libGUyLgorICAg
QHBhcmFtIFtvdXRdIG5UYXJnZXRzCisgICAgYWN0dWFsIG51bWJlciBvZiB0YXJnZXRzIGluIHRo
ZSByZXR1cm5lZCBhcnJheSAobm90IG1vcmUgdGhhbiBtYXhUYXJnZXRzKQorICAgQHJldHZhbCBT
X09LCisgICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQsIGUuZy4gYSBu
ZWdhdGl2ZSB2YWx1ZQorICAqLworICBbcHJvcGdldF0gSFJFU1VMVCB0YXJnZXRzCisgICAgKAor
ICAgICBbaW5dIGxvbmcgbWF4VGFyZ2V0cywgCisgICAgIFtvdXQsIHNpemVfaXMobWF4VGFyZ2V0
cyksIGxlbmd0aF9pcygqblRhcmdldHMpXQorICAgICAgIElVbmtub3duICoqdGFyZ2V0cywgCisg
ICAgIFtvdXQsIHJldHZhbF0gbG9uZyAqblRhcmdldHMgCisgICAgKTsKKworfQpJbmRleDogU291
cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlU3RhdGVzLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUy
L0FjY2Vzc2libGVTdGF0ZXMuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC93aW4v
SW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlU3RhdGVzLmlkbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDIwOSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgRmlsZSBOYW1l
IChBY2Nlc3NpYmxlU3RhdGVzLmlkbCkKKyAqIAorICogIElBY2Nlc3NpYmxlMiBJREwgU3BlY2lm
aWNhdGlvbiAKKyAqIAorICogIENvcHlyaWdodCAoYykgMjAwNywgMjAxMCBMaW51eCBGb3VuZGF0
aW9uIAorICogIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gCisgKiAgQ29weXJp
Z2h0IChjKSAyMDAwLCAyMDA2IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gCisgKiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4gCisgKiAgIAorICogICAKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCisgKiAgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IAorICogIGFyZSBtZXQ6IAorICogICAKKyAqICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgCisgKiAgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisg
KiAgIAorICogICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIAorICogICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyAKKyAqICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIAorICogICAgICBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAorICoKKyAqICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUg
TGludXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyAKKyAqICAgICAgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyAKKyAqICAgICAg
ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IAorICogICAgICBwZXJtaXNzaW9uLiAKKyAqICAgCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIAorICogIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAorICogIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAorICogIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAor
ICogIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
IAorICogIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCAKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgCisgKiAgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IAorICogIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIAorICogIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiAKKyAqICBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgCisg
KiAgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgCisgKiAgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKiAgIAorICogIFRoaXMgQlNEIExpY2Vuc2UgY29uZm9ybXMgdG8gdGhlIE9w
ZW4gU291cmNlIEluaXRpYXRpdmUgIlNpbXBsaWZpZWQgCisgKiAgQlNEIExpY2Vuc2UiIGFzIHB1
Ymxpc2hlZCBhdDogCisgKiAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2Qt
bGljZW5zZS5waHAgCisgKiAgIAorICogIElBY2Nlc3NpYmxlMiBpcyBhIHRyYWRlbWFyayBvZiB0
aGUgTGludXggRm91bmRhdGlvbi4gVGhlIElBY2Nlc3NpYmxlMiAKKyAqICBtYXJrIG1heSBiZSB1
c2VkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgTGludXggRm91bmRhdGlvbiBUcmFkZW1hcmsgCisg
KiAgUG9saWN5IHRvIGluZGljYXRlIGNvbXBsaWFuY2Ugd2l0aCB0aGUgSUFjY2Vzc2libGUyIHNw
ZWNpZmljYXRpb24uIAorICogCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAKKworaW1wb3J0ICJvYmppZGwu
aWRsIjsKKwordHlwZWRlZiBsb25nIEFjY2Vzc2libGVTdGF0ZXM7CisKKy8qKiAlSUFjY2Vzc2li
bGUyIHNwZWNpZmljIHN0YXRlIGJpdCBjb25zdGFudHMKKworICBUaGlzIGVudW0gZGVmaW5lcyB0
aGUgc3RhdGUgYml0cyByZXR1cm5lZCBieSBJQWNjZXNzaWJsZTI6OnN0YXRlcy4gIFRoZSAKKyAg
JUlBY2Nlc3NpYmxlMiBzdGF0ZSBiaXRzIGFyZSBpbiBhZGRpdGlvbiB0byB0aG9zZSByZXR1cm5l
ZCBieSBNU0FBLgorKi8KK2VudW0gSUEyU3RhdGVzIHsKKworLyoqIEluZGljYXRlcyBhIHdpbmRv
dyBpcyBjdXJyZW50bHkgdGhlIGFjdGl2ZSB3aW5kb3csIG9yIGlzIGFuIGFjdGl2ZSBzdWJlbGVt
ZW50IAorICB3aXRoaW4gYSBjb250YWluZXIgb3IgdGFibGUuCisKKyBUaGlzIHN0YXRlIGNhbiBi
ZSB1c2VkIHRvIGluZGljYXRlIHRoZSBjdXJyZW50IGFjdGl2ZSBpdGVtIGluIGEgY29udGFpbmVy
LCBldmVuIAorICBpZiB0aGUgY29udGFpbmVyIGl0c2VsZiBpcyBub3QgY3VycmVudGx5IGFjdGl2
ZS4gSW4gb3RoZXIgd29yZHMgdGhpcyB3b3VsZCBpbmRpY2F0ZQorICB0aGUgaXRlbSB0aGF0IHdp
bGwgZ2V0IGZvY3VzIGlmIHlvdSB0YWIgdG8gdGhlIGNvbnRhaW5lci4KKworIFRoaXMgaW5mb3Jt
YXRpb24gaXMgaW1wb3J0YW50IGZvciBrbm93aW5nIHdoYXQgdG8gcmVwb3J0IGZvciB0cmVlcyBh
bmQgcG90ZW50aWFsbHkgCisgIG90aGVyIGNvbnRhaW5lcnMgaW4gYSB2aXJ0dWFsIGJ1ZmZlci4K
KworIEFsc28sIHNlZSA6OklBMl9TVEFURV9NQU5BR0VTX0RFU0NFTkRBTlRTIGZvciBtb3JlIGlu
Zm9ybWF0aW9uLgorKi8KK0lBMl9TVEFURV9BQ1RJVkUgPSAweDEsCisKKy8qKiBJbmRpY2F0ZXMg
dGhhdCB0aGUgb2JqZWN0IGlzIGFybWVkLgorCisgVXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBj
b250cm9sIGlzICJwcmVzc2VkIiBhbmQgd2lsbCBiZSBpbnZva2VkIHdoZW4gdGhlIAorICBhY3R1
YXRvciwgZS5nLiBhIG1vdXNlIGJ1dHRvbiwgaXMgInJlbGVhc2VkIi4gIEFuIEFUIHdoaWNoIGVp
dGhlciBtb25pdG9ycyB0aGUgCisgIG1vdXNlIG9yIHN5bnRoZXNpemVzIG1vdXNlIGV2ZW50cyBt
aWdodCBuZWVkIHRvIGtub3cgdGhhdCwgYW5kIHBvc3NpYmx5IGEgdGFsa2luZworICBpbnRlcmZh
Y2Ugd291bGQgZXZlbiBsZXQgdGhlIHVzZXIga25vdyBhYm91dCBpdC4gIEl0IGNvdWxkIGFsc28g
cG90ZW50aWFsbHkgYmUKKyAgdXNlZnVsIHRvIG9uIHNjcmVlbiBrZXlib2FyZHMgb3IgdGVzdCB0
b29scyBzaW5jZSB0aGUgaW5mb3JtYXRpb24gZG9lcyBpbmRpY2F0ZQorICBzb21ldGhpbmcgYWJv
dXQgdGhlIHN0YXRlIG9mIHRoZSBpbnRlcmZhY2UsIGZvciBleGFtcGxlLCBjb2RlIG9wZXJhdGlu
ZyBhc3luY2hyb25vdXNseQorICBtaWdodCBuZWVkIHRvIHdhaXQgZm9yIHRoZSBhcm1lZCBzdGF0
ZSB0byBjaGFuZ2UgYmVmb3JlIGRvaW5nIHNvbWV0aGluZyBlbHNlLgorCisqLworSUEyX1NUQVRF
X0FSTUVEID0gMHgyLAorCisvKiogSW5kaWNhdGVzIHRoZSB1c2VyIGludGVyZmFjZSBvYmplY3Qg
Y29ycmVzcG9uZGluZyB0byB0aGlzIG9iamVjdCBubyBsb25nZXIgZXhpc3RzLiAqLworSUEyX1NU
QVRFX0RFRlVOQ1QgPSAweDQsCisKKy8qKiBBbiBvYmplY3Qgd2l0aCB0aGlzIHN0YXRlIGhhcyBh
IGNhcmV0IGFuZCBpbXBsZW1lbnRzIHRoZSBJQWNjZXNzaWJsZVRleHQgaW50ZXJmYWNlLgorICAK
KyBTdWNoIGZpZWxkcyBtYXkgYmUgcmVhZC1vbmx5LCBzbyBTVEFURV9TWVNURU1fUkVBRE9OTFkg
aXMgdmFsaWQgaW4gY29tYmluYXRpb24KKyAgd2l0aCBJQTJfU1RBVEVfRURJVEFCTEUuCisKKyov
CitJQTJfU1RBVEVfRURJVEFCTEUgPSAweDgsCisKKy8qKiBJbmRpY2F0ZXMgdGhlIG9yaWVudGF0
aW9uIG9mIHRoaXMgb2JqZWN0IGlzIGhvcml6b250YWwuICovCitJQTJfU1RBVEVfSE9SSVpPTlRB
TCA9IDB4MTAsCisKKy8qKiBJbmRpY2F0ZXMgdGhpcyBvYmplY3QgaXMgbWluaW1pemVkIGFuZCBp
cyByZXByZXNlbnRlZCBvbmx5IGJ5IGFuIGljb24uICovCitJQTJfU1RBVEVfSUNPTklGSUVEID0g
MHgyMCwKKworLyoqIEluZGljYXRlcyBhbiBpbnB1dCB2YWxpZGF0aW9uIGZhaWx1cmUuICovCitJ
QTJfU1RBVEVfSU5WQUxJRF9FTlRSWSA9IDB4NDAsCisKKy8qKiBJbmRpY2F0ZXMgdGhhdCB0aGlz
IG9iamVjdCBtYW5hZ2VzIGl0cyBjaGlsZHJlbi4KKworIE5vdGU6IER1ZSB0byB0aGUgZmFjdCB0
aGF0IE1TQUEncyBXaW5FdmVudHMgZG9uJ3QgYWxsb3cgdGhlIGFjdGl2ZSBjaGlsZCBpbmRleAor
ICB0byBiZSBwYXNzZWQgb24gdGhlIElBMl9FVkVOVF9BQ1RJVkVfREVTQ0VOREFOVF9DSEFOR0VE
IGV2ZW50LCB0aGUgbWFuYWdlcworICBkZXNjZW5kYW50cyBzY2hlbWUgY2FuJ3QgYmUgdXNlZC4g
IEluc3RlYWQgdGhlIGFjdGl2ZSBjaGlsZCBvYmplY3QgaGFzIHRvIGZpcmUKKyAgTVNBQSdzIEVW
RU5UX09CSkVDVF9GT0NVUy4gIEluIGEgZnV0dXJlIHJlbGVhc2UgYSBuZXcgZXZlbnQgbWVjaGFu
aXNtIG1heSBiZQorICBhZGRlZCB0byBwcm92aWRlIGZvciBldmVudCBzcGVjaWZpYyBkYXRhIHRv
IGJlIHBhc3NlZCB3aXRoIHRoZSBldmVudC4gIEF0IHRoYXQKKyAgdGltZSB0aGUgSUEyX0VWRU5U
X0FDVElWRV9ERUNFTkRFTlRfQ0hBTkdFRCBldmVudCBhbmQKKyAgSUEyX1NUQVRFX01BTkFHRVNf
REVTQ0VOREFOVFMgc3RhdGUgd291bGQgYmUgdXNlZnVsLgorKi8KK0lBMl9TVEFURV9NQU5BR0VT
X0RFU0NFTkRBTlRTID0gMHg4MCwKKworLyoqIEluZGljYXRlcyB0aGF0IGFuIG9iamVjdCBpcyBt
b2RhbC4KKworIE1vZGFsIG9iamVjdHMgaGF2ZSB0aGUgYmVoYXZpb3IgdGhhdCBzb21ldGhpbmcg
bXVzdCBiZSBkb25lIHdpdGggdGhlIG9iamVjdCAKKyAgYmVmb3JlIHRoZSB1c2VyIGNhbiBpbnRl
cmFjdCB3aXRoIGFuIG9iamVjdCBpbiBhIGRpZmZlcmVudCB3aW5kb3cuCisqLworSUEyX1NUQVRF
X01PREFMID0gMHgxMDAsCisKKy8qKiBJbmRpY2F0ZXMgdGhpcyB0ZXh0IG9iamVjdCBjYW4gY29u
dGFpbiBtdWx0aXBsZSBsaW5lcyBvZiB0ZXh0LiAqLworSUEyX1NUQVRFX01VTFRJX0xJTkUgPSAw
eDIwMCwKKworLyoqIEluZGljYXRlcyB0aGlzIG9iamVjdCBwYWludHMgZXZlcnkgcGl4ZWwgd2l0
aGluIGl0cyByZWN0YW5ndWxhciByZWdpb24uICovCitJQTJfU1RBVEVfT1BBUVVFID0gMHg0MDAs
CisKKy8qKiBJbmRpY2F0ZXMgdGhhdCB1c2VyIGludGVyYWN0aW9uIGlzIHJlcXVpcmVkLgorCisg
QW4gZXhhbXBsZSBvZiB3aGVuIHRoaXMgc3RhdGUgaXMgdXNlZCBpcyB3aGVuIGEgZmllbGQgaW4g
YSBmb3JtIG11c3QgYmUgZmlsbGVkIAorICBiZWZvcmUgYSBmb3JtIGNhbiBiZSBwcm9jZXNzZWQu
CisqLworSUEyX1NUQVRFX1JFUVVJUkVEID0gMHg4MDAsCisKKy8qKiBJbmRpY2F0ZXMgYW4gb2Jq
ZWN0IHdoaWNoIHN1cHBvcnRzIHRleHQgc2VsZWN0aW9uLgorCisgTm90ZTogVGhpcyBpcyBkaWZm
ZXJlbnQgdGhhbiBNU0FBIFNUQVRFX1NZU1RFTV9TRUxFQ1RBQkxFLgorKi8KK0lBMl9TVEFURV9T
RUxFQ1RBQkxFX1RFWFQgPSAweDEwMDAsCisKKy8qKiBJbmRpY2F0ZXMgdGhhdCB0aGlzIHRleHQg
b2JqZWN0IGNhbiBjb250YWluIG9ubHkgYSBzaW5nbGUgbGluZSBvZiB0ZXh0LiAqLworSUEyX1NU
QVRFX1NJTkdMRV9MSU5FID0gMHgyMDAwLAorCisvKiogSW5kaWNhdGVzIHRoYXQgdGhlIGFjY2Vz
c2libGUgb2JqZWN0IGlzIHN0YWxlLgorCisgVGhpcyBzdGF0ZSBpcyB1c2VkIHdoZW4gdGhlIGFj
Y2Vzc2libGUgb2JqZWN0IG5vIGxvbmdlciBhY2N1cmF0ZWx5IAorICByZXByZXNlbnRzIHRoZSBz
dGF0ZSBvZiB0aGUgb2JqZWN0IHdoaWNoIGl0IGlzIHJlcHJlc2VudGluZyBzdWNoIGFzIHdoZW4g
YW4KKyAgb2JqZWN0IGlzIHRyYW5zaWVudCBvciB3aGVuIGFuIG9iamVjdCBoYXMgYmVlbiBvciBp
cyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZworICBkZXN0cm95ZWQgb3Igd2hlbiB0aGUgb2JqZWN0
J3MgaW5kZXggaW4gaXRzIHBhcmVudCBoYXMgY2hhbmdlZC4KKyovCitJQTJfU1RBVEVfU1RBTEUg
PSAweDQwMDAsCisKKy8qKiBJbmRpY2F0ZXMgdGhhdCB0aGUgb2JqZWN0IGltcGxlbWVudHMgYXV0
b2NvbXBsZXRpb24uCisKKyBUaGlzIHN0YXRlIGluZGljYXRlcyB0aGF0IGEgdGV4dCBjb250cm9s
IHdpbGwgcmVzcG9uZCB0byB0aGUgaW5wdXQgb2YgCisgb25lIG9yZSBtb3JlIGNoYXJhY3RlcnMg
YW5kIGNhdXNlIGEgc3ViLWl0ZW0gdG8gYmVjb21lIHNlbGVjdGVkLiAgVGhlIAorIHNlbGVjdGlv
biBtYXkgYWxzbyByZXN1bHQgaW4gZXZlbnRzIGZpcmVkIG9uIHRoZSBwYXJlbnQgb2JqZWN0Lgor
Ki8KK0lBMl9TVEFURV9TVVBQT1JUU19BVVRPQ09NUExFVElPTiA9IDB4ODAwMCwKKworLyoqIElu
ZGljYXRlcyB0aGlzIG9iamVjdCBpcyB0cmFuc2llbnQuCisKKyBBbiBvYmplY3QgaGFzIHRoaXMg
c3RhdGUgd2hlbiBpdHMgcGFyZW50IG9iamVjdCBoYXMgdGhlIHN0YXRlIDo6SUEyX1NUQVRFX01B
TkFHRVNfREVTQ0VOREFOVFMuCisgRm9yIGV4YW1wbGUsIGEgbGlzdCBpdGVtIG9iamVjdCBtYXkg
YmUgbWFuYWdlZCBieSBpdHMgcGFyZW50IGxpc3Qgb2JqZWN0IGFuZCBtYXkgb25seSAKKyBleGlz
dCBhcyBsb25nIGFzIHRoZSBvYmplY3QgaXMgYWN0dWFsbHkgcmVuZGVyZWQuICBTaW1pbGFybHkg
YSB0YWJsZSBjZWxsJ3MgYWNjZXNzaWJsZSAKKyBvYmplY3QgbWF5IGV4aXN0IG9ubHkgd2hpbGUg
dGhlIGNlbGwgaGFzIGZvY3VzLiAgSG93ZXZlciwgZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgYW4g
CisgYXNzaXN0aXZlIHRlY2hub2xvZ3kgYSB0cmFuc2llbnQgb2JqZWN0IGJlaGF2ZXMgbGlrZSBh
IG5vbi10cmFuc2llbnQgb2JqZWN0LiAgQXMgYSAKKyByZXN1bHQgaXQgaXMgbGlrZWx5IHRoYXQg
dGhpcyBzdGF0ZSBpcyBub3Qgb2YgdXNlIHRvIGFuIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LCBidXQg
aXQgCisgaXMgcHJvdmlkZWQgaW4gY2FzZSBhbiBhc3Npc3RpdmUgdGVjaG5vbG9neSBkZXRlcm1p
bmVzIHRoYXQga25vd2xlZGdlIG9mIHRoZSB0cmFuc2llbnQgCisgbmF0dXJlIG9mIHRoZSBvYmpl
Y3QgaXMgdXNlZnVsIGFuZCBhbHNvIGZvciBoYXJtb255IHdpdGggdGhlIExpbnV4IGFjY2Vzc2li
aWxpdHkgQVBJLgorCisgQWxzbywgc2VlIDo6SUEyX1NUQVRFX01BTkFHRVNfREVTQ0VOREFOVFMg
Zm9yIG1vcmUgaW5mb3JtYXRpb24uCisgKi8KK0lBMl9TVEFURV9UUkFOU0lFTlQgPSAweDEwMDAw
LAorCisvKiogSW5kaWNhdGVzIHRoZSBvcmllbnRhdGlvbiBvZiB0aGlzIG9iamVjdCBpcyB2ZXJ0
aWNhbC4gKi8KK0lBMl9TVEFURV9WRVJUSUNBTCA9IDB4MjAwMDAsCisKKy8qKiBJbmRpY2F0ZXMg
dGhpcyBvYmplY3QgaXMgY2hlY2thYmxlLgorCisgVGhlIHN0YW5kYXJkIGNoZWNrYWJsZSBvYmpl
Y3RzIGFyZSBjaGVjayBib3hlcywgcmFkaW8gYnV0dG9ucywgY2hlY2sgYm94IG1lbnUKKyBpdGVt
cywgcmFkaW8gbWVudSBpdGVtcywgYW5kIHRvZ2dsZSBidXR0b25zLiAgU2luY2UgYXNzaXN0aXZl
IHRlY2hub2xvZ3kgd2lsbAorIGRldGVybWluZSB0aGF0IHRoZXNlIG9iamVjdHMgYXJlIGNoZWNr
YWJsZSB2aWEgdGhlIG9iamVjdCdzIHJvbGUgdGhlIGNoZWNrYWJsZQorIHN0YXRlIGlzIG5vdCBy
ZXF1aXJlZC4gIEhvd2V2ZXIsIHRoaXMgc3RhdGUgaXMgbmVjZXNzYXJ5IGluIHRob3NlIGNhc2Vz
IHdoZXJlCisgYW4gb2JqZWN0IGhhcyBhIHJvbGUgd2hpY2ggaXMgbm90IG9uZSBvZiB0aGUgcHJl
dmlvdXNseSBtZW50aW9uZWQgcm9sZXMuICBBbgorIGV4YW1wbGUgaXMgYSB0YWJsZSBjZWxsIHdo
aWNoIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhbiBlbWFpbCBoYXMgYW4gYXR0YWNobWVudCwK
KyB3aGV0aGVyIG9yIG5vdCBhbiBtYWlsIGlzIGNvbnNpZGVyZWQgc3BhbSwgYW5kIHdoZXRoZXIg
b3Igbm90IGFuIGVtYWlsIGhhcyBiZWVuIHJlYWQuCisgKi8KK0lBMl9TVEFURV9DSEVDS0FCTEUg
PSAweDQwMDAwLAorCisvKiogSW5kaWNhdGVzIHRoaXMgb2JqZWN0IGlzIHBpbm5lZC4KKworIFRo
aXMgc3RhdGUgaW5kaWNhdGVzIHRoYXQgYW4gb2JqZWN0IGlzIGZpeGVkIGF0IGEgY2VydGFpbiBs
b2NhdGlvbi4gIE9uZSBleGFtcGxlCisgaXMgYSBicm93c2VyIHRhYiB0aGF0IHdoZW4gcGlubmVk
IGNhbm5vdCBiZSBtb3ZlZCB1bnRpbCB1bnBpbm5lZC4gIEFub3RoZXIgZXhhbXBsZQorIGlzIGEg
bW92YWJsZSBvciBmbG9hdGluZyBvYmplY3QgdGhhdCB3aGVuIHBpbm5lZCByZW1haW5zIGluIGl0
cyBwaW5uZWQgbG9jYXRpb24KKyB1bnRpbCBiZWluZyB1bnBpbm5lZC4KKyAqLworSUEyX1NUQVRF
X1BJTk5FRCA9IDB4ODAwMDAKKworfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvQWNjZXNzaWJsZTIvSUEyQ29tbW9uVHlwZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvSUEyQ29tbW9uVHlwZXMuaWRsCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9JQTJD
b21tb25UeXBlcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTEgQEAKKy8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCisgKgorICogIEZpbGUgTmFtZSAoSUEyQ29tbW9uVHlwZXMuaWRsKQorICogCisg
KiAgSUFjY2Vzc2libGUyIElETCBTcGVjaWZpY2F0aW9uIAorICogCisgKiAgQ29weXJpZ2h0IChj
KSAyMDA3LCAyMDEwIExpbnV4IEZvdW5kYXRpb24gCisgKiAgQ29weXJpZ2h0IChjKSAyMDA2IElC
TSBDb3Jwb3JhdGlvbiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgU3VuIE1pY3Jvc3lz
dGVtcywgSW5jLiAKKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiAKKyAqICAgCisgKiAgIAorICog
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dCAKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgCisgKiAgYXJlIG1ldDogCisgKiAgIAorICogICAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodCAKKyAqICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgCisgKiAgIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIAorICog
ICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgCisgKiAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKgorICogICAz
LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBMaW51eCBGb3VuZGF0aW9uIG5vciB0aGUgbmFtZXMg
b2YgaXRzIAorICogICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIAorICogICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gCisgKiAgICAgIHBlcm1pc3Npb24uIAorICogICAK
KyAqICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgCisgKiAgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgCisgKiAgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgCisgKiAgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgKiAgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiAgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIAorICogIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCAKKyAqICBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
CisgKiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgCisgKiAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIAorICogIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiAKKyAqICBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCAKKyAqICBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqICAgCisgKiAgVGhpcyBCU0Qg
TGljZW5zZSBjb25mb3JtcyB0byB0aGUgT3BlbiBTb3VyY2UgSW5pdGlhdGl2ZSAiU2ltcGxpZmll
ZCAKKyAqICBCU0QgTGljZW5zZSIgYXMgcHVibGlzaGVkIGF0OiAKKyAqICBodHRwOi8vd3d3Lm9w
ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocCAKKyAqICAgCisgKiAgSUFjY2Vz
c2libGUyIGlzIGEgdHJhZGVtYXJrIG9mIHRoZSBMaW51eCBGb3VuZGF0aW9uLiBUaGUgSUFjY2Vz
c2libGUyIAorICogIG1hcmsgbWF5IGJlIHVzZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBMaW51
eCBGb3VuZGF0aW9uIFRyYWRlbWFyayAKKyAqICBQb2xpY3kgdG8gaW5kaWNhdGUgY29tcGxpYW5j
ZSB3aXRoIHRoZSBJQWNjZXNzaWJsZTIgc3BlY2lmaWNhdGlvbi4gCisgKiAKKyAqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiovIAorCisgLyoqIFRoZXNlIGNvbnN0YW50cyBjb250cm9sIHRoZSBzY3JvbGxpbmcgb2Yg
YW4gb2JqZWN0IG9yIHN1YnN0cmluZyBpbnRvIGEgd2luZG93LgorCisgVGhpcyBlbnVtIGlzIHVz
ZWQgaW4gSUFjY2Vzc2libGUyOjpzY3JvbGxUbyBhbmQgSUFjY2Vzc2libGVUZXh0OjpzY3JvbGxT
dWJzdHJpbmdUby4KKyovCitlbnVtIElBMlNjcm9sbFR5cGUgeworCisgIC8qKiBTY3JvbGwgdGhl
IHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZyBzdWNoIHRoYXQgdGhl
IHRvcCBsZWZ0CisgICBjb3JuZXIgKGFuZCBhcyBtdWNoIGFzIHBvc3NpYmxlIG9mIHRoZSByZXN0
IG9mIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nKSBpcyB3aXRoaW4KKyAgIHRoZSB0b3AgbGV2ZWwg
d2luZG93LiAgSW4gY2FzZXMgd2hlcmUgdGhlIGVudGlyZSBvYmplY3Qgb3Igc3Vic3RyaW5nIGZp
dHMgd2l0aGluIAorICAgdGhlIHRvcCBsZXZlbCB3aW5kb3csIHRoZSBwbGFjZW1lbnQgb2YgdGhl
IG9iamVjdCBvciBzdWJzdHJpbmcgaXMgZGVwZW5kZW50IG9uIAorICAgdGhlIGFwcGxpY2F0aW9u
LiAgRm9yIGV4YW1wbGUsIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nIG1heSBiZSBzY3JvbGxlZCB0
byB0aGUgCisgICBjbG9zZXN0IGVkZ2UsIHRoZSBmdXJ0aGVzdCBlZGdlLCBvciBtaWR3YXkgYmV0
d2VlbiB0aG9zZSB0d28gZWRnZXMuICBJbiBjYXNlcworICAgd2hlcmUgdGhlcmUgaXMgYSBoaWVy
YXJjaHkgb2YgbmVzdGVkIHNjcm9sbGFibGUgY29udHJvbHMsIG1vcmUgdGhhbiBvbmUgY29udHJv
bAorICAgbWF5IGhhdmUgdG8gYmUgc2Nyb2xsZWQuCisgICovCisgIElBMl9TQ1JPTExfVFlQRV9U
T1BfTEVGVCwgCisKKyAgLyoqIFNjcm9sbCB0aGUgYm90dG9tIHJpZ2h0IGNvcm5lciBvZiB0aGUg
b2JqZWN0IG9yIHN1YnN0cmluZyBzdWNoIHRoYXQgdGhlIGJvdHRvbSByaWdodAorICAgY29ybmVy
IChhbmQgYXMgbXVjaCBhcyBwb3NzaWJsZSBvZiB0aGUgcmVzdCBvZiB0aGUgb2JqZWN0IG9yIHN1
YnN0cmluZykgaXMgd2l0aGluCisgICB0aGUgdG9wIGxldmVsIHdpbmRvdy4gIEluIGNhc2VzIHdo
ZXJlIHRoZSBlbnRpcmUgb2JqZWN0IG9yIHN1YnN0cmluZyBmaXRzIHdpdGhpbiAKKyAgIHRoZSB0
b3AgbGV2ZWwgd2luZG93LCB0aGUgcGxhY2VtZW50IG9mIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5n
IGlzIGRlcGVuZGVudCBvbiAKKyAgIHRoZSBhcHBsaWNhdGlvbi4gIEZvciBleGFtcGxlLCB0aGUg
b2JqZWN0IG9yIHN1YnN0cmluZyBtYXkgYmUgc2Nyb2xsZWQgdG8gdGhlIAorICAgY2xvc2VzdCBl
ZGdlLCB0aGUgZnVydGhlc3QgZWRnZSwgb3IgbWlkd2F5IGJldHdlZW4gdGhvc2UgdHdvIGVkZ2Vz
LiAgSW4gY2FzZXMKKyAgIHdoZXJlIHRoZXJlIGlzIGEgaGllcmFyY2h5IG9mIG5lc3RlZCBzY3Jv
bGxhYmxlIGNvbnRyb2xzLCBtb3JlIHRoYW4gb25lIGNvbnRyb2wKKyAgIG1heSBoYXZlIHRvIGJl
IHNjcm9sbGVkLgorICAqLworICBJQTJfU0NST0xMX1RZUEVfQk9UVE9NX1JJR0hULAorCisgIC8q
KiBTY3JvbGwgdGhlIHRvcCBlZGdlIG9mIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nIHN1Y2ggdGhh
dCB0aGUgdG9wIGVkZ2UgCisgICAoYW5kIGFzIG11Y2ggYXMgcG9zc2libGUgb2YgdGhlIHJlc3Qg
b2YgdGhlIG9iamVjdCBvciBzdWJzdHJpbmcpIGlzIHdpdGhpbiB0aGUKKyAgIHRvcCBsZXZlbCB3
aW5kb3cuICBJbiBjYXNlcyB3aGVyZSB0aGUgZW50aXJlIG9iamVjdCBvciBzdWJzdHJpbmcgZml0
cyB3aXRoaW4gCisgICB0aGUgdG9wIGxldmVsIHdpbmRvdywgdGhlIHBsYWNlbWVudCBvZiB0aGUg
b2JqZWN0IG9yIHN1YnN0cmluZyBpcyBkZXBlbmRlbnQgb24gCisgICB0aGUgYXBwbGljYXRpb24u
ICBGb3IgZXhhbXBsZSwgdGhlIG9iamVjdCBvciBzdWJzdHJpbmcgbWF5IGJlIHNjcm9sbGVkIHRv
IHRoZSAKKyAgIGNsb3Nlc3QgZWRnZSwgdGhlIGZ1cnRoZXN0IGVkZ2UsIG9yIG1pZHdheSBiZXR3
ZWVuIHRob3NlIHR3byBlZGdlcy4gIEluIGNhc2VzCisgICB3aGVyZSB0aGVyZSBpcyBhIGhpZXJh
cmNoeSBvZiBuZXN0ZWQgc2Nyb2xsYWJsZSBjb250cm9scywgbW9yZSB0aGFuIG9uZSBjb250cm9s
CisgICBtYXkgaGF2ZSB0byBiZSBzY3JvbGxlZC4KKyAgKi8KKyAgSUEyX1NDUk9MTF9UWVBFX1RP
UF9FREdFLAorCisgIC8qKiBTY3JvbGwgdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBvYmplY3Qgb3Ig
c3Vic3RyaW5nIHN1Y2ggdGhhdCB0aGUgYm90dG9tIGVkZ2UgCisgICAoYW5kIGFzIG11Y2ggYXMg
cG9zc2libGUgb2YgdGhlIHJlc3Qgb2YgdGhlIG9iamVjdCBvciBzdWJzdHJpbmcpIGlzIHdpdGhp
biB0aGUKKyAgIHRvcCBsZXZlbCB3aW5kb3cuICBJbiBjYXNlcyB3aGVyZSB0aGUgZW50aXJlIG9i
amVjdCBvciBzdWJzdHJpbmcgZml0cyB3aXRoaW4gCisgICB0aGUgdG9wIGxldmVsIHdpbmRvdywg
dGhlIHBsYWNlbWVudCBvZiB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZyBpcyBkZXBlbmRlbnQgb24g
CisgICB0aGUgYXBwbGljYXRpb24uICBGb3IgZXhhbXBsZSwgdGhlIG9iamVjdCBvciBzdWJzdHJp
bmcgbWF5IGJlIHNjcm9sbGVkIHRvIHRoZSAKKyAgIGNsb3Nlc3QgZWRnZSwgdGhlIGZ1cnRoZXN0
IGVkZ2UsIG9yIG1pZHdheSBiZXR3ZWVuIHRob3NlIHR3byBlZGdlcy4gIEluIGNhc2VzCisgICB3
aGVyZSB0aGVyZSBpcyBhIGhpZXJhcmNoeSBvZiBuZXN0ZWQgc2Nyb2xsYWJsZSBjb250cm9scywg
bW9yZSB0aGFuIG9uZSBjb250cm9sCisgICBtYXkgaGF2ZSB0byBiZSBzY3JvbGxlZC4KKyAgKi8K
KyAgSUEyX1NDUk9MTF9UWVBFX0JPVFRPTV9FREdFLCAKKworICAvKiogU2Nyb2xsIHRoZSBsZWZ0
IGVkZ2Ugb2YgdGhlIG9iamVjdCBvciBzdWJzdHJpbmcgc3VjaCB0aGF0IHRoZSBsZWZ0IGVkZ2Ug
CisgICAoYW5kIGFzIG11Y2ggYXMgcG9zc2libGUgb2YgdGhlIHJlc3Qgb2YgdGhlIG9iamVjdCBv
ciBzdWJzdHJpbmcpIGlzIHdpdGhpbiB0aGUKKyAgIHRvcCBsZXZlbCB3aW5kb3cuICBJbiBjYXNl
cyB3aGVyZSB0aGUgZW50aXJlIG9iamVjdCBvciBzdWJzdHJpbmcgZml0cyB3aXRoaW4gCisgICB0
aGUgdG9wIGxldmVsIHdpbmRvdywgdGhlIHBsYWNlbWVudCBvZiB0aGUgb2JqZWN0IG9yIHN1YnN0
cmluZyBpcyBkZXBlbmRlbnQgb24gCisgICB0aGUgYXBwbGljYXRpb24uICBGb3IgZXhhbXBsZSwg
dGhlIG9iamVjdCBvciBzdWJzdHJpbmcgbWF5IGJlIHNjcm9sbGVkIHRvIHRoZSAKKyAgIGNsb3Nl
c3QgZWRnZSwgdGhlIGZ1cnRoZXN0IGVkZ2UsIG9yIG1pZHdheSBiZXR3ZWVuIHRob3NlIHR3byBl
ZGdlcy4gIEluIGNhc2VzCisgICB3aGVyZSB0aGVyZSBpcyBhIGhpZXJhcmNoeSBvZiBuZXN0ZWQg
c2Nyb2xsYWJsZSBjb250cm9scywgbW9yZSB0aGFuIG9uZSBjb250cm9sCisgICBtYXkgaGF2ZSB0
byBiZSBzY3JvbGxlZC4KKyAgKi8KKyAgSUEyX1NDUk9MTF9UWVBFX0xFRlRfRURHRSwgCisKKyAg
LyoqIFNjcm9sbCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZyBzdWNo
IHRoYXQgdGhlIHJpZ2h0IGVkZ2UgCisgICAoYW5kIGFzIG11Y2ggYXMgcG9zc2libGUgb2YgdGhl
IHJlc3Qgb2YgdGhlIG9iamVjdCBvciBzdWJzdHJpbmcpIGlzIHdpdGhpbiB0aGUKKyAgIHRvcCBs
ZXZlbCB3aW5kb3cuICBJbiBjYXNlcyB3aGVyZSB0aGUgZW50aXJlIG9iamVjdCBvciBzdWJzdHJp
bmcgZml0cyB3aXRoaW4gCisgICB0aGUgdG9wIGxldmVsIHdpbmRvdywgdGhlIHBsYWNlbWVudCBv
ZiB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZyBpcyBkZXBlbmRlbnQgb24gCisgICB0aGUgYXBwbGlj
YXRpb24uICBGb3IgZXhhbXBsZSwgdGhlIG9iamVjdCBvciBzdWJzdHJpbmcgbWF5IGJlIHNjcm9s
bGVkIHRvIHRoZSAKKyAgIGNsb3Nlc3QgZWRnZSwgdGhlIGZ1cnRoZXN0IGVkZ2UsIG9yIG1pZHdh
eSBiZXR3ZWVuIHRob3NlIHR3byBlZGdlcy4gIEluIGNhc2VzCisgICB3aGVyZSB0aGVyZSBpcyBh
IGhpZXJhcmNoeSBvZiBuZXN0ZWQgc2Nyb2xsYWJsZSBjb250cm9scywgbW9yZSB0aGFuIG9uZSBj
b250cm9sCisgICBtYXkgaGF2ZSB0byBiZSBzY3JvbGxlZC4KKyAgKi8KKyAgSUEyX1NDUk9MTF9U
WVBFX1JJR0hUX0VER0UsCisKKyAgLyoqIFNjcm9sbCB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZyBz
dWNoIHRoYXQgYXMgbXVjaCBhcyBwb3NzaWJsZSBvZiB0aGUgCisgICBvYmplY3Qgb3Igc3Vic3Ry
aW5nIGlzIHdpdGhpbiB0aGUgdG9wIGxldmVsIHdpbmRvdy4gIFRoZSBwbGFjZW1lbnQgb2YgCisg
ICB0aGUgb2JqZWN0IGlzIGRlcGVuZGVudCBvbiB0aGUgYXBwbGljYXRpb24uICBGb3IgZXhhbXBs
ZSwgdGhlIG9iamVjdCBvcgorICAgc3Vic3RyaW5nIG1heSBiZSBzY3JvbGxlZCB0byB0byBjbG9z
ZXN0IGVkZ2UsIHRoZSBmdXJ0aGVzdCBlZGdlLCBvciBtaWR3YXkKKyAgIGJldHdlZW4gdGhvc2Ug
dHdvIGVkZ2VzLgorICAqLworICBJQTJfU0NST0xMX1RZUEVfQU5ZV0hFUkUKK307CisKKy8qKiBU
aGVzZSBjb25zdGFudHMgZGVmaW5lIHdoaWNoIGNvb3JkaW5hdGUgc3lzdGVtIGEgcG9pbnQgaXMg
bG9jYXRlZCBpbi4KKyAKKyBUaGlzIGVudW0gaXMgdXNlZCBpbiBJQWNjZXNzaWJsZTI6OnNjcm9s
bFRvUG9pbnQsIElBY2Nlc3NpYmxlSW1hZ2U6OmltYWdlUG9zaXRpb24sCisgSUFjY2Vzc2libGVU
ZXh0OjpjaGFyYWN0ZXJFeHRlbnRzLCBhbmQgSUFjY2Vzc2libGVUZXh0OjpvZmZzZXRBdFBvaW50
LCBhbmQgCisgSUFjY2Vzc2libGVUZXh0OjpzY3JvbGxTdWJzdHJpbmdUb1BvaW50LgorKi8KK2Vu
dW0gSUEyQ29vcmRpbmF0ZVR5cGUgeworCisgIC8vLyBUaGUgY29vcmRpbmF0ZXMgYXJlIHJlbGF0
aXZlIHRvIHRoZSBzY3JlZW4uCisgIElBMl9DT09SRFRZUEVfU0NSRUVOX1JFTEFUSVZFLCAKKwor
ICAvKiogVGhlIGNvb3JkaW5hdGVzIGFyZSByZWxhdGl2ZSB0byB0aGUgdXBwZXIgbGVmdCBjb3Ju
ZXIgb2YgdGhlIGJvdW5kaW5nIGJveAorICAgb2YgdGhlIGltbWVkaWF0ZSBwYXJlbnQuCisgICov
CisgIElBMl9DT09SRFRZUEVfUEFSRU5UX1JFTEFUSVZFICAKKworfTsKKworLyoqIFNwZWNpYWwg
b2Zmc2V0cyBmb3IgdXNlIGluIElBY2Nlc3NpYmxlVGV4dCBhbmQgSUFjY2Vzc2libGVFZGl0YWJs
ZVRleHQgbWV0aG9kcworICAKKyAgUmVmZXIgdG8gQHJlZiBfc3BlY2lhbE9mZnNldHMgCisgICJT
cGVjaWFsIE9mZnNldHMgZm9yIHVzZSBpbiB0aGUgSUFjY2Vzc2libGVUZXh0IGFuZCBJQWNjZXNz
aWJsZUVkaXRhYmxlVGV4dCBNZXRob2RzIiAKKyAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisqLwor
ZW51bSBJQTJUZXh0U3BlY2lhbE9mZnNldHMgeworICBJQTJfVEVYVF9PRkZTRVRfTEVOR1RIID0g
LTEsICAvKio8IFRoaXMgb2Zmc2V0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGxlbmd0aCBvZiB0aGUg
c3RyaW5nLiAgSXQgZWxpbWluYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRoZSBuZWVkIHRvIGNhbGwgSUFjY2Vzc2libGVUZXh0OjpuQ2hhcmFjdGVycy4gKi8KKyAg
SUEyX1RFWFRfT0ZGU0VUX0NBUkVUID0gLTIgICAgLyoqPCBUaGlzIG9mZnNldCBzaWduaWZpZXMg
dGhhdCB0aGUgdGV4dCByZWxhdGVkIHRvIHRoZSBwaHlzaWNhbCBsb2NhdGlvbgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBjYXJldCBzaG91bGQgYmUgdXNlZC4g
Ki8KK307CisKKy8qKiBUaGVzZSBjb25zdGFudHMgc3BlY2lmeSB0aGUga2luZCBvZiBjaGFuZ2Ug
bWFkZSB0byBhIHRhYmxlLgorCisgICBUaGlzIGVudW0gaXMgdXNlZCBpbiB0aGUgSUEyVGFibGVN
b2RlbENoYW5nZSBzdHJ1Y3Qgd2hpY2ggaW4gdHVybiBpcyB1c2VkIGJ5CisgICBJQWNjZXNzaWJs
ZVRhYmxlOjptb2RlbENoYW5nZSBhbmQgSUFjY2Vzc2libGVUYWJsZTI6Om1vZGVsQ2hhbmdlLgor
Ki8KK2VudW0gSUEyVGFibGVNb2RlbENoYW5nZVR5cGUgeworICBJQTJfVEFCTEVfTU9ERUxfQ0hB
TkdFX0lOU0VSVCwgIC8vID0gMDsKKyAgSUEyX1RBQkxFX01PREVMX0NIQU5HRV9ERUxFVEUsCisg
IElBMl9UQUJMRV9NT0RFTF9DSEFOR0VfVVBEQVRFCit9OworCisvKiogQSBzdHJ1Y3R1cmUgZGVm
aW5pbmcgdGhlIHR5cGUgb2YgYW5kIGV4dGVudHMgb2YgY2hhbmdlcyBtYWRlIHRvIGEgdGFibGUK
KyAKKyBJQWNjZXNzaWJsZVRhYmxlOjptb2RlbENoYW5nZSBhbmQgSUFjY2Vzc2libGVUYWJsZTI6
Om1vZGVsQ2hhbmdlIHJldHVybiB0aGlzIHN0cnVjdC4KKyBJbiB0aGUgY2FzZSBvZiBhbiBpbnNl
cnRpb24gb3IgY2hhbmdlIHRoZSByb3cgYW5kIGNvbHVtbiBvZmZzZXRzIGRlZmluZSB0aGUgYm91
bmRhcmllcworIG9mIHRoZSBpbnNlcnRlZCBvciBjaGFuZ2VkIHN1YnRhYmxlIGFmdGVyIHRoZSBv
cGVyYXRpb24uICBJbiB0aGUgY2FzZSBvZiBhIGRlbGV0aW9uCisgdGhlIHJvdyBhbmQgY29sdW1u
IG9mZnNldHMgZGVmaW5lIHRoZSBib3VuZGFyaWVzIG9mIHRoZSBzdWJ0YWJsZSBiZWluZyByZW1v
dmVkIGJlZm9yZQorIHRoZSByZW1vdmFsLgorKi8KK3R5cGVkZWYgc3RydWN0IElBMlRhYmxlTW9k
ZWxDaGFuZ2UgeworICBlbnVtIElBMlRhYmxlTW9kZWxDaGFuZ2VUeXBlIHR5cGU7ICAvLyBpbnNl
cnQsIGRlbGV0ZSwgdXBkYXRlCisgIGxvbmcgZmlyc3RSb3c7ICAgICAgICAgICAgICAgICAgICAg
IC8vLzwgMCBiYXNlZCwgaW5jbHVzaXZlCisgIGxvbmcgbGFzdFJvdzsgICAgICAgICAgICAgICAg
ICAgICAgIC8vLzwgMCBiYXNlZCwgaW5jbHVzaXZlCisgIGxvbmcgZmlyc3RDb2x1bW47ICAgICAg
ICAgICAgICAgICAgIC8vLzwgMCBiYXNlZCwgaW5jbHVzaXZlCisgIGxvbmcgbGFzdENvbHVtbjsg
ICAgICAgICAgICAgICAgICAgIC8vLzwgMCBiYXNlZCwgaW5jbHVzaXZlCit9IElBMlRhYmxlTW9k
ZWxDaGFuZ2U7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAJKHJldmlzaW9uIDE1MTUyMikKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIENPTVB0cjxJQWNjZXNzaWJsZT4gZmlu
ZEFjY2Vzc2libAogICAgIFZBUklBTlQgdmFsdWU7CiAgICAgOjpWYXJpYW50SW5pdCgmdmFsdWUp
OwogCi0gICAgaWYgKFNVQ0NFRURFRChjb21wYXJhYmxlLT5hdHRyaWJ1dGVWYWx1ZShzX0FYRFJU
RWxlbWVudElkQXR0cmlidXRlLCAmdmFsdWUpKSkgeworICAgIGlmIChTVUNDRUVERUQoY29tcGFy
YWJsZS0+Z2V0X2F0dHJpYnV0ZShzX0FYRFJURWxlbWVudElkQXR0cmlidXRlLCAmdmFsdWUpKSkg
ewogICAgICAgICBBU1NFUlQoVl9WVCgmdmFsdWUpID09IFZUX0JTVFIpOwogICAgICAgICBpZiAo
VkFSQ01QX0VRID09IDo6VmFyQnN0ckNtcCh2YWx1ZS5ic3RyVmFsLCBpZEF0dHJpYnV0ZSwgTE9D
QUxFX1VTRVJfREVGQVVMVCwgMCkpIHsKICAgICAgICAgICAgIDo6VmFyaWFudENsZWFyKCZ2YWx1
ZSk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRXaW4uY3BwCShyZXZpc2lvbiAxNTE1MjIpCisrKyBUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogI2luY2x1ZGUg
IkZyYW1lTG9hZERlbGVnYXRlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdS
ZWYuaD4KKyNpbmNsdWRlIDxjb211dGlsLmg+CiAjaW5jbHVkZSA8dGNoYXIuaD4KICNpbmNsdWRl
IDxzdHJpbmc+CiAKQEAgLTE2Miw2ICsxNjMsOCBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjphdHRyCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgMCk7CiB9CiAKK3N0YXRpYyBjb25zdCBfYnN0cl90IHNfQVhUaXRsZVVJRWxlbWVudEF0dHJp
YnV0ZShMIkFYVGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGUiKTsKKwogQWNjZXNzaWJpbGl0eVVJRWxl
bWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpCiB7CiAgICAgQ09N
UHRyPElBY2Nlc3NpYmxlPiBwbGF0Zm9ybUVsZW1lbnQgPSBwbGF0Zm9ybVVJRWxlbWVudCgpOwpA
QCAtMTcyLDcgKzE3NSw3IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJ
RWwKIAogICAgIFZBUklBTlQgdmFsdWU7CiAgICAgOjpWYXJpYW50SW5pdCgmdmFsdWUpOwotICAg
IGlmIChGQUlMRUQoY29tcGFyYWJsZS0+YXR0cmlidXRlVmFsdWUoTCJBWFRpdGxlVUlFbGVtZW50
QXR0cmlidXRlIiwgJnZhbHVlKSkpIHsKKyAgICBpZiAoRkFJTEVEKGNvbXBhcmFibGUtPmdldF9h
dHRyaWJ1dGUoc19BWFRpdGxlVUlFbGVtZW50QXR0cmlidXRlLCAmdmFsdWUpKSkgewogICAgICAg
ICA6OlZhcmlhbnRDbGVhcigmdmFsdWUpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204535</attachid>
            <date>2013-06-12 14:34:31 -0700</date>
            <delta_ts>2013-06-12 15:41:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117561-20130612143338.patch</filename>
            <type>text/plain</type>
            <size>102026</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTE1MjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA2LTEyICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBJbXBsZW1lbnQg
QWNjZXNzaWJpbGl0eTIgQVBJcyBpbiBXaW5kb3dzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3NTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQudmN4cHJvai9JbnRlcmZhY2VzL0ludGVy
ZmFjZXMudmN4cHJvajogQWRkIG5ldyBJQWNjZXNzaWJsZTIgSURMIGZpbGVzLgorICAgICAgICAq
IFdlYktpdC52Y3hwcm9qL0ludGVyZmFjZXMvSW50ZXJmYWNlcy52Y3hwcm9qLmZpbHRlcnM6IERp
dHRvLgorICAgICAgICAqIFdlYktpdC52Y3hwcm9qL0ludGVyZmFjZXMvSW50ZXJmYWNlc0NvbW1v
bi5wcm9wczogUmVmZXJlbmNlIG5ldyBBY2Nlc3NpYmxlMiBmb2xkZXIuCisgICAgICAgICogV2Vi
S2l0LnZjeHByb2ovV2ViS2l0R1VJRC9XZWJLaXRHVUlELnZjeHByb2o6IEJ1aWxkIElBY2Nlc3Np
YmxlMiBzeW1ib2xzLgorICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEdVSUQvV2ViS2l0
R1VJRC52Y3hwcm9qLmZpbHRlcnM6IERpdHRvLgorCiAyMDEzLTA2LTEwICBCZWFyIFRyYXZpcyAg
PGJldHJhdmlzQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFNoYXBlc11bQ1NTIEV4Y2x1c2lv
bnNdIFNwbGl0IENTUyBFeGNsdXNpb25zIGFuZCBDU1MgU2hhcGVzIGNvZGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovSW50ZXJmYWNlcy9JbnRlcmZhY2VzLnZjeHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9JbnRlcmZhY2VzL0ludGVy
ZmFjZXMudmN4cHJvagkocmV2aXNpb24gMTUxNTIyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQu
dmN4cHJvai9JbnRlcmZhY2VzL0ludGVyZmFjZXMudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTYxLDYgKzE2MSwxMSBAQAogICAgIDwvTGluaz4NCiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4N
CiAgIDxJdGVtR3JvdXA+DQorICAgIDxNaWRsIEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRlcmZhY2Vz
XEFjY2Vzc2libGUyXEFjY2Vzc2libGUyLmlkbCIgLz4NCisgICAgPE1pZGwgSW5jbHVkZT0iLi5c
Li5cd2luXEludGVyZmFjZXNcQWNjZXNzaWJsZTJcQWNjZXNzaWJsZTJfMi5pZGwiIC8+DQorICAg
IDxNaWRsIEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRlcmZhY2VzXEFjY2Vzc2libGUyXEFjY2Vzc2li
bGVBcHBsaWNhdGlvbi5pZGwiIC8+DQorICAgIDxNaWRsIEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRl
cmZhY2VzXEFjY2Vzc2libGUyXEFjY2Vzc2libGVSZWxhdGlvbi5pZGwiIC8+DQorICAgIDxNaWRs
IEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRlcmZhY2VzXEFjY2Vzc2libGUyXEFjY2Vzc2libGVTdGF0
ZXMuaWRsIiAvPg0KICAgICA8TWlkbCBJbmNsdWRlPSIuLlwuLlx3aW5cSW50ZXJmYWNlc1xBY2Nl
c3NpYmxlQ29tcGFyYWJsZS5pZGwiPg0KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+DQogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCkBAIC0yMzMsNiArMjM4LDcgQEAKICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQogICAg
IDwvTWlkbD4NCisgICAgPE1pZGwgSW5jbHVkZT0iLi5cLi5cd2luXEludGVyZmFjZXNcQWNjZXNz
aWJsZTJcSUEyQ29tbW9uVHlwZXMuaWRsIiAvPg0KICAgICA8TWlkbCBJbmNsdWRlPSIuLlwuLlx3
aW5cSW50ZXJmYWNlc1xJR0VOX0RPTU9iamVjdC5pZGwiPg0KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fp
cm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL0ludGVyZmFjZXMvSW50ZXJmYWNlcy52Y3hwcm9qLmZpbHRlcnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9JbnRlcmZhY2VzL0ludGVy
ZmFjZXMudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNTE1MjIpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL0ludGVyZmFjZXMvSW50ZXJmYWNlcy52Y3hwcm9qLmZpbHRlcnMJKHdv
cmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsMjQgQEAKICAgICA8TWlkbCBJbmNsdWRlPSIuLlwu
Llx3aW5cSW50ZXJmYWNlc1xXZWJLaXQuaWRsIj4NCiAgICAgICA8RmlsdGVyPklETDwvRmlsdGVy
Pg0KICAgICA8L01pZGw+DQorICAgIDxNaWRsIEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRlcmZhY2Vz
XEFjY2Vzc2libGUyXElBMkNvbW1vblR5cGVzLmlkbCI+DQorICAgICAgPEZpbHRlcj5JRExcQWNj
ZXNzaWJpbGl0eTI8L0ZpbHRlcj4NCisgICAgPC9NaWRsPg0KKyAgICA8TWlkbCBJbmNsdWRlPSIu
LlwuLlx3aW5cSW50ZXJmYWNlc1xBY2Nlc3NpYmxlMlxBY2Nlc3NpYmxlMi5pZGwiPg0KKyAgICAg
IDxGaWx0ZXI+SURMXEFjY2Vzc2liaWxpdHkyPC9GaWx0ZXI+DQorICAgIDwvTWlkbD4NCisgICAg
PE1pZGwgSW5jbHVkZT0iLi5cLi5cd2luXEludGVyZmFjZXNcQWNjZXNzaWJsZTJcQWNjZXNzaWJs
ZTJfMi5pZGwiPg0KKyAgICAgIDxGaWx0ZXI+SURMXEFjY2Vzc2liaWxpdHkyPC9GaWx0ZXI+DQor
ICAgIDwvTWlkbD4NCisgICAgPE1pZGwgSW5jbHVkZT0iLi5cLi5cd2luXEludGVyZmFjZXNcQWNj
ZXNzaWJsZTJcQWNjZXNzaWJsZVJlbGF0aW9uLmlkbCI+DQorICAgICAgPEZpbHRlcj5JRExcQWNj
ZXNzaWJpbGl0eTI8L0ZpbHRlcj4NCisgICAgPC9NaWRsPg0KKyAgICA8TWlkbCBJbmNsdWRlPSIu
LlwuLlx3aW5cSW50ZXJmYWNlc1xBY2Nlc3NpYmxlMlxBY2Nlc3NpYmxlU3RhdGVzLmlkbCI+DQor
ICAgICAgPEZpbHRlcj5JRExcQWNjZXNzaWJpbGl0eTI8L0ZpbHRlcj4NCisgICAgPC9NaWRsPg0K
KyAgICA8TWlkbCBJbmNsdWRlPSIuLlwuLlx3aW5cSW50ZXJmYWNlc1xBY2Nlc3NpYmxlMlxBY2Nl
c3NpYmxlQXBwbGljYXRpb24uaWRsIj4NCisgICAgICA8RmlsdGVyPklETFxBY2Nlc3NpYmlsaXR5
MjwvRmlsdGVyPg0KKyAgICA8L01pZGw+DQogICA8L0l0ZW1Hcm91cD4NCiAgIDxJdGVtR3JvdXA+
DQogICAgIDxOb25lIEluY2x1ZGU9IkludGVyZmFjZXNQb3N0QnVpbGQuY21kIiAvPg0KQEAgLTI2
Niw1ICsyODQsOCBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iSURMIj4NCiAgICAgICA8VW5pcXVl
SWRlbnRpZmllcj57NTE2NTJjMDEtZTMwMS00YjcyLTlkOTYtNWQ1MDQ5MWQyNThjfTwvVW5pcXVl
SWRlbnRpZmllcj4NCiAgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSURMXEFj
Y2Vzc2liaWxpdHkyIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MmUxNWZjMzgtZGY2Zi00
NzBmLWIyMDEtMjcyZThkMmQ5MWE0fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+
DQogICA8L0l0ZW1Hcm91cD4NCiA8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9JbnRlcmZhY2VzL0ludGVyZmFj
ZXNDb21tb24ucHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJv
ai9JbnRlcmZhY2VzL0ludGVyZmFjZXNDb21tb24ucHJvcHMJKHJldmlzaW9uIDE1MTUyMikKKysr
IFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovSW50ZXJmYWNlcy9JbnRlcmZhY2VzQ29tbW9u
LnByb3BzCSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogICA8L1Byb3BlcnR5R3JvdXA+
DQogICA8SXRlbURlZmluaXRpb25Hcm91cD4NCiAgICAgPE1pZGw+DQotICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iajMyXFdlYktp
dFxEZXJpdmVkU291cmNlczsuLi8uLi93aW4vSW50ZXJmYWNlczskKEludERpcilcaW5jbHVkZTsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmozMlxXZWJLaXRcRGVyaXZlZFNvdXJjZXM7Li4vLi4vd2luL0ludGVyZmFj
ZXM7Li4vLi4vd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTI7JChJbnREaXIpXGluY2x1ZGU7JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4NCiAgICAgPC9NaWRsPg0KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KICAgPEl0ZW1EZWZp
bml0aW9uR3JvdXA+DQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRH
VUlEL1dlYktpdEdVSUQudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktp
dC52Y3hwcm9qL1dlYktpdEdVSUQvV2ViS2l0R1VJRC52Y3hwcm9qCShyZXZpc2lvbiAxNTE1MjIp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEdVSUQvV2ViS2l0R1VJRC52
Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDEwIEBACiAgIDwvSXRlbUdyb3Vw
Pg0KICAgPEl0ZW1Hcm91cD4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqMzJcV2ViS2l0XEludGVyZmFjZXNcV2ViS2l0X2kuYyIgLz4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqMzJcV2ViS2l0
XEludGVyZmFjZXNcQWNjZXNzaWJsZTJfaS5jIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmozMlxXZWJLaXRcSW50ZXJmYWNlc1xBY2Nlc3Np
YmxlMl8yX2kuYyIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqMzJcV2ViS2l0XEludGVyZmFjZXNcQWNjZXNzaWJsZUFwcGxpY2F0aW9uX2ku
YyIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqMzJcV2ViS2l0XEludGVyZmFjZXNcQWNjZXNzaWJsZVJlbGF0aW9uX2kuYyIgLz4NCiAgIDwv
SXRlbUdyb3VwPg0KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29m
dC5DcHAudGFyZ2V0cyIgLz4NCiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0
cyI+DQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRHVUlEL1dlYktp
dEdVSUQudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0
LnZjeHByb2ovV2ViS2l0R1VJRC9XZWJLaXRHVUlELnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24g
MTUxNTIyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRHVUlEL1dlYktp
dEdVSUQudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC02LDUgKzYsOSBAQAogICA8
L0l0ZW1Hcm91cD4NCiAgIDxJdGVtR3JvdXA+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxXZWJLaXRcSW50ZXJmYWNlc1xXZWJLaXRfaS5jIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpc
V2ViS2l0XEludGVyZmFjZXNcQWNjZXNzaWJsZTJfaS5jIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcV2ViS2l0XEludGVyZmFjZXNcQWNj
ZXNzaWJsZTJfMl9pLmMiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9ialxXZWJLaXRcSW50ZXJmYWNlc1xBY2Nlc3NpYmxlQXBwbGljYXRpb25f
aS5jIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmpcV2ViS2l0XEludGVyZmFjZXNcQWNjZXNzaWJsZVJlbGF0aW9uX2kuYyIgLz4NCiAgIDwv
SXRlbUdyb3VwPg0KIDwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTE1MjMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMy0wNi0xMiAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gSW1w
bGVtZW50IEFjY2Vzc2liaWxpdHkyIEFQSXMgaW4gV2luZG93cy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzU2MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQWNjZXNzaWJsZUJhc2UuY3BwOiBBZGQg
c3R1YnMgZm9yIElBY2Nlc3NpYmxlMiBpbnRlcmZhY2UsIHJlcGxhY2UgYXR0cmlidXRlVmFsdWUK
KyAgICAgICAgbWV0aG9kIHdpdGggZ2V0X2F0dHJpYnV0ZSBmcm9tIElBY2Nlc3NpYmxlMiBBUEku
CisgICAgICAgICogQWNjZXNzaWJsZUJhc2UuaDogRGl0dG8uCisgICAgICAgICogQWNjZXNzaWJs
ZURvY3VtZW50LmNwcDogUmV2aXNlIHNpZ25hdHVyZXMgZm9yIElBY2Nlc3NpYmxlMi4KKyAgICAg
ICAgKiBBY2Nlc3NpYmxlRG9jdW1lbnQuaDogRGl0dG8uCisgICAgICAgICogQWNjZXNzaWJsZUlt
YWdlLmNwcDogUmV2aXNlIHNpZ25hdHVyZXMgZm9yIElBY2Nlc3NpYmxlMi4KKyAgICAgICAgKiBB
Y2Nlc3NpYmxlSW1hZ2UuaDogRGl0dG8uCisgICAgICAgICogSW50ZXJmYWNlcy9BY2Nlc3NpYmxl
MjogQWRkZWQuCisgICAgICAgICogSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlMi5p
ZGw6IEFkZGVkLgorICAgICAgICAqIEludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZTJf
Mi5pZGw6IEFkZGVkLgorICAgICAgICAqIEludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJs
ZUFwcGxpY2F0aW9uLmlkbDogQWRkZWQuCisgICAgICAgICogSW50ZXJmYWNlcy9BY2Nlc3NpYmxl
Mi9BY2Nlc3NpYmxlUmVsYXRpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBJbnRlcmZhY2VzL0Fj
Y2Vzc2libGUyL0FjY2Vzc2libGVTdGF0ZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBJbnRlcmZh
Y2VzL0FjY2Vzc2libGUyL0lBMkNvbW1vblR5cGVzLmlkbDogQWRkZWQuCisgICAgICAgICogSW50
ZXJmYWNlcy9BY2Nlc3NpYmxlQ29tcGFyYWJsZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9X
ZWJLaXQuaWRsOiBSZWZlcmVuY2UgSUFjY2Vzc2libGUyIHR5cGVzLgorICAgICAgICAqIFdlYkZy
YW1lLmNwcDogCisgICAgICAgIChXZWJGcmFtZTo6YWNjZXNzaWJsZSk6IFBhc3Mgd2luZG93IGhh
bmRsZSB0byBJQWNjZXNzaWJsZSB0eXBlcy4KKwogMjAxMy0wNi0xMiAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luZG93c10gU3VwcG9ydCBUaXRsZSBV
SSBFbGVtZW50IEFjY2Vzc2liaWxpdHkgQXR0cmlidXRlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9BY2Nlc3NpYmxlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQWNj
ZXNzaWJsZUJhc2UuY3BwCShyZXZpc2lvbiAxNTE1MjIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9B
Y2Nlc3NpYmxlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9I
VE1MSW5wdXRFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1F
dmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlck9iamVjdC5oPgpAQCAtNTMsOCArNTQsOSBAQAogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotQWNjZXNzaWJsZUJhc2U6OkFjY2Vzc2libGVCYXNlKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iaikKK0FjY2Vzc2libGVCYXNlOjpBY2Nlc3NpYmxlQmFzZShBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQogICAgIDogQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIob2JqKQorICAgICwgbV93aW5kb3cod2luZG93KQogICAgICwgbV9yZWZDb3VudCgwKQogewog
ICAgIEFTU0VSVF9BUkcob2JqLCBvYmopOwpAQCAtNjksMTkgKzcxLDIzIEBAIEFjY2Vzc2libGVC
YXNlOjp+QWNjZXNzaWJsZUJhc2UoKQogICAgIGdDbGFzc05hbWVDb3VudC5yZW1vdmUoIkFjY2Vz
c2libGVCYXNlIik7CiB9CiAKLUFjY2Vzc2libGVCYXNlKiBBY2Nlc3NpYmxlQmFzZTo6Y3JlYXRl
SW5zdGFuY2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQorQWNjZXNzaWJsZUJhc2UqIEFjY2Vz
c2libGVCYXNlOjpjcmVhdGVJbnN0YW5jZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQg
d2luZG93KQogewogICAgIEFTU0VSVF9BUkcob2JqLCBvYmopOwogCiAgICAgaWYgKG9iai0+aXNJ
bWFnZSgpKQotICAgICAgICByZXR1cm4gbmV3IEFjY2Vzc2libGVJbWFnZShvYmopOworICAgICAg
ICByZXR1cm4gbmV3IEFjY2Vzc2libGVJbWFnZShvYmosIHdpbmRvdyk7CiAKLSAgICByZXR1cm4g
bmV3IEFjY2Vzc2libGVCYXNlKG9iaik7CisgICAgcmV0dXJuIG5ldyBBY2Nlc3NpYmxlQmFzZShv
YmosIHdpbmRvdyk7CiB9CiAKIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OlF1ZXJ5U2VydmljZShS
RUZHVUlEIGd1aWRTZXJ2aWNlLCBSRUZJSUQgcmlpZCwgdm9pZCAqKnBwdk9iamVjdCkKIHsKLSAg
ICBpZiAoIUlzRXF1YWxHVUlEKGd1aWRTZXJ2aWNlLCBTSURfQWNjZXNzaWJsZUNvbXBhcmFibGUp
KSB7CisgICAgaWYgKCFJc0VxdWFsR1VJRChndWlkU2VydmljZSwgU0lEX0FjY2Vzc2libGVDb21w
YXJhYmxlKQorICAgICAgICAmJiAhSXNFcXVhbEdVSUQoZ3VpZFNlcnZpY2UsIElJRF9JQWNjZXNz
aWJsZTJfMikKKyAgICAgICAgJiYgIUlzRXF1YWxHVUlEKGd1aWRTZXJ2aWNlLCBJSURfSUFjY2Vz
c2libGUyKQorICAgICAgICAmJiAhSXNFcXVhbEdVSUQoZ3VpZFNlcnZpY2UsIElJRF9JQWNjZXNz
aWJsZUFwcGxpY2F0aW9uKQorICAgICAgICAmJiAhSXNFcXVhbEdVSUQoZ3VpZFNlcnZpY2UsIElJ
RF9JQWNjZXNzaWJsZSkpIHsKICAgICAgICAgKnBwdk9iamVjdCA9IDA7CiAgICAgICAgIHJldHVy
biBFX0lOVkFMSURBUkc7CiAgICAgfQpAQCAtOTcsNiArMTAzLDEwIEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgQWNjZXNzaWJsZUJhc2UKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19j
YXN0PElBY2Nlc3NpYmxlKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwg
X191dWlkb2YoSVVua25vd24pKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElB
Y2Nlc3NpYmxlKj4odGhpcyk7CisgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgX191dWlk
b2YoSUFjY2Vzc2libGUyXzIpKSkKKyAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRpY19jYXN0PElB
Y2Nlc3NpYmxlMl8yKj4odGhpcyk7CisgICAgZWxzZSBpZiAoSXNFcXVhbEdVSUQocmlpZCwgX191
dWlkb2YoSUFjY2Vzc2libGUyKSkpCisgICAgICAgICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJ
QWNjZXNzaWJsZTIqPih0aGlzKTsKICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBfX3V1
aWRvZihJQWNjZXNzaWJsZUNvbXBhcmFibGUpKSkKICAgICAgICAgKnBwdk9iamVjdCA9IHN0YXRp
Y19jYXN0PElBY2Nlc3NpYmxlQ29tcGFyYWJsZSo+KHRoaXMpOwogICAgIGVsc2UgaWYgKElzRXF1
YWxHVUlEKHJpaWQsIF9fdXVpZG9mKElTZXJ2aWNlUHJvdmlkZXIpKSkKQEAgLTEyMCw4ICsxMzAs
MTk1IEBAIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFjY2Vzc2libGVCYXNlOjoKICAgICByZXR1
cm4gMDsKIH0KIAorLy8gSUFjY2Vzc2libGUyXzIKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6Omdl
dF9hdHRyaWJ1dGUoQlNUUiBrZXksIFZBUklBTlQqIHZhbHVlKQoreworICAgIGlmICghdmFsdWUp
CisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisKKyAgICBBdG9taWNTdHJpbmcga2V5QXRvbWlj
KGtleSwgOjpTeXNTdHJpbmdMZW4oa2V5KSk7CisKKyAgICBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWUoa2V5QXRvbWljLCB2YWx1ZSk7CisKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VM
VCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY2Vzc2libGVXaXRoQ2FyZXQoSVVua25vd24qKiBhY2Nl
c3NpYmxlLCBsb25nKiBjYXJldE9mZnNldCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBFX05PVElNUEw7Cit9CisKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9yZWxh
dGlvblRhcmdldHNPZlR5cGUoQlNUUiB0eXBlLCBsb25nIG1heFRhcmdldHMsIElVbmtub3duKioq
IHRhcmdldHMsIGxvbmcqIG5UYXJnZXRzKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIEVfTk9USU1QTDsKK30KKworLy8gSUFjY2Vzc2libGUyCitIUkVTVUxUIEFjY2Vzc2li
bGVCYXNlOjpnZXRfblJlbGF0aW9ucyhsb25nKiBuUmVsYXRpb25zKQoreworICAgIGlmICghblJl
bGF0aW9ucykKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgIGlmICghbV9vYmplY3Qp
CisgICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAqblJl
bGF0aW9ucyA9IDA7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgQWNjZXNzaWJsZUJh
c2U6OmdldF9yZWxhdGlvbihsb25nIHJlbGF0aW9uSW5kZXgsIElBY2Nlc3NpYmxlUmVsYXRpb24q
KiByZWxhdGlvbikKK3sKKyAgICBpZiAoIXJlbGF0aW9uKQorICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRV9OT1RJTVBMOworfQor
CitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfcmVsYXRpb25zKGxvbmcgbWF4UmVsYXRpb25z
LCBJQWNjZXNzaWJsZVJlbGF0aW9uKiogcmVsYXRpb25zLCBsb25nKiBuUmVsYXRpb25zKQorewor
ICAgIGlmICghcmVsYXRpb25zIHx8ICFuUmVsYXRpb25zKQorICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRV9OT1RJTVBMOworfQor
CitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpyb2xlKGxvbmcqIHJvbGUpCit7CisgICAgaWYgKCFy
b2xlKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgaWYgKCFtX29iamVjdCkKKyAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKKworICAgICpyb2xlID0gd3JhcHBlcihtX29iamVjdCktPnJv
bGUoKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6c2Ny
b2xsVG8oSUEyU2Nyb2xsVHlwZSBzY3JvbGxUeXBlKQoreworICAgIGlmICghbV9vYmplY3QpCisg
ICAgICAgIHJldHVybiBFX0ZBSUw7CisgICAgcmV0dXJuIFNfRkFMU0U7Cit9CisKK0hSRVNVTFQg
QWNjZXNzaWJsZUJhc2U6OnNjcm9sbFRvUG9pbnQoSUEyQ29vcmRpbmF0ZVR5cGUgY29vcmRpbmF0
ZVR5cGUsIGxvbmcgeCwgbG9uZyB5KQoreworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJl
dHVybiBFX0ZBSUw7CisgICAgcmV0dXJuIFNfRkFMU0U7Cit9CisKK0hSRVNVTFQgQWNjZXNzaWJs
ZUJhc2U6OmdldF9ncm91cFBvc2l0aW9uKGxvbmcqIGdyb3VwTGV2ZWwsIGxvbmcqIHNpbWlsYXJJ
dGVtc0luR3JvdXAsIGxvbmcqIHBvc2l0aW9uSW5Hcm91cCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6
OmdldF9zdGF0ZXMoQWNjZXNzaWJsZVN0YXRlcyogc3RhdGVzKQoreworICAgIGlmICghc3RhdGVz
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgaWYgKCFtX29iamVjdCkKKyAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKKworICAgICpzdGF0ZXMgPSAwOworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9l
eHRlbmRlZFJvbGUoQlNUUiogZXh0ZW5kZWRSb2xlKQoreworICAgIGlmICghZXh0ZW5kZWRSb2xl
KQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgaWYgKCFtX29iamVjdCkKKyAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFNf
RkFMU0U7Cit9CisKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9sb2NhbGl6ZWRFeHRlbmRl
ZFJvbGUoQlNUUiogbG9jYWxpemVkRXh0ZW5kZWRSb2xlKQoreworICAgIGlmICghbG9jYWxpemVk
RXh0ZW5kZWRSb2xlKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgaWYgKCFtX29i
amVjdCkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIFNfRkFMU0U7Cit9CisKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9uRXh0
ZW5kZWRTdGF0ZXMobG9uZyogbkV4dGVuZGVkU3RhdGVzKQoreworICAgIGlmICghbkV4dGVuZGVk
U3RhdGVzKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgaWYgKCFtX29iamVjdCkK
KyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgKm5F
eHRlbmRlZFN0YXRlcyA9IDA7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgQWNjZXNz
aWJsZUJhc2U6OmdldF9leHRlbmRlZFN0YXRlcyhsb25nIG1heEV4dGVuZGVkU3RhdGVzLCBCU1RS
KiogZXh0ZW5kZWRTdGF0ZXMsIGxvbmcqIG5FeHRlbmRlZFN0YXRlcykKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKK0hSRVNVTFQgQWNjZXNzaWJs
ZUJhc2U6OmdldF9sb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcyhsb25nIG1heExvY2FsaXplZEV4dGVu
ZGVkU3RhdGVzLCBCU1RSKiogbG9jYWxpemVkRXh0ZW5kZWRTdGF0ZXMsIGxvbmcqIG5Mb2NhbGl6
ZWRFeHRlbmRlZFN0YXRlcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBF
X05PVElNUEw7Cit9CisKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF91bmlxdWVJRChsb25n
KiB1bmlxdWVJRCkKK3sKKyAgICBpZiAoIXVuaXF1ZUlEKQorICAgICAgICByZXR1cm4gRV9QT0lO
VEVSOworCisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKworICAg
ICp1bmlxdWVJRCA9IHN0YXRpY19jYXN0PGxvbmc+KG1fb2JqZWN0LT5heE9iamVjdElEKCkpOwor
ICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfd2luZG93
SGFuZGxlKEhXTkQqIHdpbmRvd0hhbmRsZSkKK3sKKyAgICAqd2luZG93SGFuZGxlID0gbV93aW5k
b3c7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9p
bmRleEluUGFyZW50KGxvbmcqIGluZGV4SW5QYXJlbnQpCit7CisgICAgcmV0dXJuIEVfTk9USU1Q
TDsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2xvY2FsZShJQTJMb2NhbGUqIGxv
Y2FsZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFX05PVElNUEw7Cit9
CisKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9hdHRyaWJ1dGVzKEJTVFIqIGF0dHJpYnV0
ZXMpCit7CisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIEVfRkFJTDsKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTX0ZBTFNFOworfQorCiAvLyBJQWNjZXNzaWJs
ZQotSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY1BhcmVu
dChJRGlzcGF0Y2gqKiBwYXJlbnQpCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfYWNjUGFy
ZW50KElEaXNwYXRjaCoqIHBhcmVudCkKIHsKICAgICAqcGFyZW50ID0gMDsKIApAQCAtMTM1LDEw
ICszMzIsMTAgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3NpYmxlQmFzZQogICAg
ICAgICByZXR1cm4gU19PSzsKICAgICB9CiAKLSAgICBpZiAoIW1fb2JqZWN0LT50b3BEb2N1bWVu
dEZyYW1lVmlldygpKQorICAgIGlmICghbV93aW5kb3cpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKLSAgICByZXR1cm4gV2ViVmlldzo6QWNjZXNzaWJsZU9iamVjdEZyb21XaW5kb3cobV9vYmpl
Y3QtPnRvcERvY3VtZW50RnJhbWVWaWV3KCktPmhvc3RXaW5kb3coKS0+cGxhdGZvcm1QYWdlQ2xp
ZW50KCksCisgICAgcmV0dXJuIFdlYlZpZXc6OkFjY2Vzc2libGVPYmplY3RGcm9tV2luZG93KG1f
d2luZG93LAogICAgICAgICBPQkpJRF9XSU5ET1csIF9fdXVpZG9mKElBY2Nlc3NpYmxlKSwgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKio+KHBhcmVudCkpOwogfQogCkBAIC0yNTAsNzkgKzQ0Nyw4NSBA
QCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEFjY2Vzc2libGVCYXNlCiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJsZUJhc2U6OmdldF9h
Y2NTdGF0ZShWQVJJQU5UIHZDaGlsZCwgVkFSSUFOVCogcHZTdGF0ZSkKK2xvbmcgQWNjZXNzaWJs
ZUJhc2U6OnN0YXRlKCkgY29uc3QKIHsKLSAgICBpZiAoIXB2U3RhdGUpCi0gICAgICAgIHJldHVy
biBFX1BPSU5URVI7CisgICAgbG9uZyBzdGF0ZSA9IDA7CisgICAgaWYgKG1fb2JqZWN0LT5pc0xp
bmtlZCgpKQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9TWVNURU1fTElOS0VEOwogCi0gICAgOjpW
YXJpYW50SW5pdChwdlN0YXRlKTsKKyAgICBpZiAobV9vYmplY3QtPmlzSG92ZXJlZCgpKQorICAg
ICAgICBzdGF0ZSB8PSBTVEFURV9TWVNURU1fSE9UVFJBQ0tFRDsKIAotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNoaWxkT2JqOwotICAgIEhSRVNVTFQgaHIgPSBnZXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Rm9yQ2hpbGQodkNoaWxkLCBjaGlsZE9iaik7CisgICAgaWYgKCFtX29iamVjdC0+aXNFbmFi
bGVkKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZU1RFTV9VTkFWQUlMQUJMRTsKIAotICAg
IGlmIChGQUlMRUQoaHIpKQotICAgICAgICByZXR1cm4gaHI7CisgICAgaWYgKG1fb2JqZWN0LT5p
c1JlYWRPbmx5KCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZU1RFTV9SRUFET05MWTsKIAot
ICAgIHB2U3RhdGUtPnZ0ID0gVlRfSTQ7Ci0gICAgcHZTdGF0ZS0+bFZhbCA9IDA7CisgICAgaWYg
KG1fb2JqZWN0LT5pc09mZlNjcmVlbigpKQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9TWVNURU1f
T0ZGU0NSRUVOOwogCi0gICAgaWYgKGNoaWxkT2JqLT5pc0xpbmtlZCgpKQotICAgICAgICBwdlN0
YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RFTV9MSU5LRUQ7CisgICAgaWYgKG1fb2JqZWN0LT5pc1Bh
c3N3b3JkRmllbGQoKSkKKyAgICAgICAgc3RhdGUgfD0gU1RBVEVfU1lTVEVNX1BST1RFQ1RFRDsK
IAotICAgIGlmIChjaGlsZE9iai0+aXNIb3ZlcmVkKCkpCi0gICAgICAgIHB2U3RhdGUtPmxWYWwg
fD0gU1RBVEVfU1lTVEVNX0hPVFRSQUNLRUQ7CisgICAgaWYgKG1fb2JqZWN0LT5pc0luZGV0ZXJt
aW5hdGUoKSkKKyAgICAgICAgc3RhdGUgfD0gU1RBVEVfU1lTVEVNX0lOREVURVJNSU5BVEU7CiAK
LSAgICBpZiAoIWNoaWxkT2JqLT5pc0VuYWJsZWQoKSkKLSAgICAgICAgcHZTdGF0ZS0+bFZhbCB8
PSBTVEFURV9TWVNURU1fVU5BVkFJTEFCTEU7CisgICAgaWYgKG1fb2JqZWN0LT5pc0NoZWNrZWQo
KSkKKyAgICAgICAgc3RhdGUgfD0gU1RBVEVfU1lTVEVNX0NIRUNLRUQ7CiAKLSAgICBpZiAoY2hp
bGRPYmotPmlzUmVhZE9ubHkoKSkKLSAgICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNU
RU1fUkVBRE9OTFk7CisgICAgaWYgKG1fb2JqZWN0LT5pc1ByZXNzZWQoKSkKKyAgICAgICAgc3Rh
dGUgfD0gU1RBVEVfU1lTVEVNX1BSRVNTRUQ7CiAKLSAgICBpZiAoY2hpbGRPYmotPmlzT2ZmU2Ny
ZWVuKCkpCi0gICAgICAgIHB2U3RhdGUtPmxWYWwgfD0gU1RBVEVfU1lTVEVNX09GRlNDUkVFTjsK
KyAgICBpZiAobV9vYmplY3QtPmlzRm9jdXNlZCgpKQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9T
WVNURU1fRk9DVVNFRDsKIAotICAgIGlmIChjaGlsZE9iai0+aXNQYXNzd29yZEZpZWxkKCkpCi0g
ICAgICAgIHB2U3RhdGUtPmxWYWwgfD0gU1RBVEVfU1lTVEVNX1BST1RFQ1RFRDsKKyAgICBpZiAo
bV9vYmplY3QtPmlzVmlzaXRlZCgpKQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9TWVNURU1fVFJB
VkVSU0VEOwogCi0gICAgaWYgKGNoaWxkT2JqLT5pc0luZGV0ZXJtaW5hdGUoKSkKLSAgICAgICAg
cHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNURU1fSU5ERVRFUk1JTkFURTsKKyAgICBpZiAobV9v
YmplY3QtPmNhblNldEZvY3VzQXR0cmlidXRlKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZ
U1RFTV9GT0NVU0FCTEU7CiAKLSAgICBpZiAoY2hpbGRPYmotPmlzQ2hlY2tlZCgpKQotICAgICAg
ICBwdlN0YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RFTV9DSEVDS0VEOworICAgIGlmIChtX29iamVj
dC0+aXNTZWxlY3RlZCgpKQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9TWVNURU1fU0VMRUNURUQ7
CiAKLSAgICBpZiAoY2hpbGRPYmotPmlzUHJlc3NlZCgpKQotICAgICAgICBwdlN0YXRlLT5sVmFs
IHw9IFNUQVRFX1NZU1RFTV9QUkVTU0VEOworICAgIGlmIChtX29iamVjdC0+Y2FuU2V0U2VsZWN0
ZWRBdHRyaWJ1dGUoKSkKKyAgICAgICAgc3RhdGUgfD0gU1RBVEVfU1lTVEVNX1NFTEVDVEFCTEU7
CiAKLSAgICBpZiAoY2hpbGRPYmotPmlzRm9jdXNlZCgpKQotICAgICAgICBwdlN0YXRlLT5sVmFs
IHw9IFNUQVRFX1NZU1RFTV9GT0NVU0VEOworICAgIGlmIChtX29iamVjdC0+aXNNdWx0aVNlbGVj
dGFibGUoKSkKKyAgICAgICAgc3RhdGUgfD0gU1RBVEVfU1lTVEVNX0VYVFNFTEVDVEFCTEUgfCBT
VEFURV9TWVNURU1fTVVMVElTRUxFQ1RBQkxFOwogCi0gICAgaWYgKGNoaWxkT2JqLT5pc1Zpc2l0
ZWQoKSkKLSAgICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNURU1fVFJBVkVSU0VEOwor
ICAgIGlmICghbV9vYmplY3QtPmlzVmlzaWJsZSgpKQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9T
WVNURU1fSU5WSVNJQkxFOwogCi0gICAgaWYgKGNoaWxkT2JqLT5jYW5TZXRGb2N1c0F0dHJpYnV0
ZSgpKQotICAgICAgICBwdlN0YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RFTV9GT0NVU0FCTEU7Cisg
ICAgaWYgKG1fb2JqZWN0LT5pc0NvbGxhcHNlZCgpKQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9T
WVNURU1fQ09MTEFQU0VEOwogCi0gICAgaWYgKGNoaWxkT2JqLT5pc1NlbGVjdGVkKCkpCi0gICAg
ICAgIHB2U3RhdGUtPmxWYWwgfD0gU1RBVEVfU1lTVEVNX1NFTEVDVEVEOworICAgIGlmIChtX29i
amVjdC0+cm9sZVZhbHVlKCkgPT0gUG9wVXBCdXR0b25Sb2xlKSB7CisgICAgICAgIHN0YXRlIHw9
IFNUQVRFX1NZU1RFTV9IQVNQT1BVUDsKIAotICAgIGlmIChjaGlsZE9iai0+Y2FuU2V0U2VsZWN0
ZWRBdHRyaWJ1dGUoKSkKLSAgICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNURU1fU0VM
RUNUQUJMRTsKKyAgICAgICAgaWYgKCFtX29iamVjdC0+aXNDb2xsYXBzZWQoKSkKKyAgICAgICAg
ICAgIHN0YXRlIHw9IFNUQVRFX1NZU1RFTV9FWFBBTkRFRDsKKyAgICB9CiAKLSAgICBpZiAoY2hp
bGRPYmotPmlzTXVsdGlTZWxlY3RhYmxlKCkpCi0gICAgICAgIHB2U3RhdGUtPmxWYWwgfD0gU1RB
VEVfU1lTVEVNX0VYVFNFTEVDVEFCTEUgfCBTVEFURV9TWVNURU1fTVVMVElTRUxFQ1RBQkxFOwor
ICAgIHJldHVybiBzdGF0ZTsKK30KIAotICAgIGlmICghY2hpbGRPYmotPmlzVmlzaWJsZSgpKQot
ICAgICAgICBwdlN0YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RFTV9JTlZJU0lCTEU7CitIUkVTVUxU
IEFjY2Vzc2libGVCYXNlOjpnZXRfYWNjU3RhdGUoVkFSSUFOVCB2Q2hpbGQsIFZBUklBTlQqIHB2
U3RhdGUpCit7CisgICAgaWYgKCFwdlN0YXRlKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwog
Ci0gICAgaWYgKGNoaWxkT2JqLT5pc0NvbGxhcHNlZCgpKQotICAgICAgICBwdlN0YXRlLT5sVmFs
IHw9IFNUQVRFX1NZU1RFTV9DT0xMQVBTRUQ7CisgICAgOjpWYXJpYW50SW5pdChwdlN0YXRlKTsK
IAotICAgIGlmIChjaGlsZE9iai0+cm9sZVZhbHVlKCkgPT0gUG9wVXBCdXR0b25Sb2xlKSB7Ci0g
ICAgICAgIHB2U3RhdGUtPmxWYWwgfD0gU1RBVEVfU1lTVEVNX0hBU1BPUFVQOworICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIGNoaWxkT2JqOworICAgIEhSRVNVTFQgaHIgPSBnZXRBY2Nlc3NpYmls
aXR5T2JqZWN0Rm9yQ2hpbGQodkNoaWxkLCBjaGlsZE9iaik7CiAKLSAgICAgICAgaWYgKCFjaGls
ZE9iai0+aXNDb2xsYXBzZWQoKSkKLSAgICAgICAgICAgIHB2U3RhdGUtPmxWYWwgfD0gU1RBVEVf
U1lTVEVNX0VYUEFOREVEOwotICAgIH0KKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgcmV0
dXJuIGhyOworCisgICAgcHZTdGF0ZS0+dnQgPSBWVF9JNDsKKyAgICBwdlN0YXRlLT5sVmFsID0g
d3JhcHBlcihjaGlsZE9iaiktPnN0YXRlKCk7CiAKICAgICByZXR1cm4gU19PSzsKIH0KQEAgLTgy
MCwxMSArMTAyMywxMSBAQCBIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRBY2Nlc3NpYmlsaXR5
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKLUFjY2Vzc2libGVCYXNlKiBBY2Nlc3NpYmxlQmFzZTo6
d3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCitBY2Nlc3NpYmxlQmFzZSogQWNjZXNz
aWJsZUJhc2U6OndyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKSBjb25zdAogewogICAg
IEFjY2Vzc2libGVCYXNlKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmxlQmFzZSo+KG9i
ai0+d3JhcHBlcigpKTsKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmVzdWx0ID0gY3JlYXRl
SW5zdGFuY2Uob2JqKTsKKyAgICAgICAgcmVzdWx0ID0gY3JlYXRlSW5zdGFuY2Uob2JqLCBtX3dp
bmRvdyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtODM0LDE1ICsxMDM3LDMgQEAgSFJF
U1VMVCBBY2Nlc3NpYmxlQmFzZTo6aXNTYW1lT2JqZWN0KElBYwogICAgICpyZXN1bHQgPSAob3Ro
ZXJBY2Nlc3NpYmxlQmFzZSA9PSB0aGlzIHx8IG90aGVyQWNjZXNzaWJsZUJhc2UtPm1fb2JqZWN0
ID09IG1fb2JqZWN0KTsKICAgICByZXR1cm4gU19PSzsKIH0KLQotSFJFU1VMVCBBY2Nlc3NpYmxl
QmFzZTo6YXR0cmlidXRlVmFsdWUoQlNUUiBrZXksIFZBUklBTlQqIHZhbHVlKQotewotICAgIGlm
ICghdmFsdWUpCi0gICAgICAgIHJldHVybiBFX1BPSU5URVI7Ci0KLSAgICBBdG9taWNTdHJpbmcg
a2V5QXRvbWljKGtleSwgOjpTeXNTdHJpbmdMZW4oa2V5KSk7Ci0KLSAgICBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWUoa2V5QXRvbWljLCB2YWx1ZSk7Ci0KLSAgICByZXR1cm4gU19PSzsKLX0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZUJhc2UuaAkocmV2aXNpb24gMTUxNTIyKQorKysg
U291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZUJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NyArMzIsNyBAQAogCiBjbGFzcyBERUNMU1BFQ19VVUlEKCIzZGJkNTY1Yi1kYjIyLTRkODgtOGUw
ZS03NzhiZGU1NDUyNGEiKSBBY2Nlc3NpYmxlQmFzZSA6IHB1YmxpYyBJQWNjZXNzaWJsZUNvbXBh
cmFibGUsIHB1YmxpYyBJU2VydmljZVByb3ZpZGVyLCBwdWJsaWMgV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgewogcHVibGljOgotICAgIHN0YXRpYyBBY2Nlc3NpYmxlQmFzZSog
Y3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIHN0YXRp
YyBBY2Nlc3NpYmxlQmFzZSogY3JlYXRlSW5zdGFuY2UoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdCosIEhXTkQpOwogCiAgICAgLy8gSVNlcnZpY2VQcm92aWRlcgogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeVNlcnZpY2UoUkVGR1VJRCBndWlkU2VydmljZSwg
UkVGSUlEIHJpaWQsIHZvaWQgKipwcHYpOwpAQCAtNDIsNiArNDIsMzEgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKHZvaWQpIHsgcmV0dXJuICsr
bV9yZWZDb3VudDsgfQogICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFz
ZSh2b2lkKTsKIAorICAgIC8vIElBY2Nlc3NpYmxlMl8yCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGdldF9hdHRyaWJ1dGUoQlNUUiBuYW1lLCBWQVJJQU5UKiBhdHRyaWJ1
dGUpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfYWNjZXNzaWJs
ZVdpdGhDYXJldChJVW5rbm93bioqIGFjY2Vzc2libGUsIGxvbmcqIGNhcmV0T2Zmc2V0KTsKKyAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X3JlbGF0aW9uVGFyZ2V0c09m
VHlwZShCU1RSIHR5cGUsIGxvbmcgbWF4VGFyZ2V0cywgSVVua25vd24qKiogdGFyZ2V0cywgbG9u
ZyogblRhcmdldHMpOworCisgICAgLy8gSUFjY2Vzc2libGUyCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGdldF9uUmVsYXRpb25zKGxvbmcqKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X3JlbGF0aW9uKGxvbmcgcmVsYXRpb25JbmRleCwg
SUFjY2Vzc2libGVSZWxhdGlvbioqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZ2V0X3JlbGF0aW9ucyhsb25nIG1heFJlbGF0aW9ucywgSUFjY2Vzc2libGVSZWxhdGlv
bioqIHJlbGF0aW9ucywgbG9uZyogblJlbGF0aW9ucyk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHJvbGUobG9uZyopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBzY3JvbGxUbyhJQTJTY3JvbGxUeXBlKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgc2Nyb2xsVG9Qb2ludChJQTJDb29yZGluYXRlVHlwZSwgbG9uZyB4
LCBsb25nIHkpOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfZ3Jv
dXBQb3NpdGlvbihsb25nKiBncm91cExldmVsLCBsb25nKiBzaW1pbGFySXRlbXNJbkdyb3VwLCBs
b25nKiBwb3NpdGlvbkluR3JvdXApOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBnZXRfc3RhdGVzKEFjY2Vzc2libGVTdGF0ZXMqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2V4dGVuZGVkUm9sZShCU1RSKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9sb2NhbGl6ZWRFeHRlbmRlZFJvbGUoQlNUUiop
OworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfbkV4dGVuZGVkU3Rh
dGVzKGxvbmcqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2V4
dGVuZGVkU3RhdGVzKGxvbmcgbWF4RXh0ZW5kZWRTdGF0ZXMsIEJTVFIqKiBleHRlbmRlZFN0YXRl
cywgbG9uZyogbkV4dGVuZGVkU3RhdGVzKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZ2V0X2xvY2FsaXplZEV4dGVuZGVkU3RhdGVzKGxvbmcgbWF4TG9jYWxpemVkRXh0
ZW5kZWRTdGF0ZXMsIEJTVFIqKiBsb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcywgbG9uZyogbkxvY2Fs
aXplZEV4dGVuZGVkU3RhdGVzKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZ2V0X3VuaXF1ZUlEKGxvbmcqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZ2V0X3dpbmRvd0hhbmRsZShIV05EKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGdldF9pbmRleEluUGFyZW50KGxvbmcqKTsKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2xvY2FsZShJQTJMb2NhbGUqKTsKKyAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X2F0dHJpYnV0ZXMoQlNUUiopOworCiAgICAg
Ly8gSUFjY2Vzc2libGUKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0
X2FjY1BhcmVudChJRGlzcGF0Y2gqKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGdldF9hY2NDaGlsZENvdW50KGxvbmcqKTsKQEAgLTk0LDIwICsxMTksMjEgQEAgcHVi
bGljOgogCiAgICAgLy8gSUFjY2Vzc2libGVDb21wYXJhYmxlCiAgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIGlzU2FtZU9iamVjdChJQWNjZXNzaWJsZUNvbXBhcmFibGUqIG90
aGVyLCBCT09MKiByZXN1bHQpOwotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBhdHRyaWJ1dGVWYWx1ZShCU1RSIGtleSwgVkFSSUFOVCogdmFsdWUpOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgQWNjZXNzaWJsZUJhc2UoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopOworICAg
IEFjY2Vzc2libGVCYXNlKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqLCBIV05EKTsKICAg
ICB2aXJ0dWFsIH5BY2Nlc3NpYmxlQmFzZSgpOwogCiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBu
YW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyB2YWx1ZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgbG9uZyByb2xlKCkgY29uc3Q7CisgICAgdmlydHVhbCBsb25nIHN0YXRlKCkgY29u
c3Q7CiAKICAgICBIUkVTVUxUIGdldEFjY2Vzc2liaWxpdHlPYmplY3RGb3JDaGlsZChWQVJJQU5U
IHZDaGlsZCwgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdComKSBjb25zdDsKIAotICAgIHN0
YXRpYyBBY2Nlc3NpYmxlQmFzZSogd3JhcHBlcihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
Kik7CisgICAgQWNjZXNzaWJsZUJhc2UqIHdyYXBwZXIoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdCopIGNvbnN0OwogCisgICAgSFdORCBtX3dpbmRvdzsKICAgICBpbnQgbV9yZWZDb3VudDsK
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVEb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZURvY3VtZW50LmNw
cAkocmV2aXNpb24gMTUxNTIyKQorKysgU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZURvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsOCArMzMsOCBAQAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIC8vIEFjY2Vzc2libGVEb2N1bWVudAotQWNjZXNzaWJsZURvY3VtZW50OjpBY2Nl
c3NpYmxlRG9jdW1lbnQoRG9jdW1lbnQqIGRvYykKLSAgICA6IEFjY2Vzc2libGVCYXNlKGRvYy0+
YXhPYmplY3RDYWNoZSgpLT5yb290T2JqZWN0KCkpCitBY2Nlc3NpYmxlRG9jdW1lbnQ6OkFjY2Vz
c2libGVEb2N1bWVudChEb2N1bWVudCogZG9jLCBIV05EIHdpbmRvdykKKyAgICA6IEFjY2Vzc2li
bGVCYXNlKGRvYy0+YXhPYmplY3RDYWNoZSgpLT5yb290T2JqZWN0KCksIHdpbmRvdykKIHsKIH0K
IApJbmRleDogU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZURvY3VtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZURvY3VtZW50LmgJKHJldmlzaW9uIDE1
MTUyMikKKysrIFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVEb2N1bWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsMjAxMyBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMwLDcgKzMwLDcgQEAKIAogY2xhc3MgQWNjZXNzaWJsZURvY3VtZW50IDogcHVibGlj
IEFjY2Vzc2libGVCYXNlIHsKIHB1YmxpYzoKLSAgICBBY2Nlc3NpYmxlRG9jdW1lbnQoV2ViQ29y
ZTo6RG9jdW1lbnQqKTsKKyAgICBBY2Nlc3NpYmxlRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnQq
LCBIV05EKTsKICAgICBXZWJDb3JlOjpEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogcHJv
dGVjdGVkOgpJbmRleDogU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZUltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlSW1hZ2UuY3BwCShyZXZpc2lv
biAxNTE1MjIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlSW1hZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpIVE1MTmFtZXM7CiAKLUFjY2Vzc2libGVJbWFnZTo6QWNj
ZXNzaWJsZUltYWdlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKLSAgICA6IEFjY2Vzc2libGVC
YXNlKG9iaikKK0FjY2Vzc2libGVJbWFnZTo6QWNjZXNzaWJsZUltYWdlKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCisgICAgOiBBY2Nlc3NpYmxlQmFzZShvYmosIHdpbmRv
dykKIHsKICAgICBBU1NFUlRfQVJHKG9iaiwgb2JqLT5pc0ltYWdlKCkpOwogICAgIEFTU0VSVF9B
Ukcob2JqLCBvYmotPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL0FjY2Vzc2libGVJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL0FjY2Vzc2libGVJbWFnZS5oCShyZXZpc2lvbiAxNTE1MjIpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9BY2Nlc3NpYmxlSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBA
QAogY2xhc3MgQWNjZXNzaWJsZUltYWdlIDogcHVibGljIEFjY2Vzc2libGVCYXNlCiB7CiBwdWJs
aWM6Ci0gICAgQWNjZXNzaWJsZUltYWdlKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqKTsK
KyAgICBBY2Nlc3NpYmxlSW1hZ2UoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCosIEhXTkQp
OwogICAgIHZpcnR1YWwgfkFjY2Vzc2libGVJbWFnZSgpIHsgfQogCiBwcml2YXRlOgpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTUxNTIyKQorKysgU291cmNlL1dlYktpdC93
aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwOSwgMjAxMSwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMDkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0yNTkwLDcgKzI1OTAsNyBAQCBDT01QdHI8SUFjY2Vzc2libGU+IFdlYkZyYW1l
OjphY2Nlc3NpYmxlCiAgICAgICAgIC8vIHRoZSBEb2N1bWVudCByZW5kZXJlciB3YXMgZGVzdHJv
eWVkIGFuZCBpdHMgd3JhcHBlciB3YXMgZGV0YWNoZWQsIG9yCiAgICAgICAgIC8vIHRoZSBwcmV2
aW91cyBEb2N1bWVudCBpcyBpbiB0aGUgcGFnZSBjYWNoZSwgYW5kIHRoZSBjdXJyZW50IGRvY3Vt
ZW50CiAgICAgICAgIC8vIG5lZWRzIHRvIGJlIHdyYXBwZWQuCi0gICAgICAgIG1fYWNjZXNzaWJs
ZSA9IG5ldyBBY2Nlc3NpYmxlRG9jdW1lbnQoY3VycmVudERvY3VtZW50KTsKKyAgICAgICAgbV9h
Y2Nlc3NpYmxlID0gbmV3IEFjY2Vzc2libGVEb2N1bWVudChjdXJyZW50RG9jdW1lbnQsIHdlYlZp
ZXcoKS0+dmlld1dpbmRvdygpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fYWNjZXNzaWJsZS5nZXQo
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZUNvbXBh
cmFibGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvQWNj
ZXNzaWJsZUNvbXBhcmFibGUuaWRsCShyZXZpc2lvbiAxNTE1MjIpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGVDb21wYXJhYmxlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQCBpbXBvcnQgIm9jaWRsLmlkbCI7CiAjZW5kaWYKIAogaW1wb3J0ICJv
bGVhY2MuaWRsIjsKK2ltcG9ydCAiQWNjZXNzaWJsZTJfMi5pZGwiOwogCiBjcHBfcXVvdGUoImV4
dGVybiBjb25zdCBHVUlEICBfX2RlY2xzcGVjKHNlbGVjdGFueSkgU0lEX0FjY2Vzc2libGVDb21w
YXJhYmxlID0geyAweDYyYjhjYjVmLCAweGZiN2EsIDB4NGZhZiwgMHg4MSwgMHhlOCwgMHg1Miwg
MHhiNiwgMHg1ZiwgMHgxMiwgMHg4YiwgMHgzMSB9OyIpCiAKQEAgLTM5LDggKzQwLDcgQEAgY3Bw
X3F1b3RlKCJleHRlcm4gY29uc3QgR1VJRCAgX19kZWNsc3BlYwogICAgIGR1YWwsCiAgICAgcG9p
bnRlcl9kZWZhdWx0KHVuaXF1ZSkKIF0KLWludGVyZmFjZSBJQWNjZXNzaWJsZUNvbXBhcmFibGUg
OiBJQWNjZXNzaWJsZQoraW50ZXJmYWNlIElBY2Nlc3NpYmxlQ29tcGFyYWJsZSA6IElBY2Nlc3Np
YmxlMl8yCiB7CiAgICAgSFJFU1VMVCBpc1NhbWVPYmplY3QoW2luXSBJQWNjZXNzaWJsZUNvbXBh
cmFibGUqIG90aGVyLCBbb3V0LCByZXR2YWxdIEJPT0wqIHJlc3VsdCk7Ci0gICAgSFJFU1VMVCBh
dHRyaWJ1dGVWYWx1ZShbaW5dIEJTVFIga2V5LCBbb3V0LCByZXR2YWxdIFZBUklBTlQqIHZhbHVl
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL1dlYktpdC5pZGwJKHJldmlz
aW9uIDE1MTUyMikKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvV2ViS2l0LmlkbAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsOCBAQCBjcHBfcXVvdGUoIiAqLyIpCiBpbXBvcnQg
Im9haWRsLmlkbCI7CiBpbXBvcnQgIm9jaWRsLmlkbCI7CiAKK2ltcG9ydCAiQWNjZXNzaWJsZUFw
cGxpY2F0aW9uLmlkbCI7CisKICNpbmNsdWRlICJBY2Nlc3NpYmxlQ29tcGFyYWJsZS5pZGwiCiAj
aW5jbHVkZSAiV2ViU2Nyb2xsYmFyVHlwZXMuaWRsIgogI2luY2x1ZGUgIkphdmFTY3JpcHRDb3Jl
QVBJVHlwZXMuaWRsIgpJbmRleDogU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3Np
YmxlMi9BY2Nlc3NpYmxlMi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50
ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlMi5pZGwJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGUyLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDY5MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAg
RmlsZSBOYW1lIChBY2Nlc3NpYmxlMi5pZGwpCisgKiAKKyAqICBJQWNjZXNzaWJsZTIgSURMIFNw
ZWNpZmljYXRpb24gCisgKiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMTMgTGludXggRm91
bmRhdGlvbiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIAorICogIENv
cHlyaWdodCAoYykgMjAwMCwgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIAorICogIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuIAorICogICAKKyAqICAgCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyAKKyAqICBhcmUgbWV0OiAKKyAqICAgCisgKiAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IAorICogICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
IAorICogICAKKyAqICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgCisgKiAgICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyAKKyAqICAgICAgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqCisgKiAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
dGhlIExpbnV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgCisgKiAgICAgIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgCisgKiAg
ICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiAKKyAqICAgICAgcGVybWlzc2lvbi4gCisgKiAgIAorICogIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqICBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKKyAqICBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAq
ICBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSAKKyAqICBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBPUiAKKyAqICBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIAorICogIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyAKKyAqICBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSAKKyAqICBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gCisgKiAgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IAorICogIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIAorICogIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICogICAKKyAqICBUaGlzIEJTRCBMaWNlbnNlIGNvbmZvcm1zIHRvIHRo
ZSBPcGVuIFNvdXJjZSBJbml0aWF0aXZlICJTaW1wbGlmaWVkIAorICogIEJTRCBMaWNlbnNlIiBh
cyBwdWJsaXNoZWQgYXQ6IAorICogIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv
YnNkLWxpY2Vuc2UucGhwIAorICogICAKKyAqICBJQWNjZXNzaWJsZTIgaXMgYSB0cmFkZW1hcmsg
b2YgdGhlIExpbnV4IEZvdW5kYXRpb24uIFRoZSBJQWNjZXNzaWJsZTIgCisgKiAgbWFyayBtYXkg
YmUgdXNlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIExpbnV4IEZvdW5kYXRpb24gVHJhZGVtYXJr
IAorICogIFBvbGljeSB0byBpbmRpY2F0ZSBjb21wbGlhbmNlIHdpdGggdGhlIElBY2Nlc3NpYmxl
MiBzcGVjaWZpY2F0aW9uLiAKKyAqIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gCisKKy8qKiBAbWFpbnBh
Z2UKKworIEBzZWN0aW9uIF9pbnRlcmZhY2VzIEludGVyZmFjZXMKKyAgSUFjY2Vzc2libGUyXG4K
KyAgSUFjY2Vzc2libGUyXzJcbgorICBJQWNjZXNzaWJsZUFjdGlvblxuCisgIElBY2Nlc3NpYmxl
QXBwbGljYXRpb25cbgorICBJQWNjZXNzaWJsZUNvbXBvbmVudFxuCisgIElBY2Nlc3NpYmxlRG9j
dW1lbnRcbgorICBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dFxuCisgIElBY2Nlc3NpYmxlSHlwZXJ0
ZXh0XG4KKyAgSUFjY2Vzc2libGVIeXBlcnRleHQyXG4KKyAgSUFjY2Vzc2libGVIeXBlcmxpbmtc
bgorICBJQWNjZXNzaWJsZUltYWdlXG4KKyAgSUFjY2Vzc2libGVSZWxhdGlvblxuCisgIElBY2Nl
c3NpYmxlVGFibGUgW0RlcHJlY2F0ZWRdXG4KKyAgSUFjY2Vzc2libGVUYWJsZTJcbgorICBJQWNj
ZXNzaWJsZVRhYmxlQ2VsbFxuCisgIElBY2Nlc3NpYmxlVGV4dFxuCisgIElBY2Nlc3NpYmxlVGV4
dDJcbgorICBJQWNjZXNzaWJsZVZhbHVlCisKKyBAc2VjdGlvbiBfc3RydWN0cyBTdHJ1Y3RzCisg
IElBMkxvY2FsZVxuCisgIElBMlRhYmxlTW9kZWxDaGFuZ2VcbgorICBJQTJUZXh0U2VnbWVudAor
CisgQHNlY3Rpb24gX2VudW1zIEVudW1zCisgIDo6SUEyQWN0aW9ucyB2YWx1ZXMgYXJlIHByZWRl
ZmluZWQgYWN0aW9ucyBmb3IgdXNlIHdoZW4gaW1wbGVtZW50aW5nIHN1cHBvcnQgZm9yIEhUTUw1
IG1lZGlhLlxuCisgIDo6SUEyQ29vcmRpbmF0ZVR5cGUgdmFsdWVzIGRlZmluZSB0aGUgcmVxdWVz
dGVkIGNvb3JkaW5hdGUgdHlwZSAoc2NyZWVuIG9yIHBhcmVudCB3aW5kb3cpLlxuCisgIDo6SUEy
RXZlbnRJRCB2YWx1ZXMgaWRlbnRpZnkgZXZlbnRzLlxuCisgIDo6SUEyUm9sZSB2YWx1ZXMgZGVm
aW5lcyByb2xlcyB3aGljaCBhcmUgaW4gYWRkaXRpb24gdG8gdGhlIGV4aXN0aW5nIE1TQUEgcm9s
ZXMuXG4KKyAgOjpJQTJTY3JvbGxUeXBlIHZhbHVlcyBkZWZpbmUgd2hlcmUgdG8gcGxhY2UgYW4g
b2JqZWN0IG9yIHN1YnN0cmluZyBvbiB0aGUgc2NyZWVuLlxuCisgIDo6SUEyU3RhdGVzIHZhbHVl
cyBkZWZpbmUgc3RhdGVzIHdoaWNoIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgZXhpc3RpbmcgTVNB
QSBzdGF0ZXMuXG4KKyAgOjpJQTJUYWJsZU1vZGVsQ2hhbmdlVHlwZSB2YWx1ZXMgZGVzY3JpYmUg
dGhlIGtpbmRzIG9mIGNoYW5nZXMgbWFkZSB0byBhIHRhYmxlIChpbnNlcnQsIGRlbGV0ZSwgdXBk
YXRlKS5cbgorICA6OklBMlRleHRCb3VuZGFyeVR5cGUgdmFsdWVzIGRlZmluZSB0aGUgcmVxdWVz
dGVkIHRleHQgdW5pdCAoY2hhcmFjdGVyLCB3b3JkLCBzZW50ZW5jZSwgbGluZSwgcGFyYWdyYXBo
KS5cbgorICA6OklBMlRleHRTcGVjaWFsT2Zmc2V0cyB2YWx1ZXMgZGVmaW5lIHNwZWNpYWwgb2Zm
c2V0cyBmb3IgdXNlIGluIHRoZSB0ZXh0IGludGVyZmFjZXMuCisKKyBAc2VjdGlvbiBfY29uc3Rh
bnRzIENvbnN0YW50cworICBAcmVmIGdycFJlbGF0aW9ucworCisgQHNlY3Rpb24gX21pc2MgTWlz
Y2VsbGFuZW91cworICBAcmVmIF9saWNlbnNlUGFnZSAiQlNEIExpY2Vuc2UiXG4KKyAgQHJlZiBf
Z2VuZXJhbEluZm8gIkdlbmVyYWwgSW5mb3JtYXRpb24iXG4KKworIEBwYWdlIF9saWNlbnNlUGFn
ZSBCU0QgTGljZW5zZQorICAlSUFjY2Vzc2libGUyIElETCBTcGVjaWZpY2F0aW9uCisKKyAgQ29w
eXJpZ2h0IChjKSAyMDA3LCAyMDEzIExpbnV4IEZvdW5kYXRpb25cbgorICBDb3B5cmlnaHQgKGMp
IDIwMDYgSUJNIENvcnBvcmF0aW9uXG4KKyAgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IFN1biBN
aWNyb3N5c3RlbXMsIEluYy5cbgorICBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dCAKKyAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIAorICBhcmUgbWV0OiAKKyAgICAKKyAgIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IAorICAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLiAKKyAKKyAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgCisgICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyAKKyAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyAKKyAgICAgIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4gCisgCisgICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBMaW51eCBG
b3VuZGF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRzIAorICAgICAgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyAKKyAgICAgIGRlcml2ZWQgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiAKKyAgICAgIHBl
cm1pc3Npb24uIAorIAorICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgCisgIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIAorICBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIAorICBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCisgIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCAKKyAgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IAor
ICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSAKKyAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIAorICBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgCisgIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIAorICBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAKKyAgVGhpcyBCU0QgTGljZW5zZSBjb25mb3JtcyB0
byB0aGUgT3BlbiBTb3VyY2UgSW5pdGlhdGl2ZSAiU2ltcGxpZmllZCAKKyAgQlNEIExpY2Vuc2Ui
IGFzIHB1Ymxpc2hlZCBhdDogCisgIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv
YnNkLWxpY2Vuc2UucGhwIAorIAorICAlSUFjY2Vzc2libGUyIGlzIGEgdHJhZGVtYXJrIG9mIHRo
ZSBMaW51eCBGb3VuZGF0aW9uLiBUaGUgJUlBY2Nlc3NpYmxlMiAKKyAgbWFyayBtYXkgYmUgdXNl
ZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlCisgIDxhIGhyZWY9Imh0dHA6Ly93d3cubGludXhmb3Vu
ZGF0aW9uLm9yZy9jb2xsYWJvcmF0ZS93b3JrZ3JvdXBzL2FjY2Vzc2liaWxpdHkvdHJhZGVtYXJr
LXBvbGljeSI+CisgIExpbnV4IEZvdW5kYXRpb24gVHJhZGVtYXJrIFBvbGljeTwvYT4gdG8gaW5k
aWNhdGUgY29tcGxpYW5jZSB3aXRoIHRoZSAlSUFjY2Vzc2libGUyIHNwZWNpZmljYXRpb24uIAor
CisgQHBhZ2UgX2dlbmVyYWxJbmZvIEdlbmVyYWwgSW5mb3JtYXRpb24gCisgIFRoZSBmb2xsb3dp
bmcgaW5mb3JtYXRpb24gaXMgYXBwbGljYWJsZSB0byB0d28gb3IgbW9yZSBpbnRlcmZhY2VzLgor
CisgQHJlZiBfZXJyb3JzXG4KKyBAcmVmIF9tZW1vcnlcbgorICZuYnNwOyZuYnNwO0ByZWYgX2Fy
cmF5Q29uc2lkZXJhdGlvblxuCisgQHJlZiBfaW5kZXhlc1xuCisgQHJlZiBfZW51bXNcbgorIEBy
ZWYgX3NwZWNpYWxPZmZzZXRzXG4KKyBAcmVmIF9kaWNvdmVyaW5nSW50ZXJmYWNlc1xuCisgQHJl
ZiBfY2hhbmdpbmdJbnRlcmZhY2VzXG4KKyBAcmVmIF9hcHBsaWNhdGlvbkluZm9cbgorIEByZWYg
X2NoaWxkSURzXG4KKyBAcmVmIF92YXJpYW50c1xuCisgQHJlZiBfaWFhY3Rpb24taWFoeXBlcmxp
bmtcbgorIEByZWYgX3RyYWRlbWFyaworCisgQHNlY3Rpb24gX2Vycm9ycyBFcnJvciBIYW5kbGlu
ZworICBIUkVTVUxUIHZhbHVlcyBhcmUgZGVmaW5lZCBieSB0aGUgTWljcm9zb2Z0JnJlZzsgV2lu
MzImcmVnOyBBUEkuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVmZXIgdG8KKyAgPGEgaHJlZj0i
aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9h
YTM3ODEzNyUyOHY9dnMuODUlMjkuYXNweCI+CisgIEludGVycHJldGluZyBIUkVTVUxUIFZhbHVl
czwvYT4gaW4gTVNETiZyZWc7LgorCisgIE5vdGUgdGhhdCB0aGUgU19GQUxTRSByZXR1cm4gdmFs
dWUgaXMgY29uc2lkZXJlZCBhIG5vbi1lcnJvciB2YWx1ZSBhbmQgdGhlIAorICBTVUNDRUVERUQg
bWFjcm8gd2lsbCByZXR1cm4gVFJVRS4gIFNfRkFMU0UgaXMgdXNlZCB3aGVuIHRoZXJlIGlzIG5v
IGZhaWx1cmUKKyAgYnV0IHRoZXJlIHdhcyBub3RoaW5nIHZhbGlkIHRvIHJldHVybiwgZS5nLiBp
biBJQWNjZXNzaWJsZTI6OmF0dHJpYnV0ZXMgd2hlbgorICB0aGVyZSBhcmUgbm8gYXR0cmlidXRl
cy4gIFdoZW4gU19GQUxTRSBpcyByZXR1cm5lZCBbb3V0XSBwb2ludGVyIHR5cGVzIHNob3VsZCAK
KyAgYmUgTlVMTCBhbmQgW291dF0gbG9uZ3Mgc2hvdWxkIGdlbmVyYWxseSBiZSAwLCBidXQgc29t
ZXRpbWVzIC0xIGlzIHVzZWQgc3VjaAorICBhcyBJQWNjZXNzaWJsZTI6OmluZGV4SW5QYXJlbnQs
IElBY2Nlc3NpYmxlVGV4dDo6Y2FyZXRPZmZzZXQsIGFuZAorICBJQWNjZXNzaWJsZUh5cGVydGV4
dDo6aHlwZXJsaW5rSW5kZXguCisKKyAgTm90ZSB0aGF0IGZvciBCU1RSIFtvdXRdIHZhcmlhYmxl
cyBjb21tb24gQ09NIHByYWN0aWNlIGlzIHRoYXQgdGhlIHNlcnZlciBkb2VzIAorICB0aGUgU3lz
QWxsb2NTdHJpbmcgYW5kIHRoZSBjbGllbnQgZG9lcyB0aGUgU3lzRnJlZVN0cmluZy4gIEFsc28g
bm90ZSB0aGF0IHdoZW4KKyAgTlVMTCBpcyByZXR1cm5lZCB0aGVyZSBpcyBubyBuZWVkIGZvciB0
aGUgY2xpZW50IHRvIGNhbGwgU3lzRnJlZVN0cmluZy4gIFBsZWFzZQorICByZWZlciB0byB0aGUg
ZG9jdW1lbnRhdGlvbiBmb3IgZWFjaCBtZXRob2QgZm9yIG1vcmUgZGV0YWlscyByZWdhcmRpbmcg
ZXJyb3IgaGFuZGxpbmcuCisKKyBAc2VjdGlvbiBfbWVtb3J5IE1lbW9yeSBNYW5hZ2VtZW50Cisg
IFRoZSBmb2xsb3dpbmcgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzIHNob3VsZCBiZSBjb25zaWRl
cmVkOgorICBAbGkgQWx0aG91Z2ggW291dF0gQlNUUiB2YXJpYWJsZXMgYXJlIGRlY2xhcmVkIGJ5
IHRoZSBjbGllbnQsIHRoZWlyIHNwYWNlIGlzIAorICAgYWxsb2NhdGVkIGJ5IHRoZSBzZXJ2ZXIu
ICBUaGV5IG5lZWQgdG8gYmUgZnJlZWQgd2l0aCBTeXNGcmVlU3RyaW5nIGJ5IHRoZSAKKyAgIGNs
aWVudCBhdCBlbmQgb2YgbGlmZTsgdGhlIHNhbWUgaXMgdHJ1ZSB3aGVuIEJTVFJzIGFyZSB1c2Vk
IGluIHN0cnVjdHMgb3IgCisgICBhcnJheXMgd2hpY2ggYXJlIHBhc3NlZCB0byB0aGUgc2VydmVy
LgorICBAbGkgSWYgdGhlcmUgaXMgbm8gdmFsaWQgW291dF0gQlNUUiB0byByZXR1cm4sIHRoZSBz
ZXJ2ZXIgc2hvdWxkIHJldHVybiBTX0ZBTFNFIGFuZCAKKyAgIGFzc2lnbiBOVUxMIHRvIHRoZSBv
dXRwdXQsIGUuZy4gKnRoZU91dEJTVFIgPSBOVUxMOy4gCisgIEBsaSBDT00gaW50ZXJmYWNlcyBu
ZWVkIHRvIGJlIHJlZmVyZW5jZWQgd2l0aCBBZGRSZWYgd2hlbiB1c2VkIGFuZCBkZXJlZmVyZW5j
ZWQKKyAgIHdpdGggUmVsZWFzZSBhdCBlbmQgb2YgbGlmZS4KKyAgQGxpIFNpbmdsZSBbb3V0XSBs
b25ncywgSFdORHMsIGJvb2xlYW5zLCBhbmQgc3RydWN0cyBhcmUgZGVjbGFyZWQgYnkgdGhlIGNh
bGxlcgorICAgYW5kIHBhc3NlZCBieSByZWZlcmVuY2UuIFRoZSBtYXJzaGFsbGVyIGRvZXMgYWxs
IHRoZSBtZW1vcnkgbWFuYWdlbWVudC4KKyAgCisgIFRoZSBmb2xsb3dpbmcgYXJ0aWNsZXMgbWF5
IGJlIGhlbHBmdWwgZm9yIHVuZGVyc3RhbmRpbmcgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzOgor
ICBAbGkgQW4gYXJ0aWNsZSBieSBEb24gQm94IGluIGEKKyAgIDxhIGhyZWY9Imh0dHA6Ly93d3cu
bWljcm9zb2Z0LmNvbS9tc2ovMTE5Ni9hY3RpdmV4MTE5Ni5hc3B4Ij5RICYgQSBzZWN0aW9uPC9h
PgorICAgb2YgdGhlIE5vdmVtYmVyIDE5OTYgZWRpdGlvbiBvZiB0aGUgTWljcm9zb2Z0IFN5c3Rl
bXMgSm91cm5hbC4KKyAgQGxpIEEgcG9zdGluZyB0byBhIENvZGVHdXJ1IGZvcnVtLCAKKyAgIDxh
IGhyZWY9Imh0dHA6Ly93d3cuY29kZWd1cnUuY29tL2ZvcnVtL3Nob3d0aHJlYWQucGhwP3Q9MzY0
NTExIj5XaW5kb3dzIFNESyAKKyAgIFN0cmluZzogV2hhdCBhcmUgdGhlIHJ1bGVzIGZvciBCU1RS
IGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbj88L2E+CisKKyBAc3Vic2VjdGlvbiBfYXJyYXlD
b25zaWRlcmF0aW9uIFNwZWNpYWwgQ29uc2lkZXJhdGlvbiB3aGVuIHVzaW5nIEFycmF5cworICBU
aGVyZSBhcmUgc2V2ZXJhbCBtZXRob2RzIHdoaWNoIHJldHVybiBhcnJheXMuICBJbiB0aGUgY2Fz
ZSBvZiBJQWNjZXNzaWJsZTI6OnJlbGF0aW9ucworICBhbmQgSUFjY2Vzc2libGVSZWxhdGlvbjo6
dGFyZ2V0cyB0aGUgY2xpZW50IG11c3QgYWxsb2NhdGUgYW5kIGZyZWUgdGhlIGFycmF5cy4KKwor
ICBGb3IgdGhlIHJlbWFpbmluZyBtZXRob2RzIHdoaWNoIHJldHVybiBhcnJheXMsIHRoZSBzZXJ2
ZXIgbXVzdCBhbGxvY2F0ZSB0aGUgYXJyYXkKKyAgYW5kIHRoZSBjbGllbnQgbXVzdCBmcmVlIHRo
ZSBhcnJheSB3aGVuIG5vIGxvbmdlciBuZWVkZWQuICBUaGVzZSBtZXRob2RzIGFyZQorICBJQWNj
ZXNzaWJsZTI6OmV4dGVuZGVkU3RhdGVzLCBJQWNjZXNzaWJsZTI6OmxvY2FsaXplZEV4dGVuZGVk
U3RhdGVzLAorICBJQWNjZXNzaWJsZTJfMjo6cmVsYXRpb25UYXJnZXRzT2ZUeXBlLCBJQWNjZXNz
aWJsZUFjdGlvbjo6a2V5QmluZGluZywgCisgIElBY2Nlc3NpYmxlSHlwZXJ0ZXh0Mjo6aHlwZXJs
aW5rcywgSUFjY2Vzc2libGVUYWJsZTo6c2VsZWN0ZWRDaGlsZHJlbiwgCisgIElBY2Nlc3NpYmxl
VGFibGU6OnNlbGVjdGVkQ29sdW1ucywgSUFjY2Vzc2libGVUYWJsZTo6c2VsZWN0ZWRSb3dzLAor
ICBJQWNjZXNzaWJsZVRhYmxlMjo6c2VsZWN0ZWRDZWxscywgSUFjY2Vzc2libGVUYWJsZTI6OnNl
bGVjdGVkQ29sdW1ucywKKyAgSUFjY2Vzc2libGVUYWJsZTI6OnNlbGVjdGVkUm93cywgSUFjY2Vz
c2libGVUYWJsZUNlbGw6OmNvbHVtbkhlYWRlckNlbGxzLAorICBhbmQgSUFjY2Vzc2libGVUYWJs
ZUNlbGw6OnJvd0hlYWRlckNlbGxzLgorICBGb3IgdGhvc2UgbWV0aG9kcywgdGhlIHNlcnZlciBt
dXN0IGFsbG9jYXRlIGJvdGggdGhlIHRvcCBsZXZlbCBhcnJheSBhbmQgYW55IHN0b3JhZ2UgCisg
IGFzc29jaWF0ZWQgd2l0aCBpdCwgZS5nLiBmb3IgQlNUUnMuICBUaGUgc2VydmVyIG11c3QgYWxs
b2NhdGUgdGhlIGFycmF5cyB3aXRoIAorICBDb1Rhc2tNZW1BbGxvYyBhbmQgYW55IEJTVFJzIHdp
dGggU3lzQWxsb2NTdHJpbmcuICBUaGUgY2xpZW50IG11c3QgdXNlIENvVGFza01lbUZyZWUKKyAg
dG8gZnJlZSB0aGUgYXJyYXkgYW5kIGFueSBCU1RScyBtdXN0IGJlIGZyZWVkIHdpdGggU3lzRnJl
ZVN0cmluZy4gIAorICAKKyAgQWxzbywgdGhlIElETCBmb3IgSUFjY2Vzc2libGUyOjpleHRlbmRl
ZFN0YXRlcywgSUFjY2Vzc2libGUyOjpsb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcywgCisgIElBY2Nl
c3NpYmxlQWN0aW9uOjprZXlCaW5kaW5nLCBJQWNjZXNzaWJsZVRhYmxlOjpzZWxlY3RlZENoaWxk
cmVuLCAKKyAgSUFjY2Vzc2libGVUYWJsZTo6c2VsZWN0ZWRDb2x1bW5zLCBhbmQgSUFjY2Vzc2li
bGVUYWJsZTo6c2VsZWN0ZWRSb3dzIGluY2x1ZGVzIGFuCisgIGV4dHJhbmVvdXMgW2luXSBwYXJh
bWV0ZXIgZm9yIHRoZSBjYWxsZXIgdG8gc3BlY2lmeSB0aGUgbWF4IHNpemUgb2YgdGhlIGFycmF5
LgorICBUaGlzIHBhcmFtZXRlciB3aWxsIGJlIGlnbm9yZWQgYnkgdGhlIENPTSBzZXJ2ZXIuCisK
KyBAc2VjdGlvbiBfaW5kZXhlcyBaZXJvIGFuZCBPbmUgQmFzZWQgSW5kZXhlcworICBVbmxlc3Mg
b3RoZXJ3aXNlIHNwZWNpZmllZCBhbGwgb2Zmc2V0cyBhbmQgaW5kZXhlcyBhcmUgMCBiYXNlZC4g
CisKKyBAc2VjdGlvbiBfZW51bXMgRW51bXMKKyAgTm90ZSB0aGF0IGVudW1zIHN0YXJ0IGF0IDAu
CisKKyBAc2VjdGlvbiBfc3BlY2lhbE9mZnNldHMgU3BlY2lhbCBPZmZzZXRzIGZvciB1c2UgaW4g
dGhlIElBY2Nlc3NpYmxlVGV4dCBhbmQgSUFjY2Vzc2libGVFZGl0YWJsZVRleHQgTWV0aG9kcwor
ICBJQWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0IGNhbiB1c2Ugb25l
IG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZworICBzcGVjaWFsIG9mZnNldCB2YWx1ZXMuICBUaGV5
IGFyZSBkZWZpbmVkIGluIHRoZSA6OklBMlRleHRTcGVjaWFsT2Zmc2V0cyBlbnVtLgorICBAbGkg
VXNpbmcgOjpJQTJfVEVYVF9PRkZTRVRfTEVOR1RIICgtMSkgYXMgYW4gb2Zmc2V0IGluIGFueSBv
ZiB0aGUgSUFjY2Vzc2libGVUZXh0IG9yCisgICBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dCBtZXRo
b2RzIGlzIHRoZSBzYW1lIGFzIHNwZWNpZnlpbmcgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLgor
ICBAbGkgVXNpbmcgOjpJQTJfVEVYVF9PRkZTRVRfQ0FSRVQgKC0yKSBhcyBhbiBvZmZzZXQgZm9y
IElBY2Nlc3NpYmxlVGV4dDo6dGV4dEJlZm9yZU9mZnNldCwgCisgICBJQWNjZXNzaWJsZVRleHQ6
OnRleHRBdE9mZnNldCwgYW5kIElBY2Nlc3NpYmxlVGV4dDo6dGV4dEFmdGVyT2Zmc2V0IGluZGlj
YXRlcyB0aGF0IHRoZSAKKyAgIHRleHQgcmVsYXRlZCB0byB0aGUgcGh5c2ljYWwgbG9jYXRpb24g
b2YgdGhlIGNhcmV0IHNob3VsZCBiZSB1c2VkLiAgVGhpcyBpcyBuZWVkZWQgZm9yIAorICAgYXBw
bGljYXRpb25zIHRoYXQgY29uc2lkZXIgdGhlIGNoYXJhY3RlciBvZmZzZXQgb2YgdGhlIGVuZCBv
ZiBvbmUgbGluZSAoYXMgcmVhY2hlZCBieSAKKyAgIHByZXNzaW5nIHRoZSBFbmQga2V5KSB0aGUg
c2FtZSBhcyB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb24gdGhlIG5leHQgbGlu
ZS4KKyAgIFNpbmNlIHRoZSBzYW1lIG9mZnNldCBpcyBhc3NvY2lhdGVkIHdpdGggdHdvIGRpZmZl
cmVudCBsaW5lcyBhIHNwZWNpYWwgbWVhbnMgaXMgbmVlZGVkIAorICAgdG8gZmV0Y2ggdGV4dCBm
cm9tIHRoZSBsaW5lIHdoZXJlIHRoZSBjYXJldCBpcyBwaHlzaWNhbGx5IGxvY2F0ZWQuCisKKyBA
c2VjdGlvbiBfZGljb3ZlcmluZ0ludGVyZmFjZXMgRGlzY292ZXJ5IG9mIEludGVyZmFjZXMKKyAg
SW4gZ2VuZXJhbCBBVCAoQXNzaXN0aXZlIFRlY2hub2xvZ3kpIHNob3VsZCB0cnkgSUFjY2Vzc2li
bGUyIGludGVyZmFjZXMsIGZvbGxvd2VkIGJ5IHVzaW5nIAorICB0aGUgTVNBQSAoTWljcm9zb2Z0
JnJlZzsgQWN0aXZlIEFjY2Vzc2liaWxpdHkmcmVnOykgaW50ZXJmYWNlcy4gIChJbiBjYXNlcyB3
aGVyZSB0aGUgYW4gYXBwbGljYXRpb24KKyAgaXMga25vd24gdG8gaGF2ZSBjdXN0b20gaW50ZXJm
YWNlcyB3aGljaCBwcm92aWRlIGluZm9ybWF0aW9uIG5vdCBzdXBwbGllZCBieSBJQWNjZXNzaWJs
ZTIKKyAgb3IgTVNBQSwgdGhlbiB0aG9zZSBjdXN0b20gaW50ZXJmYWNlcyBjYW4gYmUgdXNlZC4p
ICBUaGUgQVQgY2FuIHRoZW4sIGJ5IGRlZmF1bHQsIHN1cHBvcnQKKyAgdW5rbm93biBJQWNjZXNz
aWJsZTIvTVNBQSBhcHBsaWNhdGlvbnMsIHdpdGhvdXQgdGhlIGFwcGxpY2F0aW9uIGRldmVsb3Bl
cnMgaGF2aW5nIHRvIHJlcXVlc3QKKyAgQVQgdmVuZG9ycyBmb3Igc3VwcG9ydCBvbiBhbiBpbmRp
dmlkdWFsIGFwcGxpY2F0aW9uIGJ5IGFwcGxpY2F0aW9uIGJhc2lzLgorCisgIFdoZW4geW91IGhh
dmUgYSByZWZlcmVuY2UgdG8gYW4gSUFjY2Vzc2libGUgYW5kIHJlcXVpcmUgYSByZWZlcmVuY2Ug
dG8gYW4gSUFjY2Vzc2libGUyIHVzZSAKKyAgUXVlcnlTZXJ2aWNlIGFzIGZvbGxvd3M6CisgIEBj
b2RlCisgIC8vIHBBY2MgaXMgYSByZWZlcmVuY2UgdG8gdGhlIGFjY2Vzc2libGUgb2JqZWN0J3Mg
SUFjY2Vzc2libGUgaW50ZXJmYWNlLiAKKyAgSVNlcnZpY2VQcm92aWRlciAqcFNlcnZpY2UgPSBO
VUxMOyAKKyAgaHIgPSBwQWNjLT5RdWVyeUludGVyZmFjZShJSURfSVNlcnZpY2VQcm92aWRlciwg
KHZvaWQgKiopJnBTZXJ2aWNlKTsgCisgIGlmKFNVQ0NFRURFRChocikpIHsgCisgICAgSUFjY2Vz
c2libGUyICpwSUEyID0gTlVMTDsgCisgICAgaHIgPSBwU2VydmljZS0+UXVlcnlTZXJ2aWNlKElJ
RF9JQWNjZXNzaWJsZSwgSUlEX0lBY2Nlc3NpYmxlMiwgKHZvaWQqKikmcElBMik7IAorICAgIGlm
IChTVUNDRUVERUQoaHIpICYmIHBJQTIpIHsgCisgICAgICAvLyBUaGUgY29udHJvbCBzdXBwb3J0
cyBJQWNjZXNzaWJsZTIuIAorICAgICAgLy8gcElBMiBpcyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBh
Y2Nlc3NpYmxlIG9iamVjdCdzIElBY2Nlc3NpYmxlMiBpbnRlcmZhY2UuCisgICAgfSAKKyAgfSAK
KyAgQGVuZGNvZGUKKworICBAc2VjdGlvbiBfY2hhbmdpbmdJbnRlcmZhY2VzIENoYW5naW5nIGJl
dHdlZW4gQWNjZXNzaWJsZSBJbnRlcmZhY2VzCisgIE5vdGUgdGhhdCBkZXZlbG9wZXJzIG11c3Qg
YWx3YXlzIGltcGxlbWVudCBNU0FBJ3MgSUFjY2Vzc2libGUgYW5kLCBpZiBuZWVkZWQsIHNvbWUK
KyAgb2YgdGhlIGludGVyZmFjZXMgaW4gdGhlIHNldCBvZiBJQWNjZXNzaWJsZTIgaW50ZXJmYWNl
cy4gIEFsdGhvdWdoIHRoZSBJQWNjZXNzaWJsZTIKKyAgSURMIGlzIGNvZGVkIHN1Y2ggdGhhdCBJ
QWNjZXNzaWJsZTIgaXMgYSBzdWJjbGFzcyBvZiBNU0FBJ3MgSUFjY2Vzc2libGUsIG5vbmUgb2YK
KyAgTVNBQSdzIElBY2Nlc3NpYmxlIG1ldGhvZHMgYXJlIHJlZGVmaW5lZCBieSBJQWNjZXNzaWJs
ZTIuCisKKyAgUXVlcnlTZXJ2aWNlIG11c3QgYmUgdXNlZCB0byBzd2l0Y2ggZnJvbSBhIHJlZmVy
ZW5jZSB0byBhbiBNU0FBIElBY2Nlc3NpYmxlIGludGVyZmFjZSAKKyAgdG8gYW5vdGhlciBpbnRl
cmZhY2UuICBUaGlzIGhhcyBiZWVuIAorICA8YSBocmVmPSJodHRwOi8vd3d3LmF0aWEub3JnL2Zp
bGVzL3B1YmxpYy9JbnRyb2R1Y2luZ19JQWNjZXNzaWJsZUV4LmRvYyI+CisgIGRvY3VtZW50ZWQ8
L2E+IGFuZCB0aGUgcGVydGluZW50IGZhY3RzIGhhdmUgYmVlbiBleHRyYWN0ZWQgYmVsb3c6IAor
CisgIEBwYXIgCisgICBXaHkgdXNlIFF1ZXJ5U2VydmljZSBpbnN0ZWFkIG9mIGp1c3QgdXNpbmcg
UXVlcnlJbnRlcmZhY2UgdG8gZ2V0IElBY2Nlc3NpYmxlRXggCisgICBkaXJlY3RseT8gVGhlIHJl
YXNvbiBpcyB0aGF0IHNpbmNlIE1TQUEgMi4wLCBjbGllbnRzIGRvbid0IHRhbGsgdG8gYSBzZXJ2
ZXIncyAKKyAgIElBY2Nlc3NpYmxlIGludGVyZmFjZSBkaXJlY3RseTsgaW5zdGVhZCB0aGV5IHRh
bGsgdG8gYW4gaW50ZXJtZWRpYXRlIE1TQUEtcHJvdmlkZWQgCisgICB3cmFwcGVyIHRoYXQgY2Fs
bHMgdGhyb3VnaCB0byB0aGUgb3JpZ2luYWwgSUFjY2Vzc2libGUuIFRoaXMgd3JhcHBlciBwcm92
aWRlcyBzZXJ2aWNlcyAKKyAgIHN1Y2ggYXMgaW1wbGVtZW50aW5nIElEaXNwYXRjaCwgc3VwcGx5
aW5nIGluZm9ybWF0aW9uIGZyb20gTVNBQSAyLjAncyBEeW5hbWljIEFubm90YXRpb24gCisgICBz
ZXJ2aWNlLCBhbmQgc2NhbGluZyBsb2NhdGlvbnMgd2hlbiBydW5uaW5nIG9uIFdpbmRvd3MgVmlz
dGEgd2l0aCBEUEkgc2NhbGluZyBlbmFibGVkLiAKKyAgIFF1ZXJ5U2VydmljZSBpcyB0aGUgc3Vw
cG9ydGVkIHdheSB0byBleHBvc2UgYWRkaXRpb25hbCBpbnRlcmZhY2VzIGZyb20gYW4gZXhpc3Rp
bmcgCisgICBJQWNjZXNzaWJsZSBhbmQgd2FzIG9yaWdpbmFsbHkgdXNlZCBieSBNU0hUTUwgdG8g
ZXhwb3NlIElIVE1MRWxlbWVudCBvYmplY3RzIGNvcnJlc3BvbmRpbmcgCisgICB0byBJQWNjZXNz
aWJsZXMuIFF1ZXJ5U2VydmljZSBpcyBvZnRlbiBtb3JlIGNvbnZlbmllbnQgZm9yIHNlcnZlcnMg
dG8gaW1wbGVtZW50IHRoYW4gCisgICBRdWVyeUludGVyZmFjZSBiZWNhdXNlIGl0IGRvZXMgbm90
IGhhdmUgdGhlIHNhbWUgcmVxdWlyZW1lbnRzIGZvciBwcmVzZXJ2aW5nIG9iamVjdCAKKyAgIGlk
ZW50aXR5IG9yIHN5bW1ldHJ5L3RyYW5zaXRpdml0eSBhcyBRdWVyeUludGVyZmFjZSwgc28gUXVl
cnlTZXJ2aWNlIGFsbG93cyBzZXJ2ZXJzIHRvIAorICAgZWFzaWx5IGltcGxlbWVudCB0aGUgaW50
ZXJmYWNlIG9uIHRoZSBzYW1lIG9iamVjdCBvciBhIHNlcGFyYXRlIG9iamVjdC4gVGhlIGxhdHRl
ciBpcyAKKyAgIG9mdGVuIGhhcmQgdG8gZG8gd2l0aCBRdWVyeUludGVyZmFjZSB1bmxlc3MgdGhl
IG9yaWdpbmFsIG9iamVjdCBzdXBwb3J0cyBhZ2dyZWdhdGlvbi4gCisKKyAgVHdvIHJlbGF0ZWQg
cmVmZXJlbmNlcyBpbiBNU0ROJnJlZzsgYXJlOiAKKyAgQGxpIDxhIGhyZWY9Imh0dHA6Ly9tc2Ru
Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9tczY5NjA3OChWUy44NSkuYXNweCI+CisgICJV
c2luZyBRdWVyeVNlcnZpY2UgdG8gZXhwb3NlIGEgbmF0aXZlIG9iamVjdCBtb2RlbCBpbnRlcmZh
Y2UgZm9yIGFuIElBY2Nlc3NpYmxlIG9iamVjdCI8L2E+CisgIEBsaSA8YSBocmVmPSJodHRwOi8v
bXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1Mjg0MTUuYXNweCNhY2Nfb2JqIj4g
CisgICJBY2Nlc3NpbmcgdGhlIEludGVybmV0IEV4cGxvcmVyIE9iamVjdCBBc3NvY2lhdGVkIHdp
dGggYW4gQWNjZXNzaWJsZSBPYmplY3QiPC9hPgorCisgIEJhc2VkIG9uIHRoaXMgaW5mb3JtYXRp
b24gZnJvbSBNaWNyb3NvZnQsIFF1ZXJ5U2VydmljZSBtdXN0IGJlIHVzZWQgdG8gc3dpdGNoIGJh
Y2sgYW5kIGZvcnRoIAorICBiZXR3ZWVuIGEgcmVmZXJlbmNlIHRvIGFuIE1TQUEgSUFjY2Vzc2li
bGUgaW50ZXJmYWNlIGFuZCBhbnkgb2YgdGhlIElBY2Nlc3NpYmxlMiBpbnRlcmZhY2VzLiAKKwor
ICBSZWdhcmRpbmcgc3dpdGNoaW5nIGJldHdlZW4gYW55IG9mIHRoZSBJQWNjZXNzaWJsZTIgaW50
ZXJmYWNlcywgYXBwbGljYXRpb25zIGltcGxlbWVudGluZworICBJQWNjZXNzaWJsZTIgc2hvdWxk
IGltcGxlbWVudCB0aGUgSUFjY2Vzc2libGUyIGludGVyZmFjZXMgb24gYSBzaW5nbGUgb2JqZWN0
IHNpbmNlIEFUcworICB3aWxsIGJlIHVzaW5nIFF1ZXJ5SW50ZXJmYWNlIHRvIHN3aXRjaCBiZXR3
ZWVuIHRoZSBJQWNjZXNzaWxiZTIgaW50ZXJmYWNlcy4gIEltcGxlbWVudGluZworICB0aGUgSUFj
Y2Vzc2libGUyIGludGVyZmFjZXMgb24gc2VwYXJhdGUgb2JqZWN0cyB3b3VsZCByZXF1aXJlIHRo
ZSB1c2Ugb2YgUXVlcnlTZXJ2aWNlLgorICBUaGVyZSBpcyBvbmUgZXhjZXB0aW9uLCBJQWNjZXNz
aWJsZUFwcGxpY2F0aW9uIGNhbiBiZSBpbXBsZW1lbnRlZCBvbiBhIHNlcGFyYXRlIG9iamVjdCBz
bworICBpdHMgY29tbW9uIGNvZGUgZG9lc24ndCBoYXZlIHRvIGJlIGluY2x1ZGVkIGluIGVhY2gg
YWNjZXNzaWJsZSBvYmplY3QuICBBVHMgc2hvdWxkIHVzZQorICBRdWVyeVNlcnZpY2UgdG8gYWNj
ZXNzIElBY2Nlc3NpYmxlQXBwbGljYXRpb24uCisKKyBAc2VjdGlvbiBfYXBwbGljYXRpb25JbmZv
IEFjY2VzcyB0byBJbmZvcm1hdGlvbiBhYm91dCB0aGUgQXBwbGljYXRpb24KKyAgU2VydmVycyBp
bXBsZW1lbnRpbmcgSUFjY2Vzc2libGUyIHNob3VsZCBwcm92aWRlIGFjY2VzcyB0byB0aGUgSUFj
Y2Vzc2libGVBcHBsaWNhdGlvbiAKKyAgaW50ZXJmYWNlIHZpYSBRdWVyeVNlcnZpY2UgZnJvbSBh
bnkgb2JqZWN0IHNvIHRoYXQgQVRzIGNhbiBlYXNpbHkgZGV0ZXJtaW5lIHNwZWNpZmljIAorICBp
bmZvcm1hdGlvbiBhYm91dCB0aGUgYXBwbGljYXRpb24gc3VjaCBhcyBpdHMgbmFtZSBvciB2ZXJz
aW9uLgorCisgQHNlY3Rpb24gX2NoaWxkSURzIENoaWxkIElEcworICBUaGUgSUFjY2Vzc2libGUy
IGludGVyZmFjZXMgZG8gbm90IHN1cHBvcnQgY2hpbGQgSURzLCBpLmUuIHNpbXBsZSBjaGlsZCBl
bGVtZW50cy4KKyAgRnVsbCBhY2Nlc3NpYmxlIG9iamVjdHMgbXVzdCBiZSBjcmVhdGVkIGZvciBl
YWNoIG9iamVjdCB0aGF0IHN1cHBvcnRzIElBY2Nlc3NpYmxlMi4KKyAgVGhlcmVmb3JlIE1TQUEn
cyBnZXRfYWNjQ2hpbGQgc2hvdWxkIG5ldmVyIHJldHVybiBhIGNoaWxkIElEIChvdGhlciB0aGFu
IENISUxESURfU0VMRikKKyAgZm9yIGFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgYW55IG9mIHRo
ZSBJQWNjZXNzaWJsZTIgaW50ZXJmYWNlcy4KKworICBNaWNyb3NvZnQncyBVSSBBdXRvbWF0aW9u
IHNwZWNpZmljYXRpb24gaGFzIHRoZSBzYW1lIGxpbWl0YXRpb24gYW5kIHRoaXMgd2FzIHJlc29s
dmVkCisgIGluIHRoZSBVSSBBdXRvbWF0aW9uIEV4cHJlc3Mgc3BlY2lmaWNhdGlvbiBieSBhZGRp
bmcgSUFjY2Vzc2libGVFeDo6R2V0T2JqZWN0Rm9yQ2hpbGQKKyAgYW5kIElBY2Nlc3NpYmxlRXg6
OkdldElBY2Nlc3NpYmxlUGFpci4gIFRoZXNlIG1ldGhvZHMgYWxsb3cgbWFwcGluZyBiYWNrIGFu
ZCBmb3J0aCAKKyAgYmV0d2VlbiBhbiBJQWNjZXNzaWJsZUV4IGFuZCBhbiB7SUFjY2Vzc2libGUs
IENoaWxkIElEfSBwYWlyLiAgQSBmdXR1cmUgdmVyc2lvbiBvZiAKKyAgSUFjY2Vzc2libGUyIG1h
eSBpbmNsdWRlIHNpbWlsYXIgbWV0aG9kcyB0byBtYXAgYmFjayBhbmQgZm9ydGggYmV0d2VlbiBh
biBJQWNjZXNzaWJsZTIKKyAgYW5kIGFuIHtJQWNjZXNzaWJsZSwgQ2hpbGQgSUR9IHBhaXIuCisK
KyBAc2VjdGlvbiBfdmFyaWFudHMgVkFSSUFOVHMKKyAgU29tZSBtZXRob2RzIHJldHVybiBhIFZB
UklBTlQuICBJbXBsZW1lbnRlcnMgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmV0dXJuIHR5
cGUgaXMgCisgIHNwZWNpZmllZCwgaS5lLiBWVF9JNCwgVlRfSURJU1BBVENILCBldGMuICBUaGUg
bWV0aG9kcyB0aGF0IHJldHVybiBWQVJJQU5UcyBhcmUgCisgIElBY2Nlc3NpYmxlSHlwZXJsaW5r
OjphbmNob3IsIElBY2Nlc3NpYmxlSHlwZXJsaW5rOjphbmNob3JUYXJnZXQsIElBY2Nlc3NpYmxl
VmFsdWU6OmN1cnJlbnRWYWx1ZSwKKyAgSUFjY2Vzc2libGVWYWx1ZTo6bWF4aW11bVZhbHVlLCBJ
QWNjZXNzaWJsZVZhbHVlOjptaW5pbXVtVmFsdWUuCisKKyBAc2VjdGlvbiBfaWFhY3Rpb24taWFo
eXBlcmxpbmsgSUFjY2Vzc2libGVIeXBlcmxpbmsgYXMgc3ViY2xhc3Mgb2YgSUFjY2Vzc2libGVB
Y3Rpb24KKyAgSW4gdGhpcyB2ZXJzaW9uIG9mIHRoZSBJREwsIElBY2Nlc3NpYmxlSHlwZXJsaW5r
IGlzIGEgc3ViY2xhc3Mgb2YgSUFjY2Vzc2libGVBY3Rpb24uICAKKyAgSG93ZXZlciwgdGhlcmUg
aXMgbm8gcHJhY3RpY2FsIG5lZWQgZm9yIHRoYXQgaW5oZXJpdGFuY2UgYW5kIGluIHNvbWUgY2Fz
ZXMsIHN1Y2ggYXMKKyAgYW4gaW1hZ2UgbWFwIG9mIHNtYXJ0IHRhZ3MsIGl0IGRvZXNuJ3QgbWFr
ZSBzZW5zZSBiZWNhdXNlIHN1Y2ggYW4gaW1hZ2UgbWFwIGRvZXNuJ3QgCisgIGhhdmUgYWN0aW9u
YWJsZSBvYmplY3RzOyBpdCdzIHRoZSBzZWNvbmRhcnkgc21hcnQgdGFncyB0aGF0IGFyZSBhY3Rp
b25hYmxlLiAgQXMgYSAKKyAgcmVzdWx0LCBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIG5vdCByZWx5
IG9uIHRoZSBpbmhlcml0YW5jZSBhcyBpdCBtYXkgYmUgcmVtb3ZlZCBpbiAKKyAgYSBsYXRlciB2
ZXJzaW9uIG9mIHRoZSBJREwuCisKKyBAc2VjdGlvbiBfdHJhZGVtYXJrIFRyYWRlbWFyayBBdHRy
aWJ1dGlvbgorICBUaGUgbmFtZXMgb2YgYWN0dWFsIGNvbXBhbmllcyBhbmQgcHJvZHVjdHMgbWVu
dGlvbmVkIGhlcmVpbiBtYXkgYmUgdGhlIHRyYWRlbWFya3Mgb2YKKyAgdGhlaXIgcmVzcGVjdGl2
ZSBvd25lcnMuICBJbiBwYXJ0aWN1bGFyLCBBY3RpdmUgQWNjZXNzaWJpbGl0eSwgTWljcm9zb2Z0
LCBNU0ROLCBhbmQgV2luMzIKKyAgYXJlIHRyYWRlbWFya3Mgb2YgdGhlIE1pY3Jvc29mdCBncm91
cCBvZiBjb21wYW5pZXMgaW4gdGhlIFUuUy5BLiBhbmQvb3Igb3RoZXIgY291bnRyaWVzLgorCisq
Ki8KKworaW1wb3J0ICJvYmppZGwuaWRsIjsKK2ltcG9ydCAib2FpZGwuaWRsIjsKK2ltcG9ydCAi
b2xlYWNjLmlkbCI7CitpbXBvcnQgIkFjY2Vzc2libGVSZWxhdGlvbi5pZGwiOworaW1wb3J0ICJB
Y2Nlc3NpYmxlU3RhdGVzLmlkbCI7CitpbXBvcnQgIklBMkNvbW1vblR5cGVzLmlkbCI7CisKKy8q
KiBBIHN0cnVjdHVyZSBkZWZpbmluZyB0aGUgbG9jYWxlIG9mIGFuIGFjY2Vzc2libGUgb2JqZWN0
LgorIAorSUFjY2Vzc2libGUyOjpsb2NhbGUgcmV0dXJucyB0aGlzIHN0cnVjdC4KKyovCit0eXBl
ZGVmIHN0cnVjdCBJQTJMb2NhbGUgeworICBCU1RSIGxhbmd1YWdlOyAvLy88IElTTyA2MzktMSBB
bHBoYS0yIHR3byBjaGFyYWN0ZXIgbGFuZ3VhZ2UgY29kZQorICBCU1RSIGNvdW50cnk7ICAvLy88
IElTTyAzMTY2LTEgQWxwaGEtMiB0d28gY2hhcmFjdGVyIGNvdW50cnkgY29kZQorICBCU1RSIHZh
cmlhbnQ7ICAvLy88IEFwcGxpY2F0aW9uIHNwZWNpZmljIHZhcmlhbnQgb2YgdGhlIGxvY2FsZQor
fSBJQTJMb2NhbGU7CisKKy8qKiBAYnJpZWYgVGhpcyBpbnRlcmZhY2UgZXhwb3NlcyB0aGUgcHJp
bWFyeSBzZXQgb2YgaW5mb3JtYXRpb24gYWJvdXQgYW4KKyBJQWNjZXNzaWJsZTIgZW5hYmxlZCBh
Y2Nlc3NpYmxlIG9iamVjdC4KKworIFRoaXMgaW50ZXJmYWNlIG11c3QgYWx3YXlzIGJlIHByb3Zp
ZGVkIGZvciBvYmplY3RzIHRoYXQgc3VwcG9ydCBzb21lCisgcG9ydGlvbiBvZiB0aGUgY29sbGVj
dGlvbiBvZiB0aGUgJUlBY2Nlc3NpYmxlMiBpbnRlcmZhY2VzLgorCisgUGxlYXNlIHJlZmVyIHRv
IEByZWYgX2NoYW5naW5nSW50ZXJmYWNlcyAiQ2hhbmdpbmcgYmV0d2VlbiBBY2Nlc3NpYmxlIElu
dGVyZmFjZXMiCisgZm9yIHNwZWNpYWwgY29uc2lkZXJhdGlvbnMgcmVsYXRlZCB0byB1c2Ugb2Yg
dGhlIE1TQUEgSUFjY2Vzc2libGUgaW50ZXJmYWNlIGFuZCAKKyB0aGUgc2V0IG9mICVJQWNjZXNz
aWJsZTIgaW50ZXJmYWNlcy4KKyAqLworW29iamVjdCwgdXVpZChFODlGNzI2RS1DNEY0LTRjMTkt
QkIxOS1CNjQ3RDdGQTg0NzgpXQoraW50ZXJmYWNlIElBY2Nlc3NpYmxlMiA6IElBY2Nlc3NpYmxl
Cit7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYWNjZXNzaWJsZSByZWxh
dGlvbnMgZm9yIHRoaXMgb2JqZWN0LgorICAgQHBhcmFtIFtvdXRdIG5SZWxhdGlvbnMKKyAgIEBy
ZXR2YWwgU19PSworICAqLworICBbcHJvcGdldF0gSFJFU1VMVCBuUmVsYXRpb25zCisgICAgKAor
ICAgICBbb3V0LCByZXR2YWxdIGxvbmcgKm5SZWxhdGlvbnMKKyAgICApOworCisgIC8qKiBAYnJp
ZWYgUmV0dXJucyBvbmUgYWNjZXNzaWJsZSByZWxhdGlvbiBmb3IgdGhpcyBvYmplY3QuCisgICBA
cGFyYW0gW2luXSByZWxhdGlvbkluZGV4CisgICAgIDAgYmFzZWQKKyAgIEBwYXJhbSBbb3V0XSBy
ZWxhdGlvbgorICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQg
W2luXSBwYXNzZWQKKyAgKi8KKyAgW3Byb3BnZXRdIEhSRVNVTFQgcmVsYXRpb24KKyAgICAoCisg
ICAgIFtpbl0gbG9uZyByZWxhdGlvbkluZGV4LAorICAgICBbb3V0LCByZXR2YWxdIElBY2Nlc3Np
YmxlUmVsYXRpb24gKipyZWxhdGlvbgorICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIG11
bHRpcGxlIGFjY2Vzc2libGUgcmVsYXRpb25zIGZvciB0aGlzIG9iamVjdC4KKyAgIEBwYXJhbSBb
aW5dIG1heFJlbGF0aW9ucworICAgICBtYXhpbXVtIHNpemUgb2YgdGhlIGFycmF5IGFsbG9jYXRl
ZCBieSB0aGUgY2xpZW50CisgICBAcGFyYW0gW291dF0gcmVsYXRpb25zCisgICAgVGhlIGFycmF5
IG9mIGFjY2Vzc2libGUgcmVsYXRpb24gb2JqZWN0cy4gIE5vdGUgdGhhdCB0aGlzIGFycmF5IGlz
IHRvIGJlCisgICAgYWxsb2NhdGVkIGJ5IHRoZSBjbGllbnQgYW5kIGZyZWVkIHdoZW4gbm8gbG9u
Z2VyIG5lZWRlZC4gIFJlZmVyIHRvIEByZWYgCisgICAgX2FycmF5Q29uc2lkZXJhdGlvbiAiU3Bl
Y2lhbCBDb25zaWRlcmF0aW9uIHdoZW4gdXNpbmcgQXJyYXlzIiBmb3IgbW9yZSBkZXRhaWxzLgor
ICAgQHBhcmFtIFtvdXRdIG5SZWxhdGlvbnMgCisgICAgYWN0dWFsIG51bWJlciBvZiByZWxhdGlv
bnMgaW4gdGhlIHJldHVybmVkIGFycmF5IChub3QgbW9yZSB0aGFuIG1heFJlbGF0aW9ucykKKyAg
IEByZXR2YWwgU19PSworICAgQHJldHZhbCBTX0ZBTFNFIGlmIHRoZXJlIGFyZSBubyByZWxhdGlv
bnMsIG5SZWxhdGlvbnMgaXMgc2V0IHRvIDAKKyAgIEBub3RlIEFzIGEgcGVyZm9ybWFudCBhbHRl
cm5hdGl2ZSwgY2xpZW50IGNvZGUgc2hvdWxkIGNvbnNpZGVyIHVzaW5nIElBY2Nlc3NpYmxlMl8y
OjpyZWxhdGlvblRhcmdldHNPZlR5cGUuCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIHJlbGF0
aW9ucworICAgICgKKyAgICAgW2luXSBsb25nIG1heFJlbGF0aW9ucywgCisgICAgIFtvdXQsIHNp
emVfaXMobWF4UmVsYXRpb25zKSwgbGVuZ3RoX2lzKCpuUmVsYXRpb25zKV0KKyAgICAgICBJQWNj
ZXNzaWJsZVJlbGF0aW9uICoqcmVsYXRpb25zLCAKKyAgICAgW291dCwgcmV0dmFsXSBsb25nICpu
UmVsYXRpb25zIAorICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSByb2xlIG9mIGFu
ICVJQWNjZXNzaWJsZTIgb2JqZWN0LgorICAgQHBhcmFtIFtvdXRdIHJvbGUKKyAgICBUaGUgcm9s
ZSBvZiBhbiAlSUFjY2Vzc2libGUyIG9iamVjdC4KKyAgIEByZXR2YWwgU19PSworICAgQG5vdGUg
CisgICBAbGkgRm9yIGNvbnZlbmllbmNlIE1TQUEgcm9sZXMgYXJlIGFsc28gcGFzc2VkIHRocm91
Z2ggdGhpcyBtZXRob2Qgc28gdGhlCisgICAgQVQgZG9lc24ndCBoYXZlIHRvIGFsc28gZmV0Y2gg
cm9sZXMgdGhyb3VnaCBNU0FBJ3MgZ2V0X2FjY1JvbGUuCisgICBAbGkgJUlBY2Nlc3NpYmxlMiBy
b2xlcyBzaG91bGQgbm90IGJlIHBhc3NlZCB0aHJvdWdoIE1TQUEncyBnZXRfYWNjUm9sZS4KKyAg
IEBsaSBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbiBJQWNjZXNzaWJsZTIgZW5hYmxlZCBBVHMs
IElBY2Nlc3NpYmxlMiAKKyAgICBhcHBsaWNhdGlvbnMgc2hvdWxkIGFsc28gYWRkIHN1cHBvcnQg
dG8gZ2V0X2FjY1JvbGUgdG8gcmV0dXJuIHRoZSBjbG9zZXN0IAorICAgIE1TQUEgcm9sZSBvciBS
T0xFX1NZU1RFTV9DTElFTlQgKHRoZSBNU0FBIGRlZmluZWQgZGVmYXVsdCByb2xlKSBpZiB0aGVy
ZSAKKyAgICBpcyBub3QgYSBnb29kIG1hdGNoLiAgCisgICBAbGkgVGhpcyBtZXRob2QgaXMgbWlz
c2luZyBhIFtwcm9wZ2V0XSBwcmVmaXggaW4gdGhlIElETC4gIFRoZSByZXN1bHQgaXMgdGhlCisg
ICAgbWV0aG9kIGlzIG5hbWVkIHJvbGUgaW4gZ2VuZXJhdGVkIEMrKyBjb2RlIGluc3RlYWQgb2Yg
Z2V0X3JvbGUuCisgICovCisgIEhSRVNVTFQgcm9sZQorICAgICgKKyAgICAgW291dCwgcmV0dmFs
XSBsb25nICpyb2xlCisgICAgKTsKKworICAvKiogQGJyaWVmIE1ha2VzIGFuIG9iamVjdCB2aXNp
YmxlIG9uIHRoZSBzY3JlZW4uCisgICBAcGFyYW0gW2luXSBzY3JvbGxUeXBlCisgICAgRGVmaW5l
cyB3aGVyZSB0aGUgb2JqZWN0IHNob3VsZCBiZSBwbGFjZWQgb24gdGhlIHNjcmVlbi4KKyAgIEBy
ZXR2YWwgU19PSworICAgQHJldHZhbCBFX0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFzc2VkCisg
ICovCisgIEhSRVNVTFQgc2Nyb2xsVG8KKyAgICAoCisgICAgIFtpbl0gZW51bSBJQTJTY3JvbGxU
eXBlIHNjcm9sbFR5cGUgCisgICAgKTsKKworICAvKiogQGJyaWVmIE1vdmVzIHRoZSB0b3AgbGVm
dCBvZiBhbiBvYmplY3QgdG8gYSBzcGVjaWZpZWQgbG9jYXRpb24uCisKKyAgIEBwYXJhbSBbaW5d
IGNvb3JkaW5hdGVUeXBlCisgICAgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGNvb3JkaW5hdGVzIGFy
ZSByZWxhdGl2ZSB0byB0aGUgc2NyZWVuIG9yIHRoZSBwYXJlbnQgb2JqZWN0LgorICAgQHBhcmFt
IFtpbl0geAorICAgIERlZmluZXMgdGhlIHggY29vcmRpbmF0ZS4KKyAgIEBwYXJhbSBbaW5dIHkK
KyAgICBEZWZpbmVzIHRoZSB5IGNvb3JkaW5hdGUuCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2
YWwgRV9JTlZBTElEQVJHIGlmIGJhZCBbaW5dIHBhc3NlZAorICAqLworICBIUkVTVUxUIHNjcm9s
bFRvUG9pbnQKKyAgICAoCisgICAgIFtpbl0gZW51bSBJQTJDb29yZGluYXRlVHlwZSBjb29yZGlu
YXRlVHlwZSwKKyAgICAgW2luXSBsb25nIHgsCisgICAgIFtpbl0gbG9uZyB5IAorICAgICk7CisK
KyAgLyoqIEBicmllZiBSZXR1cm5zIGdyb3VwaW5nIGluZm9ybWF0aW9uLgorICAgCisgICBVc2Vk
IGZvciB0cmVlIGl0ZW1zLCBsaXN0IGl0ZW1zLCB0YWIgcGFuZWwgbGFiZWxzLCByYWRpbyBidXR0
b25zLCBldGMuCisgICBBbHNvIHVzZWQgZm9yIGNvbGxlY3Rpb25zIG9mIG5vbi10ZXh0IG9iamVj
dHMuCisKKyAgIEBwYXJhbSBbb3V0XSBncm91cExldmVsCisgICAgMSBiYXNlZCwgMCBpbmRpY2F0
ZXMgdGhhdCB0aGlzIHZhbHVlIGlzIG5vdCBhcHBsaWNhYmxlCisgICBAcGFyYW0gW291dF0gc2lt
aWxhckl0ZW1zSW5Hcm91cAorICAgIDEgYmFzZWQsIDAgaW5kaWNhdGVzIHRoYXQgdGhpcyB2YWx1
ZSBpcyBub3QgYXBwbGljYWJsZQorICAgQHBhcmFtIFtvdXRdIHBvc2l0aW9uSW5Hcm91cAorICAg
IDEgYmFzZWQsIDAgaW5kaWNhdGVzIHRoYXQgdGhpcyB2YWx1ZSBpcyBub3QgYXBwbGljYWJsZS4g
VGhpcyBpcyBhbiBpbmRleAorICAgIGludG8gdGhlIG9iamVjdHMgaW4gdGhlIGN1cnJlbnQgZ3Jv
dXAsIG5vdCBhbiBpbmRleCBpbnRvIGFsbCB0aGUgb2JqZWN0cworICAgIGF0IHRoZSBzYW1lIGdy
b3VwIGxldmVsLgorICAgQHJldHZhbCBTX09LIGlmIGF0IGxlYXN0IG9uZSB2YWx1ZSBpcyB2YWxp
ZAorICAgQHJldHZhbCBTX0ZBTFNFIGlmIG5vIHZhbHVlcyBhcmUgdmFsaWQsIFtvdXRdIHZhbHVl
cyBhcmUgMHMKKyAgIEBub3RlIFRoaXMgbWV0aG9kIGlzIG1lYW50IHRvIGRlc2NyaWJlIHRoZSBu
YXR1cmUgb2YgYW4gb2JqZWN0J3MgY29udGFpbm1lbnQKKyAgICBzdHJ1Y3R1cmUuICBJdCdzIGV4
cG9zZWQgYnkgdHJlZXMsIHRyZWUgZ3JpZHMsIG5lc3RlZCBsaXN0cywgbmVzdGVkIG1lbnVzLAor
ICAgIGJ1dCBub3QgaGVhZGluZ3MsIHdoaWNoIHVzZXMgdGhlIGxldmVsIG9iamVjdCBhdHRyaWJ1
dGUuICBJdCBpcyBhbHNvIGV4cG9zZWQKKyAgICBieSByYWRpbyBidXR0b25zICh3aXRoIGdyb3Vw
TGV2ZWwgPT0gMCkuCisgICBAbm90ZSBUaGlzIGlzIG5vcm1hbGx5IG5vdCBpbXBsZW1lbnRlZCBv
biBhIGNvbWJvIGJveCB0byBkZXNjcmliZSB0aGUgbmF0dXJlCisgICAgb2YgaXRzIGNvbnRlbnRz
LiAgTm9ybWFsbHkgYW4gQVQgd2lsbCBnZXQgdGhhdCBpbmZvcm1hdGlvbiBmcm9tIGl0cyBjaGls
ZCBsaXN0IAorICAgIG9iamVjdC4gIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXMgd2hlbiBub24tZWRp
dCBjb21ibyBib3hlcyBhcmUgbm90IGFibGUgdG8gYmUgc3RydWN0dXJlZAorICAgIHN1Y2ggdGhh
dCB0aGUgbGlzdCBpcyBhIGNoaWxkIG9mIHRoZSBjb21ibyBib3gsIHRoaXMgbWV0aG9kIGlzIGlt
cGxlbWVudGVkIG9uCisgICAgdGhlIGNvbWJvIGJveCBpdHNlbGYuIEFUcyBjYW4gdXNlIHRoaXMg
aW50ZXJmYWNlIGlmIGEgY2hpbGQgbGlzdCBpcyBub3QgZm91bmQuCisgICovCisgIFtwcm9wZ2V0
XSBIUkVTVUxUIGdyb3VwUG9zaXRpb24KKyAgICAoCisgICAgIFtvdXRdIGxvbmcgKmdyb3VwTGV2
ZWwsCisgICAgIFtvdXRdIGxvbmcgKnNpbWlsYXJJdGVtc0luR3JvdXAsCisgICAgIFtvdXQsIHJl
dHZhbF0gbG9uZyAqcG9zaXRpb25Jbkdyb3VwIAorICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1
cm5zIHRoZSBiaXQgc3RyaXAgY29udGFpbmluZyBhbnkgSUFjY2Vzc2libGUyIHN0YXRlcy4KKyAg
CisgICBUaGUgSUFjY2Vzc2libGUyIHN0YXRlcyBhcmUgaW4gYWRkaXRpb24gdG8gdGhlIE1TQUEg
c3RhdGVzIGFuZCBhcmUgZGVmaW5lZCBpbgorICAgdGhlIElBMlN0YXRlcyBlbnVtLgorCisgICBA
cGFyYW0gW291dF0gc3RhdGVzCisgICBAcmV0dmFsIFNfT0sKKyAgKi8KKyAgW3Byb3BnZXRdIEhS
RVNVTFQgc3RhdGVzCisgICAgKAorICAgICBbb3V0LCByZXR2YWxdIEFjY2Vzc2libGVTdGF0ZXMg
KnN0YXRlcworICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSBleHRlbmRlZCByb2xl
LgorICAgCisgICBBbiBleHRlbmRlZCByb2xlIGlzIGEgcm9sZSB3aGljaCBpcyBkeW5hbWljYWxs
eSBnZW5lcmF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgorICAgSXQgaXMgbm90IHByZWRlZmluZWQg
YnkgdGhlICVJQWNjZXNzaWJsZTIgc3BlY2lmaWNhdGlvbi4KKyAgIAorICAgQHBhcmFtIFtvdXRd
IGV4dGVuZGVkUm9sZQorICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFsIFNfRkFMU0UgaWYgdGhl
cmUgaXMgbm90aGluZyB0byByZXR1cm4sIFtvdXRdIHZhbHVlIGlzIE5VTEwKKyAgKi8KKyAgW3By
b3BnZXRdIEhSRVNVTFQgZXh0ZW5kZWRSb2xlCisgICAgKAorICAgICBbb3V0LCByZXR2YWxdIEJT
VFIgKmV4dGVuZGVkUm9sZQorICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSBsb2Nh
bGl6ZWQgZXh0ZW5kZWQgcm9sZS4KKyAgIEBwYXJhbSBbb3V0XSBsb2NhbGl6ZWRFeHRlbmRlZFJv
bGUKKyAgIEByZXR2YWwgU19PSworICAgQHJldHZhbCBTX0ZBTFNFIGlmIHRoZXJlIGlzIG5vdGhp
bmcgdG8gcmV0dXJuLCBbb3V0XSB2YWx1ZSBpcyBOVUxMCisgICovCisgIFtwcm9wZ2V0XSBIUkVT
VUxUIGxvY2FsaXplZEV4dGVuZGVkUm9sZQorICAgICgKKyAgICAgW291dCwgcmV0dmFsXSBCU1RS
ICpsb2NhbGl6ZWRFeHRlbmRlZFJvbGUKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJucyB0
aGUgbnVtYmVyIG9mIGV4dGVuZGVkIHN0YXRlcy4KKyAgIEBwYXJhbSBbb3V0XSBuRXh0ZW5kZWRT
dGF0ZXMKKyAgIEByZXR2YWwgU19PSworICAqLworICBbcHJvcGdldF0gSFJFU1VMVCBuRXh0ZW5k
ZWRTdGF0ZXMKKyAgICAoCisgICAgIFtvdXQsIHJldHZhbF0gbG9uZyAqbkV4dGVuZGVkU3RhdGVz
CisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMgdGhlIGV4dGVuZGVkIHN0YXRlcyAoYXJy
YXkgb2Ygc3RyaW5ncykuCisKKyAgIEFuIGV4dGVuZGVkIHN0YXRlIGlzIGEgc3RhdGUgd2hpY2gg
aXMgZHluYW1pY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KKyAgIEl0IGlzIG5v
dCBwcmVkZWZpbmVkIGJ5IHRoZSAlSUFjY2Vzc2libGUyIHNwZWNpZmljYXRpb24uCisKKyAgIEBw
YXJhbSBbaW5dIG1heEV4dGVuZGVkU3RhdGVzCisgICAgVGhpcyBwYXJhbWV0ZXIgaXMgaWdub3Jl
ZC4gUmVmZXIgdG8gQHJlZiBfYXJyYXlDb25zaWRlcmF0aW9uIAorICAgICJTcGVjaWFsIENvbnNp
ZGVyYXRpb24gd2hlbiB1c2luZyBBcnJheXMiIGZvciBtb3JlIGRldGFpbHMuCisgICBAcGFyYW0g
W291dF0gZXh0ZW5kZWRTdGF0ZXMKKyAgICBUaGlzIGFycmF5IGlzIGFsbG9jYXRlZCBieSB0aGUg
c2VydmVyLiAgVGhlIGNsaWVudCBtdXN0IGZyZWUgaXQgd2l0aCBDb1Rhc2tNZW1GcmVlLgorICAg
QHBhcmFtIFtvdXRdIG5FeHRlbmRlZFN0YXRlcworICAgIFRoZSBudW1iZXIgb2YgZXh0ZW5kZWQg
c3RhdGVzIHJldHVybmVkOyB0aGUgc2l6ZSBvZiB0aGUgcmV0dXJuZWQgYXJyYXkuCisgICBAcmV0
dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxTRSBpZiB0aGVyZSBhcmUgbm8gc3RhdGVzLCBbb3V0
XSB2YWx1ZXMgYXJlIE5VTEwgYW5kIDAgcmVzcGVjdGl2ZWx5CisgICovCisgIFtwcm9wZ2V0XSBI
UkVTVUxUIGV4dGVuZGVkU3RhdGVzCisgICAgKAorICAgICBbaW5dIGxvbmcgbWF4RXh0ZW5kZWRT
dGF0ZXMsCisgICAgIFtvdXQsIHNpemVfaXMoLG1heEV4dGVuZGVkU3RhdGVzKSwgbGVuZ3RoX2lz
KCwqbkV4dGVuZGVkU3RhdGVzKV0gQlNUUiAqKmV4dGVuZGVkU3RhdGVzLAorICAgICBbb3V0LCBy
ZXR2YWxdIGxvbmcgKm5FeHRlbmRlZFN0YXRlcworICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1
cm5zIHRoZSBsb2NhbGl6ZWQgZXh0ZW5kZWQgc3RhdGVzIChhcnJheSBvZiBzdHJpbmdzKS4KKwor
ICAgQHBhcmFtIFtpbl0gbWF4TG9jYWxpemVkRXh0ZW5kZWRTdGF0ZXMKKyAgICBUaGlzIHBhcmFt
ZXRlciBpcyBpZ25vcmVkLiBSZWZlciB0byBAcmVmIF9hcnJheUNvbnNpZGVyYXRpb24gCisgICAg
IlNwZWNpYWwgQ29uc2lkZXJhdGlvbiB3aGVuIHVzaW5nIEFycmF5cyIgZm9yIG1vcmUgZGV0YWls
cy4KKyAgIEBwYXJhbSBbb3V0XSBsb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcworICAgIFRoaXMgYXJy
YXkgaXMgYWxsb2NhdGVkIGJ5IHRoZSBzZXJ2ZXIuICBUaGUgY2xpZW50IG11c3QgZnJlZSBpdCB3
aXRoIENvVGFza01lbUZyZWUuIAorICAgQHBhcmFtIFtvdXRdIG5Mb2NhbGl6ZWRFeHRlbmRlZFN0
YXRlcworICAgIFRoZSBudW1iZXIgb2YgbG9jYWxpemVkIGV4dGVuZGVkIHN0YXRlcyByZXR1cm5l
ZDsgdGhlIHNpemUgb2YgdGhlIHJldHVybmVkIGFycmF5LgorICAgQHJldHZhbCBTX09LCisgICBA
cmV0dmFsIFNfRkFMU0UgaWYgdGhlcmUgYXJlIG5vIHN0YXRlcywgW291dF0gdmFsdWVzIGFyZSBO
VUxMIGFuZCAwIHJlc3BlY3RpdmVseQorICAqLworICBbcHJvcGdldF0gSFJFU1VMVCBsb2NhbGl6
ZWRFeHRlbmRlZFN0YXRlcworICAgICgKKyAgICAgW2luXSBsb25nIG1heExvY2FsaXplZEV4dGVu
ZGVkU3RhdGVzLAorICAgICBbb3V0LCBzaXplX2lzKCxtYXhMb2NhbGl6ZWRFeHRlbmRlZFN0YXRl
cyksIGxlbmd0aF9pcygsKm5Mb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcyldIEJTVFIgKipsb2NhbGl6
ZWRFeHRlbmRlZFN0YXRlcywKKyAgICAgW291dCwgcmV0dmFsXSBsb25nICpuTG9jYWxpemVkRXh0
ZW5kZWRTdGF0ZXMKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJucyB0aGUgdW5pcXVlIElE
LgorICAgCisgICBUaGUgdW5pcXVlSUQgaXMgYW4gaWRlbnRpZmllciBmb3IgdGhpcyBvYmplY3Qs
IGlzIHVuaXF1ZSB3aXRoaW4gdGhlCisgICBjdXJyZW50IHdpbmRvdywgYW5kIHJlbWFpbnMgdGhl
IHNhbWUgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgYWNjZXNzaWJsZQorICAgb2JqZWN0LiAKKyAg
IAorICAgVGhlIHVuaXF1ZUlEIGlzIG5vdCByZWxhdGVkIHRvOgorICAgLSB0aGUgTVNBQSBvYmpl
Y3RJRCB3aGljaCBpcyB1c2VkIGJ5IHRoZSBzZXJ2ZXIgdG8gZGlzYW1iaWd1YXRlIGJldHdlZW4K
KyAgIElBY2Nlc3NpYmxlcyBwZXIgSFdORCBvcgorICAgLSB0aGUgTVNBQSBjaGlsZElEIHdoaWNo
IGlzIHVzZWQgdG8gZGlzYW1iaWd1YXRlIGJldHdlZW4gY2hpbGRyZW4gYmVpbmcKKyAgIG1hbmFn
ZWQgYnkgYW4gSUFjY2Vzc2libGUuCisKKyAgIFRoaXMgdmFsdWUgaXMgcHJvdmlkZWQgc28gdGhl
IEFUIGNhbiBoYXZlIGFjY2VzcyB0byBhIHVuaXF1ZSBydW50aW1lIHBlcnNpc3RlbnQgCisgICBp
ZGVudGlmaWVyIGV2ZW4gd2hlbiBub3QgaGFuZGxpbmcgYW4gZXZlbnQgZm9yIHRoZSBvYmplY3Qu
CisgICAKKyAgIEFuIGV4YW1wbGUgb2Ygd2hlbiB0aGlzIHZhbHVlIGlzIHVzZWZ1bCBpcyBpZiB0
aGUgQVQgd2FudHMgdG8gYnVpbGQgYSBjYWNoZS4gCisgICBUaGUgQVQgY291bGQgY2FjaGUgdGhl
IHVuaXF1ZUlEcyBpbiBhZGRpdGlvbiB0byBvdGhlciBkYXRhIGJlaW5nIGNhY2hlZC4gCisgICBX
aGVuIGFuIGV2ZW50IGlzIGZpcmVkIHRoZSBBVCBjb3VsZCBtYXAgdGhlIHVuaXF1ZUlEIHRvIGl0
cyBpbnRlcm5hbCBtb2RlbC4KKyAgIFRodXMsIGlmIHRoZXJlJ3MgYSBSRU9SREVSL1NIT1cvSElE
RSBldmVudCB0aGUgQVQga25vd3Mgd2hpY2ggcGFydCBvZiB0aGUgCisgICBpbnRlcm5hbCBzdHJ1
Y3R1cmUgaGFzIGJlZW4gaW52YWxpZGF0ZWQgYW5kIGNhbiByZWZldGNoIGp1c3QgdGhhdCBwYXJ0
LgorCisgICBUaGlzIHZhbHVlIGNhbiBhbHNvIGJlIHVzZWQgYnkgYW4gQVQgdG8gZGV0ZXJtaW5l
IHdoZW4gdGhlIGN1cnJlbnQgY29udHJvbAorICAgaGFzIGNoYW5nZWQuIElmIHRoZSByb2xlIGlz
IHRoZSBzYW1lIGZvciB0d28gY29udHJvbHMgdGhhdCBhcmUgYWRqYWNlbnQgaW4gCisgICB0aGUg
dGFiIG9yZGVyLCB0aGlzIGNhbiBiZSB1c2VkIHRvIGRldGVjdCB0aGUgbmV3IGNvbnRyb2wuCisK
KyAgIEFub3RoZXIgdXNlIG9mIHRoaXMgdmFsdWUgYnkgYW4gQVQgaXMgdG8gaWRlbnRpZnkgd2hl
biBhIGdyb3VwaW5nIG9iamVjdCBoYXMgCisgICBjaGFuZ2VkLCBlLmcuIHdoZW4gbW92aW5nIGZy
b20gYSByYWRpbyBidXR0b24gaW4gb25lIGdyb3VwIHRvIGEgcmFkaW8gYnV0dG9uIGluIGEgCisg
ICBkaWZmZXJlbnQgZ3JvdXAuCisKKyAgIE9uZSBtZWFucyBvZiBpbXBsZW1lbnRpbmcgdGhpcyB3
b3VsZCBiZSB0byBjcmVhdGUgYSBmYWN0b3J5IHdpdGggYSAzMiBiaXQgbnVtYmVyIAorICAgZ2Vu
ZXJhdG9yIGFuZCBhIHJldXNlIHBvb2wuICBUaGUgbnVtYmVyIGdlbmVyYXRvciB3b3VsZCBlbWl0
IG51bWJlcnMgc3RhcnRpbmcgCisgICBhdCAxLiAgRWFjaCB0aW1lIGFuIG9iamVjdCdzIGxpZmUg
Y3ljbGUgZW5kZWQsIGl0cyBudW1iZXIgd291bGQgYmUgc2F2ZWQgaW50byBhIAorICAgcmV1c2Ug
cG9vbC4gIFRoZSBudW1iZXIgZ2VuZXJhdG9yIHdvdWxkIGJlIHVzZWQgd2hlbmV2ZXIgdGhlIHJl
dXNlIHBvb2wgd2FzIGVtcHR5LgorCisgICBBbm90aGVyIHdheSB0byBjcmVhdGUgYSB1bmlxdWUg
SUQgaXMgdG8gZ2VuZXJhdGUgaXQgZnJvbSBhIHBvaW50ZXIgdmFsdWUsIGUuZy4gYW4KKyAgIG9i
amVjdCdzIGFkZHJlc3MuIFRoYXQgd291bGQgYmUgdW5pcXVlIGJlY2F1c2Ugbm8gdHdvIGFjdGl2
ZSBvYmplY3RzIGNhbiB1c2UgdGhlCisgICBzYW1lIGFsbG9jYXRlZCBtZW1vcnkgc3BhY2UuCisK
KyAgIEBwYXJhbSBbb3V0XSB1bmlxdWVJRAorICAgQHJldHZhbCBTX09LCisgICovCisgIFtwcm9w
Z2V0XSBIUkVTVUxUIHVuaXF1ZUlECisgICAgKAorICAgICBbb3V0LCByZXR2YWxdIGxvbmcgKnVu
aXF1ZUlECisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMgdGhlIHdpbmRvdyBoYW5kbGUg
Zm9yIHRoZSBwYXJlbnQgd2luZG93IHdoaWNoIGNvbnRhaW5zIHRoaXMgb2JqZWN0LgorCisgICBU
aGlzIGlzIHRoZSBzYW1lIHdpbmRvdyBoYW5kbGUgd2hpY2ggd2lsbCBiZSBwYXNzZWQgZm9yIGFu
eSBldmVudHMgdGhhdCBvY2N1ciBvbiB0aGUgCisgICBvYmplY3QsIGJ1dCBpcyBjYWNoZWQgaW4g
dGhlIGFjY2Vzc2libGUgb2JqZWN0IGZvciB1c2Ugd2hlbiBpdCB3b3VsZCBiZSBoZWxwZnVsIHRv
IAorICAgYWNjZXNzIHRoZSB3aW5kb3cgaGFuZGxlIGluIGNhc2VzIHdoZXJlIGFuIGV2ZW50IGlz
bid0IGZpcmVkIG9uIHRoaXMgb2JqZWN0LgorCisgICBBIHVzZSBjYXNlIGlzIHdoZW4gYSBzY3Jl
ZW4gcmVhZGVyIGlzIGdyYWJiaW5nIGFuIGVudGlyZSB3ZWIgcGFnZSBvbiBhIHBhZ2UgbG9hZC4g
CisgICBXaXRob3V0IHRoZSBhdmFpbGFiaWxpdHkgb2Ygd2luZG93SGFuZGxlLCB0aGUgQVQgd291
bGQgaGF2ZSB0byBnZXQgdGhlIHdpbmRvdyBoYW5kbGUKKyAgIGJ5IHVzaW5nIFdpbmRvd0Zyb21B
Y2Nlc3NpYmxlT2JqZWN0IG9uIGVhY2ggSUFjY2Vzc2libGUsIHdoaWNoIGlzIHNsb3cgYmVjYXVz
ZSBpdCdzIAorICAgaW1wbGVtZW50ZWQgYnkgb2xlYWNjLmRsbCBhcyBhIGxvb3Agd2hpY2ggY3Jh
d2xzIHVwIHRoZSBhbmNlc3RvciBjaGFpbiBhbmQgbG9va3MgZm9yIAorICAgYSBST0xFX1dJTkRP
VyBvYmplY3QsIG1hcHBpbmcgdGhhdCBiYWNrIHRvIGEgd2luZG93IGhhbmRsZS4KKyAgIAorICAg
QHBhcmFtIFtvdXRdIHdpbmRvd0hhbmRsZQorICAgQHJldHZhbCBTX09LCisgICovCisgIFtwcm9w
Z2V0XSBIUkVTVUxUIHdpbmRvd0hhbmRsZQorICAgICgKKyAgICAgW291dCwgcmV0dmFsXSBIV05E
ICp3aW5kb3dIYW5kbGUKKyAgICApOworIAorICAvKiogQGJyaWVmIFJldHVybnMgdGhlIGluZGV4
IG9mIHRoaXMgb2JqZWN0IGluIGl0cyBwYXJlbnQgb2JqZWN0LgorICAgQHBhcmFtIFtvdXRdIGlu
ZGV4SW5QYXJlbnQKKyAgICAgMCBiYXNlZDsgLTEgaW5kaWNhdGVzIHRoZXJlIGlzIG5vIHBhcmVu
dDsgdGhlIHVwcGVyIGJvdW5kIGlzIHRoZSB2YWx1ZSAKKyAgICAgcmV0dXJuZWQgYnkgdGhlIHBh
cmVudCdzIElBY2Nlc3NpYmxlOjpnZXRfYWNjQ2hpbGRDb3VudC4KKyAgIEByZXR2YWwgU19PSwor
ICAgQHJldHZhbCBTX0ZBTFNFIGlmIG5vIHBhcmVudCwgW291dF0gdmFsdWUgaXMgLTEKKyAgKi8K
KyAgW3Byb3BnZXRdIEhSRVNVTFQgaW5kZXhJblBhcmVudAorICAgICgKKyAgICAgW291dCwgcmV0
dmFsXSBsb25nICppbmRleEluUGFyZW50CisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMg
dGhlIElBMkxvY2FsZSBvZiB0aGUgYWNjZXNzaWJsZSBvYmplY3QuIAorICAgQHBhcmFtIFtvdXRd
IGxvY2FsZQorICAgQHJldHZhbCBTX09LCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIGxvY2Fs
ZQorICAgICgKKyAgICAgW291dCwgcmV0dmFsXSBJQTJMb2NhbGUgKmxvY2FsZQorICAgICk7CisK
KyAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSBhdHRyaWJ1dGVzIHNwZWNpZmljIHRvIHRoaXMgb2Jq
ZWN0LCBzdWNoIGFzIGEgY2VsbCdzIGZvcm11bGEuCisgICBAcGFyYW0gW291dF0gYXR0cmlidXRl
cworICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFsIFNfRkFMU0UgcmV0dXJuZWQgaWYgdGhlcmUg
aXMgbm90aGluZyB0byByZXR1cm4sIFtvdXRdIHZhbHVlIGlzIE5VTEwKKyAgKi8KKyAgW3Byb3Bn
ZXRdIEhSRVNVTFQgYXR0cmlidXRlcworICAgICgKKyAgICAgW291dCwgcmV0dmFsXSBCU1RSICph
dHRyaWJ1dGVzCisgICAgKTsKKworfQorCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGUyXzIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZTJfMi5pZGwJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vz
c2libGUyXzIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIzIEBACisvKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKgorICoKKyAqICBGaWxlIE5hbWUgKEFjY2Vzc2libGUyXzIuaWRsKQorICogCisgKiAg
SUFjY2Vzc2libGUyIElETCBTcGVjaWZpY2F0aW9uIAorICogCisgKiAgQ29weXJpZ2h0IChjKSAy
MDA3LCAyMDEzIExpbnV4IEZvdW5kYXRpb24gCisgKiAgQ29weXJpZ2h0IChjKSAyMDA2IElCTSBD
b3Jwb3JhdGlvbiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgU3VuIE1pY3Jvc3lzdGVt
cywgSW5jLiAKKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiAKKyAqICAgCisgKiAgIAorICogIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dCAKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgCisgKiAgYXJlIG1ldDogCisgKiAgIAorICogICAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodCAKKyAqICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgCisgKiAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIAorICogICAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
CisgKiAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKgorICogICAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBMaW51eCBGb3VuZGF0aW9uIG5vciB0aGUgbmFtZXMgb2Yg
aXRzIAorICogICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIAorICogICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gCisgKiAgICAgIHBlcm1pc3Npb24uIAorICogICAKKyAq
ICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
CisgKiAgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgCisgKiAgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgCisgKiAgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgKiAgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiAgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIAorICogIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCAKKyAqICBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgCisg
KiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgCisgKiAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIAorICogIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiAKKyAqICBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCAKKyAqICBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqICAgCisgKiAgVGhpcyBCU0QgTGlj
ZW5zZSBjb25mb3JtcyB0byB0aGUgT3BlbiBTb3VyY2UgSW5pdGlhdGl2ZSAiU2ltcGxpZmllZCAK
KyAqICBCU0QgTGljZW5zZSIgYXMgcHVibGlzaGVkIGF0OiAKKyAqICBodHRwOi8vd3d3Lm9wZW5z
b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocCAKKyAqICAgCisgKiAgSUFjY2Vzc2li
bGUyIGlzIGEgdHJhZGVtYXJrIG9mIHRoZSBMaW51eCBGb3VuZGF0aW9uLiBUaGUgSUFjY2Vzc2li
bGUyIAorICogIG1hcmsgbWF5IGJlIHVzZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBMaW51eCBG
b3VuZGF0aW9uIFRyYWRlbWFyayAKKyAqICBQb2xpY3kgdG8gaW5kaWNhdGUgY29tcGxpYW5jZSB3
aXRoIHRoZSBJQWNjZXNzaWJsZTIgc3BlY2lmaWNhdGlvbi4gCisgKiAKKyAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovIAorCitpbXBvcnQgIm9iamlkbC5pZGwiOworaW1wb3J0ICJvYWlkbC5pZGwiOworaW1wb3J0
ICJvbGVhY2MuaWRsIjsKK2ltcG9ydCAiQWNjZXNzaWJsZTIuaWRsIjsKKworLyoqIEBicmllZiBU
aGlzIGludGVyZmFjZSBleHBvc2VzIHRoZSBwcmltYXJ5IHNldCBvZiBpbmZvcm1hdGlvbiBhYm91
dCBhbgorIElBY2Nlc3NpYmxlMiBlbmFibGVkIGFjY2Vzc2libGUgb2JqZWN0LgorCisgVGhpcyBp
bnRlcmZhY2UgbXVzdCBhbHdheXMgYmUgcHJvdmlkZWQgZm9yIG9iamVjdHMgdGhhdCBzdXBwb3J0
IHNvbWUKKyBwb3J0aW9uIG9mIHRoZSBjb2xsZWN0aW9uIG9mIHRoZSAlSUFjY2Vzc2libGUyIGlu
dGVyZmFjZXMuCisKKyBQbGVhc2UgcmVmZXIgdG8gQHJlZiBfY2hhbmdpbmdJbnRlcmZhY2VzICJD
aGFuZ2luZyBiZXR3ZWVuIEFjY2Vzc2libGUgSW50ZXJmYWNlcyIKKyBmb3Igc3BlY2lhbCBjb25z
aWRlcmF0aW9ucyByZWxhdGVkIHRvIHVzZSBvZiB0aGUgTVNBQSBJQWNjZXNzaWJsZSBpbnRlcmZh
Y2UgYW5kIAorIHRoZSBzZXQgb2YgJUlBY2Nlc3NpYmxlMiBpbnRlcmZhY2VzLgorICovCitbb2Jq
ZWN0LCB1dWlkKDZDOTQzMEU5LTI5OUQtNEU2Ri1CRDAxLUE4MkExRTg4RDNGRildCitpbnRlcmZh
Y2UgSUFjY2Vzc2libGUyXzIgOiBJQWNjZXNzaWJsZTIKK3sKKyAgLyoqIEBicmllZiBSZXR1cm5z
IHRoZSBhdHRyaWJ1dGUgdmFsdWUgb2YgYSBzcGVjaWZpZWQgYXR0cmlidXRlIHNwZWNpZmljIHRv
IHRoaXMgb2JqZWN0LgorICAgQHBhcmFtIFtpbl0gbmFtZQorICAgQHBhcmFtIFtvdXRdIGF0dHJp
YnV0ZQorICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFsIFNfRkFMU0UgcmV0dXJuZWQgaWYgdGhl
cmUgaXMgbm90aGluZyB0byByZXR1cm4sIFtvdXRdIHZhbHVlIGlzIE5VTEwuCisgICBAcmV0dmFs
IEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQuCisgICBAbm90ZSBUaGUgb3V0cHV0IHZh
bHVlIGlzIGEgVkFSSUFOVC4gIFR5cGljYWxseSBpdCB3aWxsIGJlIGEgVlRfQlNUUiwgYnV0IHRo
ZXJlCisgICAgIGFyZSBzb21lIGNhc2VzIHdoZXJlIGl0IHdpbGwgYmUgYSBWVF9JNCBvciBWVF9C
T09MLiAgUmVmZXIgdG8gdGhlIDxhIGhyZWY9CisgICAgICJodHRwOi8vd3d3LmxpbnV4Zm91bmRh
dGlvbi5vcmcvY29sbGFib3JhdGUvd29ya2dyb3Vwcy9hY2Nlc3NpYmlsaXR5L2lhY2Nlc3NpYmxl
Mi9vYmplY3RhdHRyaWJ1dGVzSUFjY2Vzc2libGUyIj4KKyAgICAgT2JqZWN0IEF0dHJpYnV0ZXMg
c3BlY2lmaWNhdGlvbjwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICovCisgIFtwcm9wZ2V0
XSBIUkVTVUxUIGF0dHJpYnV0ZQorICAgICgKKyAgICAgW2luXSBCU1RSIG5hbWUsCisgICAgIFtv
dXQsIHJldHZhbF0gVkFSSUFOVCAqYXR0cmlidXRlCisgICAgKTsKKworICAvKiogQGJyaWVmIFJl
dHVybnMgdGhlIGRlZXBlc3QgaHlwZXJ0ZXh0IGFjY2Vzc2libGUgaW4gdGhlIHN1YnRyZWUgb2Yg
dGhpcyBvYmplY3QsIGFuZCB0aGUgY2FyZXQgb2Zmc2V0IHdpdGhpbiBpdC4KKyAgIEBwYXJhbSBb
b3V0XSBhY2Nlc3NpYmxlCisgICBAcGFyYW0gW291dF0gY2FyZXRPZmZzZXQKKyAgIEByZXR2YWwg
U19PSworICAgQHJldHZhbCBTX0ZBTFNFIHJldHVybmVkIGlmIHRoZXJlIGlzIG5vIGNhcmV0IGlu
IGFueSBvZiB0aGUgb2JqZWN0cyBpbiB0aGUgc3VidHJlZSwgW291dF0gYWNjZXNzaWJsZSBpcyBO
VUxMIGFuZCBbb3V0XSBjYXJldE9mZnNldCBpcyAtMS4KKyAgKi8KKyAgW3Byb3BnZXRdIEhSRVNV
TFQgYWNjZXNzaWJsZVdpdGhDYXJldAorICAgICgKKyAgICAgW291dF0gSVVua25vd24gKiphY2Nl
c3NpYmxlLAorICAgICBbb3V0LCByZXR2YWxdIGxvbmcgKmNhcmV0T2Zmc2V0CisgICAgKTsKKwor
ICAvKiogQGJyaWVmIFJldHVybnMgcmVsYXRpb24gdGFyZ2V0cyBmb3IgYSBzcGVjaWZpZWQgdGFy
Z2V0IHR5cGUuCisgICBAcGFyYW0gW2luXSB0eXBlCisgICAgVGhlIHJlcXVlc3RlZCBAcmVmIGdy
cFJlbGF0aW9ucyAicmVsYXRpb24gdHlwZSIuCisgICBAcGFyYW0gW2luXSBtYXhUYXJnZXRzCisg
ICAgVGhlIG51bWJlciBvZiB0YXJnZXRzIHJlcXVlc3RlZC4gIDAgaW5kaWNhdGVzIHRoYXQgYWxs
IHRhcmdldHMgc2hvdWxkIGJlIHJldHVybmVkLgorICAgQHBhcmFtIFtvdXRdIHRhcmdldHMKKyAg
ICBUaGlzIGFycmF5IGlzIGFsbG9jYXRlZCBieSB0aGUgc2VydmVyLiAgVGhlIGNsaWVudCBtdXN0
IGZyZWUgaXQgd2l0aCBDb1Rhc2tNZW1GcmVlLgorICAgQHBhcmFtIFtvdXRdIG5UYXJnZXRzCisg
ICAgVGhlIG51bWJlciBvZiB0YXJnZXRzIHJldHVybmVkOyB0aGUgc2l6ZSBvZiB0aGUgcmV0dXJu
ZWQgYXJyYXkuCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxTRSBpZiB0aGVyZSBh
cmUgbm8gdGFyZ2V0cywgW291dF0gdmFsdWVzIGFyZSBOVUxMIGFuZCAwIHJlc3BlY3RpdmVseS4K
KyAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlmIGJhZCBbaW5dIHBhc3NlZC4KKyAgKi8KKyAgW3By
b3BnZXRdIEhSRVNVTFQgcmVsYXRpb25UYXJnZXRzT2ZUeXBlCisgICAgKAorICAgICBbaW5dIEJT
VFIgdHlwZSwKKyAgICAgW2luXSBsb25nIG1heFRhcmdldHMsCisgICAgIFtvdXQsIHNpemVfaXMo
LCpuVGFyZ2V0cyldIElVbmtub3duICoqKnRhcmdldHMsCisgICAgIFtvdXQsIHJldHZhbF0gbG9u
ZyAqblRhcmdldHMKKyAgICApOworCit9CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVy
ZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZUFwcGxpY2F0aW9uLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVBcHBs
aWNhdGlvbi5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0FjY2Vzc2libGUyL0FjY2Vzc2libGVBcHBsaWNhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMjEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogIEZpbGUgTmFtZSAoQWNj
ZXNzaWJsZUFwcGxpY2F0aW9uLmlkbCkKKyAqIAorICogIElBY2Nlc3NpYmxlMiBJREwgU3BlY2lm
aWNhdGlvbiAKKyAqIAorICogIENvcHlyaWdodCAoYykgMjAwNywgMjAxMCBMaW51eCBGb3VuZGF0
aW9uIAorICogIENvcHlyaWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gCisgKiAgQ29weXJp
Z2h0IChjKSAyMDAwLCAyMDA2IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gCisgKiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4gCisgKiAgIAorICogICAKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCisgKiAgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IAorICogIGFyZSBtZXQ6IAorICogICAKKyAqICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgCisgKiAgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisg
KiAgIAorICogICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIAorICogICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyAKKyAqICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIAorICogICAgICBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAorICoKKyAqICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUg
TGludXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyAKKyAqICAgICAgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyAKKyAqICAgICAg
ZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IAorICogICAgICBwZXJtaXNzaW9uLiAKKyAqICAgCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIAorICogIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAorICogIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAorICogIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAor
ICogIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9S
IAorICogIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCAKKyAqICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgCisgKiAgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IAorICogIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIAorICogIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiAKKyAqICBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgCisg
KiAgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgCisgKiAgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKiAgIAorICogIFRoaXMgQlNEIExpY2Vuc2UgY29uZm9ybXMgdG8gdGhlIE9w
ZW4gU291cmNlIEluaXRpYXRpdmUgIlNpbXBsaWZpZWQgCisgKiAgQlNEIExpY2Vuc2UiIGFzIHB1
Ymxpc2hlZCBhdDogCisgKiAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2Qt
bGljZW5zZS5waHAgCisgKiAgIAorICogIElBY2Nlc3NpYmxlMiBpcyBhIHRyYWRlbWFyayBvZiB0
aGUgTGludXggRm91bmRhdGlvbi4gVGhlIElBY2Nlc3NpYmxlMiAKKyAqICBtYXJrIG1heSBiZSB1
c2VkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgTGludXggRm91bmRhdGlvbiBUcmFkZW1hcmsgCisg
KiAgUG9saWN5IHRvIGluZGljYXRlIGNvbXBsaWFuY2Ugd2l0aCB0aGUgSUFjY2Vzc2libGUyIHNw
ZWNpZmljYXRpb24uIAorICogCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLyAKKworCitpbXBvcnQgIm9iamlk
bC5pZGwiOworaW1wb3J0ICJvYWlkbC5pZGwiOworaW1wb3J0ICJvbGVhY2MuaWRsIjsKKworLyoq
IEBicmllZiBUaGlzIGludGVyZmFjZSBnaXZlcyBhY2Nlc3MgdG8gdGhlIGFwcGxpY2F0aW9uJ3Mg
bmFtZSBhbmQgdmVyc2lvbiBpbmZvcm1hdGlvbi4KKyAgICAgICAgCisgVGhpcyBpbnRlcmZhY2Ug
cHJvdmlkZXMgdGhlIEFUIHdpdGggdGhlIGluZm9ybWF0aW9uIGl0IG5lZWRzIHRvIGRpZmZlcmVu
dGlhdGUgCisgdGhpcyBhcHBsaWNhdGlvbiBmcm9tIG90aGVyIGFwcGxpY2F0aW9ucywgZnJvbSBv
dGhlciB2ZXJzaW9ucyBvZiB0aGlzIAorIGFwcGxpY2F0aW9uLCBvciBmcm9tIG90aGVyIHZlcnNp
b25zIG9mIHRoaXMgYXBwbGljYXRpb24gcnVubmluZyBvbiBkaWZmZXJlbnQgCisgdmVyc2lvbnMg
b2YgYW4gYWNjZXNzaWJpbGl0eSBicmlkZ2Ugb3IgYWNjZXNzaWJpbGl0eSB0b29sa2l0LgorCisg
U2VydmVycyBpbXBsZW1lbnRpbmcgSUFjY2Vzc2libGUyIHNob3VsZCBwcm92aWRlIGFjY2VzcyB0
byB0aGUgJUlBY2Nlc3NpYmxlQXBwbGljYXRpb24gCisgaW50ZXJmYWNlIHZpYSBRdWVyeVNlcnZp
Y2UgZnJvbSBhbnkgb2JqZWN0IHNvIHRoYXQgQVRzIGNhbiBlYXNpbHkgZGV0ZXJtaW5lIHNwZWNp
ZmljIAorIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhcHBsaWNhdGlvbiBzdWNoIGFzIGl0cyBuYW1l
IG9yIHZlcnNpb24uCisqLworW29iamVjdCwgdXVpZChENDlERUQ4My01QjI1LTQzRjQtOUI5NS05
M0I0NDU5NTk3OUUpXQoraW50ZXJmYWNlIElBY2Nlc3NpYmxlQXBwbGljYXRpb24gOiBJVW5rbm93
bgoreworICAKKyAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSBhcHBsaWNhdGlvbiBuYW1lLgorICAg
QHBhcmFtIFtvdXRdIG5hbWUKKyAgIEByZXR2YWwgU19PSworICAgQHJldHZhbCBTX0ZBTFNFIGlm
IHRoZXJlIGlzIG5vdGhpbmcgdG8gcmV0dXJuLCBbb3V0XSB2YWx1ZSBpcyBOVUxMCisgICovCisg
IFtwcm9wZ2V0XSBIUkVTVUxUIGFwcE5hbWUKKyAgICAoCisgICAgIFtvdXQsIHJldHZhbF0gQlNU
UiAqbmFtZQorICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSBhcHBsaWNhdGlvbiB2
ZXJzaW9uLgorICAgQHBhcmFtIFtvdXRdIHZlcnNpb24KKyAgICBUaGUgdmVyc2lvbiBzdHJpbmcg
bXVzdCBub3QgY29udGFpbiBsZXZlbHMgd2hlbiBpdCBpcyBrbm93IGJlZm9yZWhhbmQgdGhhdAor
ICAgIHRoaXMgaW5mb3JtYXRpb24gd2lsbCBuZXZlciByZXF1aXJlIGEgY2hhbmdlIGluIGEgY2xp
ZW50J3MgYmVoYXZpb3IuCisgICAgRm9yIGV4YW1wbGUsIHVzZSAiMy42LjAiIHJhdGhlciB0aGFu
ICIzLjYuMC52MjAxMDA1MTMxNTAwIi4KKyAgIEByZXR2YWwgU19PSworICAgQHJldHZhbCBTX0ZB
TFNFIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmV0dXJuLCBbb3V0XSB2YWx1ZSBpcyBOVUxMCisg
ICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIGFwcFZlcnNpb24KKyAgICAoCisgICAgIFtvdXQsIHJl
dHZhbF0gQlNUUiAqdmVyc2lvbgorICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSB0
b29sa2l0L2JyaWRnZSBuYW1lLgorICAgQHBhcmFtIFtvdXRdIG5hbWUKKyAgIEByZXR2YWwgU19P
SworICAgQHJldHZhbCBTX0ZBTFNFIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmV0dXJuLCBbb3V0
XSB2YWx1ZSBpcyBOVUxMCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIHRvb2xraXROYW1lCisg
ICAgKAorICAgICBbb3V0LCByZXR2YWxdIEJTVFIgKm5hbWUKKyAgICApOworCisgIC8qKiBAYnJp
ZWYgUmV0dXJucyB0aGUgdG9vbGtpdC9icmlkZ2UgdmVyc2lvbi4KKyAgIEBwYXJhbSBbb3V0XSB2
ZXJzaW9uCisgICAgVGhlIHZlcnNpb24gc3RyaW5nIG11c3Qgbm90IGNvbnRhaW4gbGV2ZWxzIHdo
ZW4gaXQgaXMga25vdyBiZWZvcmVoYW5kIHRoYXQKKyAgICB0aGlzIGluZm9ybWF0aW9uIHdpbGwg
bmV2ZXIgcmVxdWlyZSBhIGNoYW5nZSBpbiBhIGNsaWVudCdzIGJlaGF2aW9yLgorICAgIEZvciBl
eGFtcGxlLCB1c2UgIjMuNi4wIiByYXRoZXIgdGhhbiAiMy42LjAudjIwMTAwNTEzMTUwMCIuCisg
ICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxTRSBpZiB0aGVyZSBpcyBub3RoaW5nIHRv
IHJldHVybiwgW291dF0gdmFsdWUgaXMgTlVMTAorICAqLworICBbcHJvcGdldF0gSFJFU1VMVCB0
b29sa2l0VmVyc2lvbgorICAgICgKKyAgICAgW291dCwgcmV0dmFsXSBCU1RSICp2ZXJzaW9uCisg
ICAgKTsgIAorCit9CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNz
aWJsZTIvQWNjZXNzaWJsZVJlbGF0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVSZWxhdGlvbi5pZGwJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vz
c2libGVSZWxhdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMjcgQEAKKy8qKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCisgKgorICogIEZpbGUgTmFtZSAoQWNjZXNzaWJsZVJlbGF0aW9uLmlkbCkK
KyAqIAorICogIElBY2Nlc3NpYmxlMiBJREwgU3BlY2lmaWNhdGlvbiAKKyAqIAorICogIENvcHly
aWdodCAoYykgMjAwNywgMjAxMyBMaW51eCBGb3VuZGF0aW9uIAorICogIENvcHlyaWdodCAoYykg
MjAwNiBJQk0gQ29ycG9yYXRpb24gCisgKiAgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IFN1biBN
aWNyb3N5c3RlbXMsIEluYy4gCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gCisgKiAgIAorICog
ICAKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQgCisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIAorICogIGFyZSBtZXQ6IAorICogICAK
KyAqICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQgCisgKiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgIAorICogICAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyAKKyAqICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIAorICogICAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICoK
KyAqICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgTGludXggRm91bmRhdGlvbiBub3IgdGhl
IG5hbWVzIG9mIGl0cyAKKyAqICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyAKKyAqICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIAorICogICAgICBwZXJtaXNzaW9uLiAK
KyAqICAgCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIAorICogIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIAorICogIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAorICogIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAorICogIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIAorICogIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqICBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgCisg
KiAgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IAorICogIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIAorICogIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiAKKyAqICBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgCisgKiAgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgCisgKiAgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiAgIAorICogIFRo
aXMgQlNEIExpY2Vuc2UgY29uZm9ybXMgdG8gdGhlIE9wZW4gU291cmNlIEluaXRpYXRpdmUgIlNp
bXBsaWZpZWQgCisgKiAgQlNEIExpY2Vuc2UiIGFzIHB1Ymxpc2hlZCBhdDogCisgKiAgaHR0cDov
L3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAgCisgKiAgIAorICog
IElBY2Nlc3NpYmxlMiBpcyBhIHRyYWRlbWFyayBvZiB0aGUgTGludXggRm91bmRhdGlvbi4gVGhl
IElBY2Nlc3NpYmxlMiAKKyAqICBtYXJrIG1heSBiZSB1c2VkIGluIGFjY29yZGFuY2Ugd2l0aCB0
aGUgTGludXggRm91bmRhdGlvbiBUcmFkZW1hcmsgCisgKiAgUG9saWN5IHRvIGluZGljYXRlIGNv
bXBsaWFuY2Ugd2l0aCB0aGUgSUFjY2Vzc2libGUyIHNwZWNpZmljYXRpb24uIAorICogCisgKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqLyAKKworaW1wb3J0ICJvYmppZGwuaWRsIjsKK2ltcG9ydCAib2FpZGwuaWRs
IjsKK2ltcG9ydCAib2xlYWNjLmlkbCI7CisKKy8qKiBAZGVmZ3JvdXAgZ3JwUmVsYXRpb25zIFJl
bGF0aW9ucyAKKyAgVXNlIHRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIHRvIGNvbXBhcmUgYWdhaW5z
dCB0aGUgQlNUUnMgcmV0dXJuZWQgYnkgCisgIElBY2Nlc3NpYmxlUmVsYXRpb246OnJlbGF0aW9u
VHlwZS4KKyovIAorLy8vQHsKKworLyoqIFRoZSB0YXJnZXQgb2JqZWN0IGlzIHRoZSBjb250YWlu
aW5nIGFwcGxpY2F0aW9uIG9iamVjdC4gKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJ
T05fQ09OVEFJTklOR19BUFBMSUNBVElPTiA9IEwiY29udGFpbmluZ0FwcGxpY2F0aW9uIjsKKwor
LyoqIFRoZSB0YXJnZXQgb2JqZWN0IGlzIHRoZSBjb250YWluaW5nIGRvY3VtZW50IG9iamVjdC4g
VGhlIHRhcmdldCBvYmplY3QgaW1wbGVtZW50cworIHRoZSBJQWNjZXNzaWJsZURvY3VtZW50IGlu
dGVyZmFjZS4KKyovCitjb25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX0NPTlRBSU5JTkdf
RE9DVU1FTlQgPSBMImNvbnRhaW5pbmdEb2N1bWVudCI7CisKKy8qKiBUaGUgdGFyZ2V0IG9iamVj
dCBpcyB0aGUgY29udGFpbmluZyB0YWIgcGFuZSBvYmplY3QuICovCitjb25zdCBXQ0hBUiAqY29u
c3QgSUEyX1JFTEFUSU9OX0NPTlRBSU5JTkdfVEFCX1BBTkUgPSBMImNvbnRhaW5pbmdUYWJQYW5l
IjsKKworLyoqIFRoZSB0YXJnZXQgb2JqZWN0IGlzIHRoZSBjb250YWluaW5nIHdpbmRvdyBvYmpl
Y3QuICovCitjb25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX0NPTlRBSU5JTkdfV0lORE9X
ID0gTCJjb250YWluaW5nV2luZG93IjsKKworLyoqIFNvbWUgYXR0cmlidXRlIG9mIHRoaXMgb2Jq
ZWN0IGlzIGFmZmVjdGVkIGJ5IGEgdGFyZ2V0IG9iamVjdC4gKi8KK2NvbnN0IFdDSEFSICpjb25z
dCBJQTJfUkVMQVRJT05fQ09OVFJPTExFRF9CWSA9IEwiY29udHJvbGxlZEJ5IjsKKworLyoqIFRo
aXMgb2JqZWN0IGlzIGludGVyYWN0aXZlIGFuZCBjb250cm9scyBzb21lIGF0dHJpYnV0ZSBvZiBh
IHRhcmdldCBvYmplY3QuICovCitjb25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX0NPTlRS
T0xMRVJfRk9SID0gTCJjb250cm9sbGVyRm9yIjsKKworLyoqIFRoaXMgb2JqZWN0IGlzIGRlc2Ny
aWJlZCBieSB0aGUgdGFyZ2V0IG9iamVjdC4gKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVM
QVRJT05fREVTQ1JJQkVEX0JZID0gTCJkZXNjcmliZWRCeSI7CisKKy8qKiBUaGlzIG9iamVjdCBp
cyBkZXNjcmliZXMgdGhlIHRhcmdldCBvYmplY3QuICovCitjb25zdCBXQ0hBUiAqY29uc3QgSUEy
X1JFTEFUSU9OX0RFU0NSSVBUSU9OX0ZPUiA9IEwiZGVzY3JpcHRpb25Gb3IiOworCisvKiogVGhp
cyBvYmplY3QgaXMgZW1iZWRkZWQgYnkgYSB0YXJnZXQgb2JqZWN0LiAqLworY29uc3QgV0NIQVIg
KmNvbnN0IElBMl9SRUxBVElPTl9FTUJFRERFRF9CWSA9IEwiZW1iZWRkZWRCeSI7CisKKy8qKiBU
aGlzIG9iamVjdCBlbWJlZHMgYSB0YXJnZXQgb2JqZWN0LiBUaGlzIHJlbGF0aW9uIGNhbiBiZSB1
c2VkIG9uIHRoZQorIE9CSklEX0NMSUVOVCBhY2Nlc3NpYmxlIGZvciBhIHRvcCBsZXZlbCB3aW5k
b3cgdG8gc2hvdyB3aGVyZSB0aGUgY29udGVudCAKKyBhcmVhcyBhcmUuCisqLworY29uc3QgV0NI
QVIgKmNvbnN0IElBMl9SRUxBVElPTl9FTUJFRFMgPSBMImVtYmVkcyI7CisKKy8qKiBDb250ZW50
IGZsb3dzIHRvIHRoaXMgb2JqZWN0IGZyb20gYSB0YXJnZXQgb2JqZWN0LiAKKyBUaGlzIHJlbGF0
aW9uIGFuZCBJQTJfUkVMQVRJT05fRkxPV1NfVE8gYXJlIHVzZWZ1bCB0byB0aWUgdGV4dCBhbmQg
bm9uLXRleHQKKyBvYmplY3RzIHRvZ2V0aGVyIGluIG9yZGVyIHRvIGFsbG93IGFzc2lzdGl2ZSB0
ZWNobm9sb2d5IHRvIGZvbGxvdyB0aGUKKyBpbnRlbmRlZCByZWFkaW5nIG9yZGVyLgorKi8KK2Nv
bnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fRkxPV1NfRlJPTSA9IEwiZmxvd3NGcm9tIjsK
KworLyoqIENvbnRlbnQgZmxvd3MgZnJvbSB0aGlzIG9iamVjdCB0byBhIHRhcmdldCBvYmplY3Qu
ICovCitjb25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX0ZMT1dTX1RPID0gTCJmbG93c1Rv
IjsKKworLyoqIFRoaXMgb2JqZWN0IGlzIGxhYmVsIGZvciBhIHRhcmdldCBvYmplY3QuICovCitj
b25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX0xBQkVMX0ZPUiA9IEwibGFiZWxGb3IiOwor
CisvKiogVGhpcyBvYmplY3QgaXMgbGFiZWxsZWQgYnkgYSB0YXJnZXQgb2JqZWN0LiBOb3RlIHRo
YXQgdGhlIGRvdWJsZSBMIHNwZWxsaW5nCisgd2hpY2ggZm9sbG93cyBpcyBwcmVmZXJyZWQuICBQ
bGVhc2UgdXNlIGl0IGluc3RlYWQuICBUaGlzIHNpbmdsZSBMIHZlcnNpb24gbWF5CisgYmUgcmVt
b3ZlZCBpbiBhIGxhdGVyIHZlcnNpb24uCisqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxB
VElPTl9MQUJFTEVEX0JZID0gTCJsYWJlbGxlZEJ5IjsKKworLyoqIFRoaXMgb2JqZWN0IGlzIGxh
YmVsbGVkIGJ5IGEgdGFyZ2V0IG9iamVjdC4gKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVM
QVRJT05fTEFCRUxMRURfQlkgPSBMImxhYmVsbGVkQnkiOworCisvKiogVGhpcyBvYmplY3QgaXMg
YSBtZW1iZXIgb2YgYSBncm91cCBvZiBvbmUgb3IgbW9yZSBvYmplY3RzLiBXaGVuIAorIHRoZXJl
IGlzIG1vcmUgdGhhbiBvbmUgb2JqZWN0IGluIHRoZSBncm91cCBlYWNoIG1lbWJlciBtYXkgaGF2
ZSBvbmUgYW5kIHRoZSAKKyBzYW1lIHRhcmdldCwgZS5nLiBhIGdyb3VwaW5nIG9iamVjdC4gIEl0
IGlzIGFsc28gcG9zc2libGUgdGhhdCBlYWNoIG1lbWJlciBoYXMgCisgbXVsdGlwbGUgYWRkaXRp
b25hbCB0YXJnZXRzLCBlLmcuIG9uZSBmb3IgZXZlcnkgb3RoZXIgbWVtYmVyIGluIHRoZSBncm91
cC4KKyovCitjb25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX01FTUJFUl9PRiA9IEwibWVt
YmVyT2YiOworCisvKiogVGhlIHRhcmdldCBvYmplY3QgaXMgdGhlIG5leHQgb2JqZWN0IGluIHRo
ZSB0YWIgb3JkZXIuICovCitjb25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX05FWFRfVEFC
QkFCTEUgPSBMIm5leHRUYWJiYWJsZSI7CisKKy8qKiBUaGlzIG9iamVjdCBpcyBhIGxvZ2ljYWwg
Y2hpbGQgb2YgYSB0YXJnZXQgb2JqZWN0LiAgVGhpcyByZWxhdGlvbiBpcyB0aGUgcmVjaXByb2Nh
bAorIG9mIHRoZSBJQTJfUkVMQVRJT05fTk9ERV9QQVJFTlRfT0YgcmVsYXRpb24uIEluIHNvbWUg
Y2FzZXMgYW4gYXBwbGljYXRpb24ncyBhY2Nlc3NpYmxlCisgdHJlZSBpcyBzdWNoIHRoYXQgb2Jq
ZWN0cyBjYW4gYmUgaW4gYSBsb2dpY2FsIHBhcmVudC1jaGlsZCByZWxhdGlvbnNoaXAgd2hpY2gg
aXMKKyBkaWZmZXJlbnQgZnJvbSB0aGUgaGllcmFyY2h5IG9mIHRoZSBhY2Nlc3NpYmxlIHRyZWUu
ICovCitjb25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX05PREVfQ0hJTERfT0YgPSBMIm5v
ZGVDaGlsZE9mIjsKKworLyoqIFRoaXMgb2JqZWN0IGlzIGEgbG9naWNhbCBwYXJlbnQgb2YgYSB0
YXJnZXQgb2JqZWN0LiBUaGlzIHJlbGF0aW9uIGlzIHRoZSByZWNpcHJvY2FsCisgb2YgdGhlIElB
Ml9SRUxBVElPTl9OT0RFX0NISUxEX09GIHJlbGF0aW9uLiBJbiBzb21lIGNhc2VzIGFuIGFwcGxp
Y2F0aW9uJ3MgYWNjZXNzaWJsZQorIHRyZWUgaXMgc3VjaCB0aGF0IG9iamVjdHMgY2FuIGJlIGlu
IGEgbG9naWNhbCBwYXJlbnQtY2hpbGQgcmVsYXRpb25zaGlwIHdoaWNoIGlzCisgZGlmZmVyZW50
IGZyb20gdGhlIGhpZXJhcmNoeSBvZiB0aGUgYWNjZXNzaWJsZSB0cmVlLiAqLworY29uc3QgV0NI
QVIgKmNvbnN0IElBMl9SRUxBVElPTl9OT0RFX1BBUkVOVF9PRiA9IEwibm9kZVBhcmVudE9mIjsK
KworLyoqIFRoaXMgb2JqZWN0IGlzIGEgcGFyZW50IHdpbmRvdyBvZiB0aGUgdGFyZ2V0IG9iamVj
dC4gKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fUEFSRU5UX1dJTkRPV19PRiA9
IEwicGFyZW50V2luZG93T2YiOworCisvKiogVGhpcyBvYmplY3QgaXMgYSB0cmFuc2llbnQgY29t
cG9uZW50IHJlbGF0ZWQgdG8gdGhlIHRhcmdldCBvYmplY3QuIAorIFdoZW4gdGhpcyBvYmplY3Qg
aXMgYWN0aXZhdGVkIHRoZSB0YXJnZXQgb2JqZWN0IGRvZXNuJ3QgbG9zZSBmb2N1cy4KKyovCitj
b25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX1BPUFVQX0ZPUiA9IEwicG9wdXBGb3IiOwor
CisvKiogVGhlIHRhcmdldCBvYmplY3QgaXMgdGhlIHByZXZpb3VzIG9iamVjdCBpbiB0aGUgdGFi
IG9yZGVyLiAqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxBVElPTl9QUkVWSU9VU19UQUJC
QUJMRSA9IEwicHJldmlvdXNUYWJiYWJsZSI7CisKKy8qKiBUaGlzIG9iamVjdCBpcyBhIHN1YiB3
aW5kb3cgb2YgYSB0YXJnZXQgb2JqZWN0LiAqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxB
VElPTl9TVUJXSU5ET1dfT0YgPSBMInN1YndpbmRvd09mIjsKKworLy8vQH0KKworLyoqIFRoaXMg
aW50ZXJmYWNlIGdpdmVzIGFjY2VzcyB0byBhbiBvYmplY3QncyBzZXQgb2YgcmVsYXRpb25zLgor
Ki8KK1tvYmplY3QsIHV1aWQoN0NERjg2RUUtQzNEQS00OTZhLUJEQTQtMjgxQjMzNkUxRkRDKV0K
K2ludGVyZmFjZSBJQWNjZXNzaWJsZVJlbGF0aW9uIDogSVVua25vd24KK3sKKyAgLyoqIEBicmll
ZiBSZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSByZWxhdGlvbi4KKyAgIEBwYXJhbSBbb3V0XSByZWxh
dGlvblR5cGUKKyAgICBUaGUgc3RyaW5ncyByZXR1cm5lZCBhcmUgZGVmaW5lZCBAcmVmIGdycFJl
bGF0aW9ucyAiaW4gdGhpcyBzZWN0aW9uIG9mIHRoZSBkb2N1bWVudGF0aW9uIi4KKyAgIEByZXR2
YWwgU19PSworICAqLworICBbcHJvcGdldF0gSFJFU1VMVCByZWxhdGlvblR5cGUKKyAgICAoCisg
ICAgIFtvdXQsIHJldHZhbF0gQlNUUiAqcmVsYXRpb25UeXBlCisgICAgKTsKKworICAvKiogQGJy
aWVmIFJldHVybnMgYSBsb2NhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgcmVsYXRpb24gdHlwZS4KKyAg
IEBwYXJhbSBbb3V0XSBsb2NhbGl6ZWRSZWxhdGlvblR5cGUKKyAgIEByZXR2YWwgU19PSworICAq
LworICBbcHJvcGdldF0gSFJFU1VMVCBsb2NhbGl6ZWRSZWxhdGlvblR5cGUKKyAgICAoCisgICAg
IFtvdXQsIHJldHZhbF0gQlNUUiAqbG9jYWxpemVkUmVsYXRpb25UeXBlCisgICAgKTsKKworICAv
KiogQGJyaWVmIFJldHVybnMgdGhlIG51bWJlciBvZiB0YXJnZXRzIGZvciB0aGlzIHJlbGF0aW9u
LgorICAgQHBhcmFtIFtvdXRdIG5UYXJnZXRzCisgICBAcmV0dmFsIFNfT0sKKyAgKi8KKyAgW3By
b3BnZXRdIEhSRVNVTFQgblRhcmdldHMKKyAgICAoCisgICAgIFtvdXQsIHJldHZhbF0gbG9uZyAq
blRhcmdldHMKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJucyBvbmUgYWNjZXNzaWJsZSBy
ZWxhdGlvbiB0YXJnZXQuCisgICBAcGFyYW0gW2luXSB0YXJnZXRJbmRleAorICAgIDAgYmFzZWQg
aW5kZXgKKyAgIEBwYXJhbSBbb3V0XSB0YXJnZXQKKyAgIEByZXR2YWwgU19PSworICAgQHJldHZh
bCBFX0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFzc2VkCisgICBAbm90ZSBVc2UgUXVlcnlJbnRl
cmZhY2UgdG8gZ2V0IElBY2Nlc3NpYmxlMi4KKyAgKi8KKyAgW3Byb3BnZXRdIEhSRVNVTFQgdGFy
Z2V0CisgICAgKAorICAgICBbaW5dIGxvbmcgdGFyZ2V0SW5kZXgsCisgICAgIFtvdXQsIHJldHZh
bF0gSVVua25vd24gKip0YXJnZXQgCisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMgbXVs
dGlwbGUgYWNjZXNzaWJsZSByZWxhdGlvbiB0YXJnZXRzCisgICBAcGFyYW0gW2luXSBtYXhUYXJn
ZXRzCisgICAgbWF4aW11bSBzaXplIG9mIHRoZSBhcnJheSBhbGxvY2F0ZWQgYnkgdGhlIGNsaWVu
dAorICAgQHBhcmFtIFtvdXRdIHRhcmdldHMKKyAgICBUaGUgYXJyYXkgb2YgdGFyZ2V0IG9iamVj
dHMuICBOb3RlIHRoYXQgdGhpcyBhcnJheSBpcyB0byBiZSBhbGxvY2F0ZWQgYnkgdGhlCisgICAg
Y2xpZW50IGFuZCBmcmVlZCB3aGVuIG5vIGxvbmdlciBuZWVkZWQuICBSZWZlciB0byBAcmVmIF9h
cnJheUNvbnNpZGVyYXRpb24gCisgICAgIlNwZWNpYWwgQ29uc2lkZXJhdGlvbiB3aGVuIHVzaW5n
IEFycmF5cyIgZm9yIG1vcmUgZGV0YWlscy4gIFlvdSB3aWxsIG5lZWQgdG8gdXNlIAorICAgIFF1
ZXJ5SW50ZXJmYWNlIG9uIHRoZSBJVW5rbm93biB0byBnZXQgdGhlIElBY2Nlc3NpYmxlMi4KKyAg
IEBwYXJhbSBbb3V0XSBuVGFyZ2V0cworICAgIGFjdHVhbCBudW1iZXIgb2YgdGFyZ2V0cyBpbiB0
aGUgcmV0dXJuZWQgYXJyYXkgKG5vdCBtb3JlIHRoYW4gbWF4VGFyZ2V0cykKKyAgIEByZXR2YWwg
U19PSworICAgQHJldHZhbCBFX0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFzc2VkLCBlLmcuIGEg
bmVnYXRpdmUgdmFsdWUKKyAgKi8KKyAgW3Byb3BnZXRdIEhSRVNVTFQgdGFyZ2V0cworICAgICgK
KyAgICAgW2luXSBsb25nIG1heFRhcmdldHMsIAorICAgICBbb3V0LCBzaXplX2lzKG1heFRhcmdl
dHMpLCBsZW5ndGhfaXMoKm5UYXJnZXRzKV0KKyAgICAgICBJVW5rbm93biAqKnRhcmdldHMsIAor
ICAgICBbb3V0LCByZXR2YWxdIGxvbmcgKm5UYXJnZXRzIAorICAgICk7CisKK30KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZVN0YXRlcy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxl
Mi9BY2Nlc3NpYmxlU3RhdGVzLmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZVN0YXRlcy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyMDkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogIEZpbGUgTmFt
ZSAoQWNjZXNzaWJsZVN0YXRlcy5pZGwpCisgKiAKKyAqICBJQWNjZXNzaWJsZTIgSURMIFNwZWNp
ZmljYXRpb24gCisgKiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMTAgTGludXggRm91bmRh
dGlvbiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIAorICogIENvcHly
aWdodCAoYykgMjAwMCwgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIAorICogIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuIAorICogICAKKyAqICAgCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyAKKyAqICBhcmUgbWV0OiAKKyAqICAgCisgKiAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IAorICogICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAor
ICogICAKKyAqICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSAKKyAqICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgCisgKiAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyAKKyAqICAgICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqCisgKiAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhl
IExpbnV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgCisgKiAgICAgIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgCisgKiAgICAg
IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biAKKyAqICAgICAgcGVybWlzc2lvbi4gCisgKiAgIAorICogIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqICBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKKyAqICBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqICBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSAK
KyAqICBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBP
UiAKKyAqICBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIAorICogIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyAKKyAqICBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSAKKyAqICBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gCisgKiAgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIAor
ICogIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIAorICogIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICogICAKKyAqICBUaGlzIEJTRCBMaWNlbnNlIGNvbmZvcm1zIHRvIHRoZSBP
cGVuIFNvdXJjZSBJbml0aWF0aXZlICJTaW1wbGlmaWVkIAorICogIEJTRCBMaWNlbnNlIiBhcyBw
dWJsaXNoZWQgYXQ6IAorICogIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNk
LWxpY2Vuc2UucGhwIAorICogICAKKyAqICBJQWNjZXNzaWJsZTIgaXMgYSB0cmFkZW1hcmsgb2Yg
dGhlIExpbnV4IEZvdW5kYXRpb24uIFRoZSBJQWNjZXNzaWJsZTIgCisgKiAgbWFyayBtYXkgYmUg
dXNlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIExpbnV4IEZvdW5kYXRpb24gVHJhZGVtYXJrIAor
ICogIFBvbGljeSB0byBpbmRpY2F0ZSBjb21wbGlhbmNlIHdpdGggdGhlIElBY2Nlc3NpYmxlMiBz
cGVjaWZpY2F0aW9uLiAKKyAqIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gCisKK2ltcG9ydCAib2JqaWRs
LmlkbCI7CisKK3R5cGVkZWYgbG9uZyBBY2Nlc3NpYmxlU3RhdGVzOworCisvKiogJUlBY2Nlc3Np
YmxlMiBzcGVjaWZpYyBzdGF0ZSBiaXQgY29uc3RhbnRzCisKKyAgVGhpcyBlbnVtIGRlZmluZXMg
dGhlIHN0YXRlIGJpdHMgcmV0dXJuZWQgYnkgSUFjY2Vzc2libGUyOjpzdGF0ZXMuICBUaGUgCisg
ICVJQWNjZXNzaWJsZTIgc3RhdGUgYml0cyBhcmUgaW4gYWRkaXRpb24gdG8gdGhvc2UgcmV0dXJu
ZWQgYnkgTVNBQS4KKyovCitlbnVtIElBMlN0YXRlcyB7CisKKy8qKiBJbmRpY2F0ZXMgYSB3aW5k
b3cgaXMgY3VycmVudGx5IHRoZSBhY3RpdmUgd2luZG93LCBvciBpcyBhbiBhY3RpdmUgc3ViZWxl
bWVudCAKKyAgd2l0aGluIGEgY29udGFpbmVyIG9yIHRhYmxlLgorCisgVGhpcyBzdGF0ZSBjYW4g
YmUgdXNlZCB0byBpbmRpY2F0ZSB0aGUgY3VycmVudCBhY3RpdmUgaXRlbSBpbiBhIGNvbnRhaW5l
ciwgZXZlbiAKKyAgaWYgdGhlIGNvbnRhaW5lciBpdHNlbGYgaXMgbm90IGN1cnJlbnRseSBhY3Rp
dmUuIEluIG90aGVyIHdvcmRzIHRoaXMgd291bGQgaW5kaWNhdGUKKyAgdGhlIGl0ZW0gdGhhdCB3
aWxsIGdldCBmb2N1cyBpZiB5b3UgdGFiIHRvIHRoZSBjb250YWluZXIuCisKKyBUaGlzIGluZm9y
bWF0aW9uIGlzIGltcG9ydGFudCBmb3Iga25vd2luZyB3aGF0IHRvIHJlcG9ydCBmb3IgdHJlZXMg
YW5kIHBvdGVudGlhbGx5IAorICBvdGhlciBjb250YWluZXJzIGluIGEgdmlydHVhbCBidWZmZXIu
CisKKyBBbHNvLCBzZWUgOjpJQTJfU1RBVEVfTUFOQUdFU19ERVNDRU5EQU5UUyBmb3IgbW9yZSBp
bmZvcm1hdGlvbi4KKyovCitJQTJfU1RBVEVfQUNUSVZFID0gMHgxLAorCisvKiogSW5kaWNhdGVz
IHRoYXQgdGhlIG9iamVjdCBpcyBhcm1lZC4KKworIFVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUg
Y29udHJvbCBpcyAicHJlc3NlZCIgYW5kIHdpbGwgYmUgaW52b2tlZCB3aGVuIHRoZSAKKyAgYWN0
dWF0b3IsIGUuZy4gYSBtb3VzZSBidXR0b24sIGlzICJyZWxlYXNlZCIuICBBbiBBVCB3aGljaCBl
aXRoZXIgbW9uaXRvcnMgdGhlIAorICBtb3VzZSBvciBzeW50aGVzaXplcyBtb3VzZSBldmVudHMg
bWlnaHQgbmVlZCB0byBrbm93IHRoYXQsIGFuZCBwb3NzaWJseSBhIHRhbGtpbmcKKyAgaW50ZXJm
YWNlIHdvdWxkIGV2ZW4gbGV0IHRoZSB1c2VyIGtub3cgYWJvdXQgaXQuICBJdCBjb3VsZCBhbHNv
IHBvdGVudGlhbGx5IGJlCisgIHVzZWZ1bCB0byBvbiBzY3JlZW4ga2V5Ym9hcmRzIG9yIHRlc3Qg
dG9vbHMgc2luY2UgdGhlIGluZm9ybWF0aW9uIGRvZXMgaW5kaWNhdGUKKyAgc29tZXRoaW5nIGFi
b3V0IHRoZSBzdGF0ZSBvZiB0aGUgaW50ZXJmYWNlLCBmb3IgZXhhbXBsZSwgY29kZSBvcGVyYXRp
bmcgYXN5bmNocm9ub3VzbHkKKyAgbWlnaHQgbmVlZCB0byB3YWl0IGZvciB0aGUgYXJtZWQgc3Rh
dGUgdG8gY2hhbmdlIGJlZm9yZSBkb2luZyBzb21ldGhpbmcgZWxzZS4KKworKi8KK0lBMl9TVEFU
RV9BUk1FRCA9IDB4MiwKKworLyoqIEluZGljYXRlcyB0aGUgdXNlciBpbnRlcmZhY2Ugb2JqZWN0
IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBvYmplY3Qgbm8gbG9uZ2VyIGV4aXN0cy4gKi8KK0lBMl9T
VEFURV9ERUZVTkNUID0gMHg0LAorCisvKiogQW4gb2JqZWN0IHdpdGggdGhpcyBzdGF0ZSBoYXMg
YSBjYXJldCBhbmQgaW1wbGVtZW50cyB0aGUgSUFjY2Vzc2libGVUZXh0IGludGVyZmFjZS4KKyAg
CisgU3VjaCBmaWVsZHMgbWF5IGJlIHJlYWQtb25seSwgc28gU1RBVEVfU1lTVEVNX1JFQURPTkxZ
IGlzIHZhbGlkIGluIGNvbWJpbmF0aW9uCisgIHdpdGggSUEyX1NUQVRFX0VESVRBQkxFLgorCisq
LworSUEyX1NUQVRFX0VESVRBQkxFID0gMHg4LAorCisvKiogSW5kaWNhdGVzIHRoZSBvcmllbnRh
dGlvbiBvZiB0aGlzIG9iamVjdCBpcyBob3Jpem9udGFsLiAqLworSUEyX1NUQVRFX0hPUklaT05U
QUwgPSAweDEwLAorCisvKiogSW5kaWNhdGVzIHRoaXMgb2JqZWN0IGlzIG1pbmltaXplZCBhbmQg
aXMgcmVwcmVzZW50ZWQgb25seSBieSBhbiBpY29uLiAqLworSUEyX1NUQVRFX0lDT05JRklFRCA9
IDB4MjAsCisKKy8qKiBJbmRpY2F0ZXMgYW4gaW5wdXQgdmFsaWRhdGlvbiBmYWlsdXJlLiAqLwor
SUEyX1NUQVRFX0lOVkFMSURfRU5UUlkgPSAweDQwLAorCisvKiogSW5kaWNhdGVzIHRoYXQgdGhp
cyBvYmplY3QgbWFuYWdlcyBpdHMgY2hpbGRyZW4uCisKKyBOb3RlOiBEdWUgdG8gdGhlIGZhY3Qg
dGhhdCBNU0FBJ3MgV2luRXZlbnRzIGRvbid0IGFsbG93IHRoZSBhY3RpdmUgY2hpbGQgaW5kZXgK
KyAgdG8gYmUgcGFzc2VkIG9uIHRoZSBJQTJfRVZFTlRfQUNUSVZFX0RFU0NFTkRBTlRfQ0hBTkdF
RCBldmVudCwgdGhlIG1hbmFnZXMKKyAgZGVzY2VuZGFudHMgc2NoZW1lIGNhbid0IGJlIHVzZWQu
ICBJbnN0ZWFkIHRoZSBhY3RpdmUgY2hpbGQgb2JqZWN0IGhhcyB0byBmaXJlCisgIE1TQUEncyBF
VkVOVF9PQkpFQ1RfRk9DVVMuICBJbiBhIGZ1dHVyZSByZWxlYXNlIGEgbmV3IGV2ZW50IG1lY2hh
bmlzbSBtYXkgYmUKKyAgYWRkZWQgdG8gcHJvdmlkZSBmb3IgZXZlbnQgc3BlY2lmaWMgZGF0YSB0
byBiZSBwYXNzZWQgd2l0aCB0aGUgZXZlbnQuICBBdCB0aGF0CisgIHRpbWUgdGhlIElBMl9FVkVO
VF9BQ1RJVkVfREVDRU5ERU5UX0NIQU5HRUQgZXZlbnQgYW5kCisgIElBMl9TVEFURV9NQU5BR0VT
X0RFU0NFTkRBTlRTIHN0YXRlIHdvdWxkIGJlIHVzZWZ1bC4KKyovCitJQTJfU1RBVEVfTUFOQUdF
U19ERVNDRU5EQU5UUyA9IDB4ODAsCisKKy8qKiBJbmRpY2F0ZXMgdGhhdCBhbiBvYmplY3QgaXMg
bW9kYWwuCisKKyBNb2RhbCBvYmplY3RzIGhhdmUgdGhlIGJlaGF2aW9yIHRoYXQgc29tZXRoaW5n
IG11c3QgYmUgZG9uZSB3aXRoIHRoZSBvYmplY3QgCisgIGJlZm9yZSB0aGUgdXNlciBjYW4gaW50
ZXJhY3Qgd2l0aCBhbiBvYmplY3QgaW4gYSBkaWZmZXJlbnQgd2luZG93LgorKi8KK0lBMl9TVEFU
RV9NT0RBTCA9IDB4MTAwLAorCisvKiogSW5kaWNhdGVzIHRoaXMgdGV4dCBvYmplY3QgY2FuIGNv
bnRhaW4gbXVsdGlwbGUgbGluZXMgb2YgdGV4dC4gKi8KK0lBMl9TVEFURV9NVUxUSV9MSU5FID0g
MHgyMDAsCisKKy8qKiBJbmRpY2F0ZXMgdGhpcyBvYmplY3QgcGFpbnRzIGV2ZXJ5IHBpeGVsIHdp
dGhpbiBpdHMgcmVjdGFuZ3VsYXIgcmVnaW9uLiAqLworSUEyX1NUQVRFX09QQVFVRSA9IDB4NDAw
LAorCisvKiogSW5kaWNhdGVzIHRoYXQgdXNlciBpbnRlcmFjdGlvbiBpcyByZXF1aXJlZC4KKwor
IEFuIGV4YW1wbGUgb2Ygd2hlbiB0aGlzIHN0YXRlIGlzIHVzZWQgaXMgd2hlbiBhIGZpZWxkIGlu
IGEgZm9ybSBtdXN0IGJlIGZpbGxlZCAKKyAgYmVmb3JlIGEgZm9ybSBjYW4gYmUgcHJvY2Vzc2Vk
LgorKi8KK0lBMl9TVEFURV9SRVFVSVJFRCA9IDB4ODAwLAorCisvKiogSW5kaWNhdGVzIGFuIG9i
amVjdCB3aGljaCBzdXBwb3J0cyB0ZXh0IHNlbGVjdGlvbi4KKworIE5vdGU6IFRoaXMgaXMgZGlm
ZmVyZW50IHRoYW4gTVNBQSBTVEFURV9TWVNURU1fU0VMRUNUQUJMRS4KKyovCitJQTJfU1RBVEVf
U0VMRUNUQUJMRV9URVhUID0gMHgxMDAwLAorCisvKiogSW5kaWNhdGVzIHRoYXQgdGhpcyB0ZXh0
IG9iamVjdCBjYW4gY29udGFpbiBvbmx5IGEgc2luZ2xlIGxpbmUgb2YgdGV4dC4gKi8KK0lBMl9T
VEFURV9TSU5HTEVfTElORSA9IDB4MjAwMCwKKworLyoqIEluZGljYXRlcyB0aGF0IHRoZSBhY2Nl
c3NpYmxlIG9iamVjdCBpcyBzdGFsZS4KKworIFRoaXMgc3RhdGUgaXMgdXNlZCB3aGVuIHRoZSBh
Y2Nlc3NpYmxlIG9iamVjdCBubyBsb25nZXIgYWNjdXJhdGVseSAKKyAgcmVwcmVzZW50cyB0aGUg
c3RhdGUgb2YgdGhlIG9iamVjdCB3aGljaCBpdCBpcyByZXByZXNlbnRpbmcgc3VjaCBhcyB3aGVu
IGFuCisgIG9iamVjdCBpcyB0cmFuc2llbnQgb3Igd2hlbiBhbiBvYmplY3QgaGFzIGJlZW4gb3Ig
aXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcKKyAgZGVzdHJveWVkIG9yIHdoZW4gdGhlIG9iamVj
dCdzIGluZGV4IGluIGl0cyBwYXJlbnQgaGFzIGNoYW5nZWQuCisqLworSUEyX1NUQVRFX1NUQUxF
ID0gMHg0MDAwLAorCisvKiogSW5kaWNhdGVzIHRoYXQgdGhlIG9iamVjdCBpbXBsZW1lbnRzIGF1
dG9jb21wbGV0aW9uLgorCisgVGhpcyBzdGF0ZSBpbmRpY2F0ZXMgdGhhdCBhIHRleHQgY29udHJv
bCB3aWxsIHJlc3BvbmQgdG8gdGhlIGlucHV0IG9mIAorIG9uZSBvcmUgbW9yZSBjaGFyYWN0ZXJz
IGFuZCBjYXVzZSBhIHN1Yi1pdGVtIHRvIGJlY29tZSBzZWxlY3RlZC4gIFRoZSAKKyBzZWxlY3Rp
b24gbWF5IGFsc28gcmVzdWx0IGluIGV2ZW50cyBmaXJlZCBvbiB0aGUgcGFyZW50IG9iamVjdC4K
KyovCitJQTJfU1RBVEVfU1VQUE9SVFNfQVVUT0NPTVBMRVRJT04gPSAweDgwMDAsCisKKy8qKiBJ
bmRpY2F0ZXMgdGhpcyBvYmplY3QgaXMgdHJhbnNpZW50LgorCisgQW4gb2JqZWN0IGhhcyB0aGlz
IHN0YXRlIHdoZW4gaXRzIHBhcmVudCBvYmplY3QgaGFzIHRoZSBzdGF0ZSA6OklBMl9TVEFURV9N
QU5BR0VTX0RFU0NFTkRBTlRTLgorIEZvciBleGFtcGxlLCBhIGxpc3QgaXRlbSBvYmplY3QgbWF5
IGJlIG1hbmFnZWQgYnkgaXRzIHBhcmVudCBsaXN0IG9iamVjdCBhbmQgbWF5IG9ubHkgCisgZXhp
c3QgYXMgbG9uZyBhcyB0aGUgb2JqZWN0IGlzIGFjdHVhbGx5IHJlbmRlcmVkLiAgU2ltaWxhcmx5
IGEgdGFibGUgY2VsbCdzIGFjY2Vzc2libGUgCisgb2JqZWN0IG1heSBleGlzdCBvbmx5IHdoaWxl
IHRoZSBjZWxsIGhhcyBmb2N1cy4gIEhvd2V2ZXIsIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIGFu
IAorIGFzc2lzdGl2ZSB0ZWNobm9sb2d5IGEgdHJhbnNpZW50IG9iamVjdCBiZWhhdmVzIGxpa2Ug
YSBub24tdHJhbnNpZW50IG9iamVjdC4gIEFzIGEgCisgcmVzdWx0IGl0IGlzIGxpa2VseSB0aGF0
IHRoaXMgc3RhdGUgaXMgbm90IG9mIHVzZSB0byBhbiBhc3Npc3RpdmUgdGVjaG5vbG9neSwgYnV0
IGl0IAorIGlzIHByb3ZpZGVkIGluIGNhc2UgYW4gYXNzaXN0aXZlIHRlY2hub2xvZ3kgZGV0ZXJt
aW5lcyB0aGF0IGtub3dsZWRnZSBvZiB0aGUgdHJhbnNpZW50IAorIG5hdHVyZSBvZiB0aGUgb2Jq
ZWN0IGlzIHVzZWZ1bCBhbmQgYWxzbyBmb3IgaGFybW9ueSB3aXRoIHRoZSBMaW51eCBhY2Nlc3Np
YmlsaXR5IEFQSS4KKworIEFsc28sIHNlZSA6OklBMl9TVEFURV9NQU5BR0VTX0RFU0NFTkRBTlRT
IGZvciBtb3JlIGluZm9ybWF0aW9uLgorICovCitJQTJfU1RBVEVfVFJBTlNJRU5UID0gMHgxMDAw
MCwKKworLyoqIEluZGljYXRlcyB0aGUgb3JpZW50YXRpb24gb2YgdGhpcyBvYmplY3QgaXMgdmVy
dGljYWwuICovCitJQTJfU1RBVEVfVkVSVElDQUwgPSAweDIwMDAwLAorCisvKiogSW5kaWNhdGVz
IHRoaXMgb2JqZWN0IGlzIGNoZWNrYWJsZS4KKworIFRoZSBzdGFuZGFyZCBjaGVja2FibGUgb2Jq
ZWN0cyBhcmUgY2hlY2sgYm94ZXMsIHJhZGlvIGJ1dHRvbnMsIGNoZWNrIGJveCBtZW51CisgaXRl
bXMsIHJhZGlvIG1lbnUgaXRlbXMsIGFuZCB0b2dnbGUgYnV0dG9ucy4gIFNpbmNlIGFzc2lzdGl2
ZSB0ZWNobm9sb2d5IHdpbGwKKyBkZXRlcm1pbmUgdGhhdCB0aGVzZSBvYmplY3RzIGFyZSBjaGVj
a2FibGUgdmlhIHRoZSBvYmplY3QncyByb2xlIHRoZSBjaGVja2FibGUKKyBzdGF0ZSBpcyBub3Qg
cmVxdWlyZWQuICBIb3dldmVyLCB0aGlzIHN0YXRlIGlzIG5lY2Vzc2FyeSBpbiB0aG9zZSBjYXNl
cyB3aGVyZQorIGFuIG9iamVjdCBoYXMgYSByb2xlIHdoaWNoIGlzIG5vdCBvbmUgb2YgdGhlIHBy
ZXZpb3VzbHkgbWVudGlvbmVkIHJvbGVzLiAgQW4KKyBleGFtcGxlIGlzIGEgdGFibGUgY2VsbCB3
aGljaCBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgYW4gZW1haWwgaGFzIGFuIGF0dGFjaG1lbnQs
Cisgd2hldGhlciBvciBub3QgYW4gbWFpbCBpcyBjb25zaWRlcmVkIHNwYW0sIGFuZCB3aGV0aGVy
IG9yIG5vdCBhbiBlbWFpbCBoYXMgYmVlbiByZWFkLgorICovCitJQTJfU1RBVEVfQ0hFQ0tBQkxF
ID0gMHg0MDAwMCwKKworLyoqIEluZGljYXRlcyB0aGlzIG9iamVjdCBpcyBwaW5uZWQuCisKKyBU
aGlzIHN0YXRlIGluZGljYXRlcyB0aGF0IGFuIG9iamVjdCBpcyBmaXhlZCBhdCBhIGNlcnRhaW4g
bG9jYXRpb24uICBPbmUgZXhhbXBsZQorIGlzIGEgYnJvd3NlciB0YWIgdGhhdCB3aGVuIHBpbm5l
ZCBjYW5ub3QgYmUgbW92ZWQgdW50aWwgdW5waW5uZWQuICBBbm90aGVyIGV4YW1wbGUKKyBpcyBh
IG1vdmFibGUgb3IgZmxvYXRpbmcgb2JqZWN0IHRoYXQgd2hlbiBwaW5uZWQgcmVtYWlucyBpbiBp
dHMgcGlubmVkIGxvY2F0aW9uCisgdW50aWwgYmVpbmcgdW5waW5uZWQuCisgKi8KK0lBMl9TVEFU
RV9QSU5ORUQgPSAweDgwMDAwCisKK307CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0FjY2Vzc2libGUyL0lBMkNvbW1vblR5cGVzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0lBMkNvbW1vblR5cGVzLmlkbAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvSUEy
Q29tbW9uVHlwZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTkxIEBACisvKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgorICoKKyAqICBGaWxlIE5hbWUgKElBMkNvbW1vblR5cGVzLmlkbCkKKyAqIAor
ICogIElBY2Nlc3NpYmxlMiBJREwgU3BlY2lmaWNhdGlvbiAKKyAqIAorICogIENvcHlyaWdodCAo
YykgMjAwNywgMjAxMCBMaW51eCBGb3VuZGF0aW9uIAorICogIENvcHlyaWdodCAoYykgMjAwNiBJ
Qk0gQ29ycG9yYXRpb24gCisgKiAgQ29weXJpZ2h0IChjKSAyMDAwLCAyMDA2IFN1biBNaWNyb3N5
c3RlbXMsIEluYy4gCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gCisgKiAgIAorICogICAKKyAq
ICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQgCisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIAorICogIGFyZSBtZXQ6IAorICogICAKKyAqICAg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQgCisgKiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgIAorICogICAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICogICAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyAKKyAq
ICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIAorICogICAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICoKKyAqICAg
My4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgTGludXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVz
IG9mIGl0cyAKKyAqICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyAKKyAqICAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIAorICogICAgICBwZXJtaXNzaW9uLiAKKyAqICAg
CisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIAorICogIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIAorICogIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIAorICogIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAorICogIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIAorICogIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAqICBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgCisgKiAgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IAorICogIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIAorICogIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiAKKyAqICBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgCisgKiAgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgCisgKiAgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiAgIAorICogIFRoaXMgQlNE
IExpY2Vuc2UgY29uZm9ybXMgdG8gdGhlIE9wZW4gU291cmNlIEluaXRpYXRpdmUgIlNpbXBsaWZp
ZWQgCisgKiAgQlNEIExpY2Vuc2UiIGFzIHB1Ymxpc2hlZCBhdDogCisgKiAgaHR0cDovL3d3dy5v
cGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAgCisgKiAgIAorICogIElBY2Nl
c3NpYmxlMiBpcyBhIHRyYWRlbWFyayBvZiB0aGUgTGludXggRm91bmRhdGlvbi4gVGhlIElBY2Nl
c3NpYmxlMiAKKyAqICBtYXJrIG1heSBiZSB1c2VkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgTGlu
dXggRm91bmRhdGlvbiBUcmFkZW1hcmsgCisgKiAgUG9saWN5IHRvIGluZGljYXRlIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgSUFjY2Vzc2libGUyIHNwZWNpZmljYXRpb24uIAorICogCisgKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqLyAKKworIC8qKiBUaGVzZSBjb25zdGFudHMgY29udHJvbCB0aGUgc2Nyb2xsaW5nIG9m
IGFuIG9iamVjdCBvciBzdWJzdHJpbmcgaW50byBhIHdpbmRvdy4KKworIFRoaXMgZW51bSBpcyB1
c2VkIGluIElBY2Nlc3NpYmxlMjo6c2Nyb2xsVG8gYW5kIElBY2Nlc3NpYmxlVGV4dDo6c2Nyb2xs
U3Vic3RyaW5nVG8uCisqLworZW51bSBJQTJTY3JvbGxUeXBlIHsKKworICAvKiogU2Nyb2xsIHRo
ZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIG9iamVjdCBvciBzdWJzdHJpbmcgc3VjaCB0aGF0IHRo
ZSB0b3AgbGVmdAorICAgY29ybmVyIChhbmQgYXMgbXVjaCBhcyBwb3NzaWJsZSBvZiB0aGUgcmVz
dCBvZiB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZykgaXMgd2l0aGluCisgICB0aGUgdG9wIGxldmVs
IHdpbmRvdy4gIEluIGNhc2VzIHdoZXJlIHRoZSBlbnRpcmUgb2JqZWN0IG9yIHN1YnN0cmluZyBm
aXRzIHdpdGhpbiAKKyAgIHRoZSB0b3AgbGV2ZWwgd2luZG93LCB0aGUgcGxhY2VtZW50IG9mIHRo
ZSBvYmplY3Qgb3Igc3Vic3RyaW5nIGlzIGRlcGVuZGVudCBvbiAKKyAgIHRoZSBhcHBsaWNhdGlv
bi4gIEZvciBleGFtcGxlLCB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZyBtYXkgYmUgc2Nyb2xsZWQg
dG8gdGhlIAorICAgY2xvc2VzdCBlZGdlLCB0aGUgZnVydGhlc3QgZWRnZSwgb3IgbWlkd2F5IGJl
dHdlZW4gdGhvc2UgdHdvIGVkZ2VzLiAgSW4gY2FzZXMKKyAgIHdoZXJlIHRoZXJlIGlzIGEgaGll
cmFyY2h5IG9mIG5lc3RlZCBzY3JvbGxhYmxlIGNvbnRyb2xzLCBtb3JlIHRoYW4gb25lIGNvbnRy
b2wKKyAgIG1heSBoYXZlIHRvIGJlIHNjcm9sbGVkLgorICAqLworICBJQTJfU0NST0xMX1RZUEVf
VE9QX0xFRlQsIAorCisgIC8qKiBTY3JvbGwgdGhlIGJvdHRvbSByaWdodCBjb3JuZXIgb2YgdGhl
IG9iamVjdCBvciBzdWJzdHJpbmcgc3VjaCB0aGF0IHRoZSBib3R0b20gcmlnaHQKKyAgIGNvcm5l
ciAoYW5kIGFzIG11Y2ggYXMgcG9zc2libGUgb2YgdGhlIHJlc3Qgb2YgdGhlIG9iamVjdCBvciBz
dWJzdHJpbmcpIGlzIHdpdGhpbgorICAgdGhlIHRvcCBsZXZlbCB3aW5kb3cuICBJbiBjYXNlcyB3
aGVyZSB0aGUgZW50aXJlIG9iamVjdCBvciBzdWJzdHJpbmcgZml0cyB3aXRoaW4gCisgICB0aGUg
dG9wIGxldmVsIHdpbmRvdywgdGhlIHBsYWNlbWVudCBvZiB0aGUgb2JqZWN0IG9yIHN1YnN0cmlu
ZyBpcyBkZXBlbmRlbnQgb24gCisgICB0aGUgYXBwbGljYXRpb24uICBGb3IgZXhhbXBsZSwgdGhl
IG9iamVjdCBvciBzdWJzdHJpbmcgbWF5IGJlIHNjcm9sbGVkIHRvIHRoZSAKKyAgIGNsb3Nlc3Qg
ZWRnZSwgdGhlIGZ1cnRoZXN0IGVkZ2UsIG9yIG1pZHdheSBiZXR3ZWVuIHRob3NlIHR3byBlZGdl
cy4gIEluIGNhc2VzCisgICB3aGVyZSB0aGVyZSBpcyBhIGhpZXJhcmNoeSBvZiBuZXN0ZWQgc2Ny
b2xsYWJsZSBjb250cm9scywgbW9yZSB0aGFuIG9uZSBjb250cm9sCisgICBtYXkgaGF2ZSB0byBi
ZSBzY3JvbGxlZC4KKyAgKi8KKyAgSUEyX1NDUk9MTF9UWVBFX0JPVFRPTV9SSUdIVCwKKworICAv
KiogU2Nyb2xsIHRoZSB0b3AgZWRnZSBvZiB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZyBzdWNoIHRo
YXQgdGhlIHRvcCBlZGdlIAorICAgKGFuZCBhcyBtdWNoIGFzIHBvc3NpYmxlIG9mIHRoZSByZXN0
IG9mIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nKSBpcyB3aXRoaW4gdGhlCisgICB0b3AgbGV2ZWwg
d2luZG93LiAgSW4gY2FzZXMgd2hlcmUgdGhlIGVudGlyZSBvYmplY3Qgb3Igc3Vic3RyaW5nIGZp
dHMgd2l0aGluIAorICAgdGhlIHRvcCBsZXZlbCB3aW5kb3csIHRoZSBwbGFjZW1lbnQgb2YgdGhl
IG9iamVjdCBvciBzdWJzdHJpbmcgaXMgZGVwZW5kZW50IG9uIAorICAgdGhlIGFwcGxpY2F0aW9u
LiAgRm9yIGV4YW1wbGUsIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nIG1heSBiZSBzY3JvbGxlZCB0
byB0aGUgCisgICBjbG9zZXN0IGVkZ2UsIHRoZSBmdXJ0aGVzdCBlZGdlLCBvciBtaWR3YXkgYmV0
d2VlbiB0aG9zZSB0d28gZWRnZXMuICBJbiBjYXNlcworICAgd2hlcmUgdGhlcmUgaXMgYSBoaWVy
YXJjaHkgb2YgbmVzdGVkIHNjcm9sbGFibGUgY29udHJvbHMsIG1vcmUgdGhhbiBvbmUgY29udHJv
bAorICAgbWF5IGhhdmUgdG8gYmUgc2Nyb2xsZWQuCisgICovCisgIElBMl9TQ1JPTExfVFlQRV9U
T1BfRURHRSwKKworICAvKiogU2Nyb2xsIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgb2JqZWN0IG9y
IHN1YnN0cmluZyBzdWNoIHRoYXQgdGhlIGJvdHRvbSBlZGdlIAorICAgKGFuZCBhcyBtdWNoIGFz
IHBvc3NpYmxlIG9mIHRoZSByZXN0IG9mIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nKSBpcyB3aXRo
aW4gdGhlCisgICB0b3AgbGV2ZWwgd2luZG93LiAgSW4gY2FzZXMgd2hlcmUgdGhlIGVudGlyZSBv
YmplY3Qgb3Igc3Vic3RyaW5nIGZpdHMgd2l0aGluIAorICAgdGhlIHRvcCBsZXZlbCB3aW5kb3cs
IHRoZSBwbGFjZW1lbnQgb2YgdGhlIG9iamVjdCBvciBzdWJzdHJpbmcgaXMgZGVwZW5kZW50IG9u
IAorICAgdGhlIGFwcGxpY2F0aW9uLiAgRm9yIGV4YW1wbGUsIHRoZSBvYmplY3Qgb3Igc3Vic3Ry
aW5nIG1heSBiZSBzY3JvbGxlZCB0byB0aGUgCisgICBjbG9zZXN0IGVkZ2UsIHRoZSBmdXJ0aGVz
dCBlZGdlLCBvciBtaWR3YXkgYmV0d2VlbiB0aG9zZSB0d28gZWRnZXMuICBJbiBjYXNlcworICAg
d2hlcmUgdGhlcmUgaXMgYSBoaWVyYXJjaHkgb2YgbmVzdGVkIHNjcm9sbGFibGUgY29udHJvbHMs
IG1vcmUgdGhhbiBvbmUgY29udHJvbAorICAgbWF5IGhhdmUgdG8gYmUgc2Nyb2xsZWQuCisgICov
CisgIElBMl9TQ1JPTExfVFlQRV9CT1RUT01fRURHRSwgCisKKyAgLyoqIFNjcm9sbCB0aGUgbGVm
dCBlZGdlIG9mIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nIHN1Y2ggdGhhdCB0aGUgbGVmdCBlZGdl
IAorICAgKGFuZCBhcyBtdWNoIGFzIHBvc3NpYmxlIG9mIHRoZSByZXN0IG9mIHRoZSBvYmplY3Qg
b3Igc3Vic3RyaW5nKSBpcyB3aXRoaW4gdGhlCisgICB0b3AgbGV2ZWwgd2luZG93LiAgSW4gY2Fz
ZXMgd2hlcmUgdGhlIGVudGlyZSBvYmplY3Qgb3Igc3Vic3RyaW5nIGZpdHMgd2l0aGluIAorICAg
dGhlIHRvcCBsZXZlbCB3aW5kb3csIHRoZSBwbGFjZW1lbnQgb2YgdGhlIG9iamVjdCBvciBzdWJz
dHJpbmcgaXMgZGVwZW5kZW50IG9uIAorICAgdGhlIGFwcGxpY2F0aW9uLiAgRm9yIGV4YW1wbGUs
IHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nIG1heSBiZSBzY3JvbGxlZCB0byB0aGUgCisgICBjbG9z
ZXN0IGVkZ2UsIHRoZSBmdXJ0aGVzdCBlZGdlLCBvciBtaWR3YXkgYmV0d2VlbiB0aG9zZSB0d28g
ZWRnZXMuICBJbiBjYXNlcworICAgd2hlcmUgdGhlcmUgaXMgYSBoaWVyYXJjaHkgb2YgbmVzdGVk
IHNjcm9sbGFibGUgY29udHJvbHMsIG1vcmUgdGhhbiBvbmUgY29udHJvbAorICAgbWF5IGhhdmUg
dG8gYmUgc2Nyb2xsZWQuCisgICovCisgIElBMl9TQ1JPTExfVFlQRV9MRUZUX0VER0UsIAorCisg
IC8qKiBTY3JvbGwgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIG9iamVjdCBvciBzdWJzdHJpbmcgc3Vj
aCB0aGF0IHRoZSByaWdodCBlZGdlIAorICAgKGFuZCBhcyBtdWNoIGFzIHBvc3NpYmxlIG9mIHRo
ZSByZXN0IG9mIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nKSBpcyB3aXRoaW4gdGhlCisgICB0b3Ag
bGV2ZWwgd2luZG93LiAgSW4gY2FzZXMgd2hlcmUgdGhlIGVudGlyZSBvYmplY3Qgb3Igc3Vic3Ry
aW5nIGZpdHMgd2l0aGluIAorICAgdGhlIHRvcCBsZXZlbCB3aW5kb3csIHRoZSBwbGFjZW1lbnQg
b2YgdGhlIG9iamVjdCBvciBzdWJzdHJpbmcgaXMgZGVwZW5kZW50IG9uIAorICAgdGhlIGFwcGxp
Y2F0aW9uLiAgRm9yIGV4YW1wbGUsIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nIG1heSBiZSBzY3Jv
bGxlZCB0byB0aGUgCisgICBjbG9zZXN0IGVkZ2UsIHRoZSBmdXJ0aGVzdCBlZGdlLCBvciBtaWR3
YXkgYmV0d2VlbiB0aG9zZSB0d28gZWRnZXMuICBJbiBjYXNlcworICAgd2hlcmUgdGhlcmUgaXMg
YSBoaWVyYXJjaHkgb2YgbmVzdGVkIHNjcm9sbGFibGUgY29udHJvbHMsIG1vcmUgdGhhbiBvbmUg
Y29udHJvbAorICAgbWF5IGhhdmUgdG8gYmUgc2Nyb2xsZWQuCisgICovCisgIElBMl9TQ1JPTExf
VFlQRV9SSUdIVF9FREdFLAorCisgIC8qKiBTY3JvbGwgdGhlIG9iamVjdCBvciBzdWJzdHJpbmcg
c3VjaCB0aGF0IGFzIG11Y2ggYXMgcG9zc2libGUgb2YgdGhlIAorICAgb2JqZWN0IG9yIHN1YnN0
cmluZyBpcyB3aXRoaW4gdGhlIHRvcCBsZXZlbCB3aW5kb3cuICBUaGUgcGxhY2VtZW50IG9mIAor
ICAgdGhlIG9iamVjdCBpcyBkZXBlbmRlbnQgb24gdGhlIGFwcGxpY2F0aW9uLiAgRm9yIGV4YW1w
bGUsIHRoZSBvYmplY3Qgb3IKKyAgIHN1YnN0cmluZyBtYXkgYmUgc2Nyb2xsZWQgdG8gdG8gY2xv
c2VzdCBlZGdlLCB0aGUgZnVydGhlc3QgZWRnZSwgb3IgbWlkd2F5CisgICBiZXR3ZWVuIHRob3Nl
IHR3byBlZGdlcy4KKyAgKi8KKyAgSUEyX1NDUk9MTF9UWVBFX0FOWVdIRVJFCit9OworCisvKiog
VGhlc2UgY29uc3RhbnRzIGRlZmluZSB3aGljaCBjb29yZGluYXRlIHN5c3RlbSBhIHBvaW50IGlz
IGxvY2F0ZWQgaW4uCisgCisgVGhpcyBlbnVtIGlzIHVzZWQgaW4gSUFjY2Vzc2libGUyOjpzY3Jv
bGxUb1BvaW50LCBJQWNjZXNzaWJsZUltYWdlOjppbWFnZVBvc2l0aW9uLAorIElBY2Nlc3NpYmxl
VGV4dDo6Y2hhcmFjdGVyRXh0ZW50cywgYW5kIElBY2Nlc3NpYmxlVGV4dDo6b2Zmc2V0QXRQb2lu
dCwgYW5kIAorIElBY2Nlc3NpYmxlVGV4dDo6c2Nyb2xsU3Vic3RyaW5nVG9Qb2ludC4KKyovCitl
bnVtIElBMkNvb3JkaW5hdGVUeXBlIHsKKworICAvLy8gVGhlIGNvb3JkaW5hdGVzIGFyZSByZWxh
dGl2ZSB0byB0aGUgc2NyZWVuLgorICBJQTJfQ09PUkRUWVBFX1NDUkVFTl9SRUxBVElWRSwgCisK
KyAgLyoqIFRoZSBjb29yZGluYXRlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIHVwcGVyIGxlZnQgY29y
bmVyIG9mIHRoZSBib3VuZGluZyBib3gKKyAgIG9mIHRoZSBpbW1lZGlhdGUgcGFyZW50LgorICAq
LworICBJQTJfQ09PUkRUWVBFX1BBUkVOVF9SRUxBVElWRSAgCisKK307CisKKy8qKiBTcGVjaWFs
IG9mZnNldHMgZm9yIHVzZSBpbiBJQWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRpdGFi
bGVUZXh0IG1ldGhvZHMKKyAgCisgIFJlZmVyIHRvIEByZWYgX3NwZWNpYWxPZmZzZXRzIAorICAi
U3BlY2lhbCBPZmZzZXRzIGZvciB1c2UgaW4gdGhlIElBY2Nlc3NpYmxlVGV4dCBhbmQgSUFjY2Vz
c2libGVFZGl0YWJsZVRleHQgTWV0aG9kcyIgCisgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorKi8K
K2VudW0gSUEyVGV4dFNwZWNpYWxPZmZzZXRzIHsKKyAgSUEyX1RFWFRfT0ZGU0VUX0xFTkdUSCA9
IC0xLCAgLyoqPCBUaGlzIG9mZnNldCBpcyBlcXVpdmFsZW50IHRvIHRoZSBsZW5ndGggb2YgdGhl
IHN0cmluZy4gIEl0IGVsaW1pbmF0ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGUgbmVlZCB0byBjYWxsIElBY2Nlc3NpYmxlVGV4dDo6bkNoYXJhY3RlcnMuICovCisg
IElBMl9URVhUX09GRlNFVF9DQVJFVCA9IC0yICAgIC8qKjwgVGhpcyBvZmZzZXQgc2lnbmlmaWVz
IHRoYXQgdGhlIHRleHQgcmVsYXRlZCB0byB0aGUgcGh5c2ljYWwgbG9jYXRpb24KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgY2FyZXQgc2hvdWxkIGJlIHVzZWQu
ICovCit9OworCisvKiogVGhlc2UgY29uc3RhbnRzIHNwZWNpZnkgdGhlIGtpbmQgb2YgY2hhbmdl
IG1hZGUgdG8gYSB0YWJsZS4KKworICAgVGhpcyBlbnVtIGlzIHVzZWQgaW4gdGhlIElBMlRhYmxl
TW9kZWxDaGFuZ2Ugc3RydWN0IHdoaWNoIGluIHR1cm4gaXMgdXNlZCBieQorICAgSUFjY2Vzc2li
bGVUYWJsZTo6bW9kZWxDaGFuZ2UgYW5kIElBY2Nlc3NpYmxlVGFibGUyOjptb2RlbENoYW5nZS4K
KyovCitlbnVtIElBMlRhYmxlTW9kZWxDaGFuZ2VUeXBlIHsKKyAgSUEyX1RBQkxFX01PREVMX0NI
QU5HRV9JTlNFUlQsICAvLyA9IDA7CisgIElBMl9UQUJMRV9NT0RFTF9DSEFOR0VfREVMRVRFLAor
ICBJQTJfVEFCTEVfTU9ERUxfQ0hBTkdFX1VQREFURQorfTsKKworLyoqIEEgc3RydWN0dXJlIGRl
ZmluaW5nIHRoZSB0eXBlIG9mIGFuZCBleHRlbnRzIG9mIGNoYW5nZXMgbWFkZSB0byBhIHRhYmxl
CisgCisgSUFjY2Vzc2libGVUYWJsZTo6bW9kZWxDaGFuZ2UgYW5kIElBY2Nlc3NpYmxlVGFibGUy
Ojptb2RlbENoYW5nZSByZXR1cm4gdGhpcyBzdHJ1Y3QuCisgSW4gdGhlIGNhc2Ugb2YgYW4gaW5z
ZXJ0aW9uIG9yIGNoYW5nZSB0aGUgcm93IGFuZCBjb2x1bW4gb2Zmc2V0cyBkZWZpbmUgdGhlIGJv
dW5kYXJpZXMKKyBvZiB0aGUgaW5zZXJ0ZWQgb3IgY2hhbmdlZCBzdWJ0YWJsZSBhZnRlciB0aGUg
b3BlcmF0aW9uLiAgSW4gdGhlIGNhc2Ugb2YgYSBkZWxldGlvbgorIHRoZSByb3cgYW5kIGNvbHVt
biBvZmZzZXRzIGRlZmluZSB0aGUgYm91bmRhcmllcyBvZiB0aGUgc3VidGFibGUgYmVpbmcgcmVt
b3ZlZCBiZWZvcmUKKyB0aGUgcmVtb3ZhbC4KKyovCit0eXBlZGVmIHN0cnVjdCBJQTJUYWJsZU1v
ZGVsQ2hhbmdlIHsKKyAgZW51bSBJQTJUYWJsZU1vZGVsQ2hhbmdlVHlwZSB0eXBlOyAgLy8gaW5z
ZXJ0LCBkZWxldGUsIHVwZGF0ZQorICBsb25nIGZpcnN0Um93OyAgICAgICAgICAgICAgICAgICAg
ICAvLy88IDAgYmFzZWQsIGluY2x1c2l2ZQorICBsb25nIGxhc3RSb3c7ICAgICAgICAgICAgICAg
ICAgICAgICAvLy88IDAgYmFzZWQsIGluY2x1c2l2ZQorICBsb25nIGZpcnN0Q29sdW1uOyAgICAg
ICAgICAgICAgICAgICAvLy88IDAgYmFzZWQsIGluY2x1c2l2ZQorICBsb25nIGxhc3RDb2x1bW47
ICAgICAgICAgICAgICAgICAgICAvLy88IDAgYmFzZWQsIGluY2x1c2l2ZQorfSBJQTJUYWJsZU1v
ZGVsQ2hhbmdlOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiAxNTE1MjIpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJXaW4uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw3ICs5NSw3IEBAIHN0YXRpYyBDT01QdHI8SUFjY2Vzc2libGU+IGZp
bmRBY2Nlc3NpYmwKICAgICBWQVJJQU5UIHZhbHVlOwogICAgIDo6VmFyaWFudEluaXQoJnZhbHVl
KTsKIAotICAgIGlmIChTVUNDRUVERUQoY29tcGFyYWJsZS0+YXR0cmlidXRlVmFsdWUoc19BWERS
VEVsZW1lbnRJZEF0dHJpYnV0ZSwgJnZhbHVlKSkpIHsKKyAgICBpZiAoU1VDQ0VFREVEKGNvbXBh
cmFibGUtPmdldF9hdHRyaWJ1dGUoc19BWERSVEVsZW1lbnRJZEF0dHJpYnV0ZSwgJnZhbHVlKSkp
IHsKICAgICAgICAgQVNTRVJUKFZfVlQoJnZhbHVlKSA9PSBWVF9CU1RSKTsKICAgICAgICAgaWYg
KFZBUkNNUF9FUSA9PSA6OlZhckJzdHJDbXAodmFsdWUuYnN0clZhbCwgaWRBdHRyaWJ1dGUsIExP
Q0FMRV9VU0VSX0RFRkFVTFQsIDApKSB7CiAgICAgICAgICAgICA6OlZhcmlhbnRDbGVhcigmdmFs
dWUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50V2luLmNwcAkocmV2aXNpb24gMTUxNTIyKQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKICNpbmNsdWRl
ICJGcmFtZUxvYWREZWxlZ2F0ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5n
UmVmLmg+CisjaW5jbHVkZSA8Y29tdXRpbC5oPgogI2luY2x1ZGUgPHRjaGFyLmg+CiAjaW5jbHVk
ZSA8c3RyaW5nPgogCkBAIC0xNjIsNiArMTYzLDggQEAgSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YXR0cgogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJz
KDAsIDApOwogfQogCitzdGF0aWMgY29uc3QgX2JzdHJfdCBzX0FYVGl0bGVVSUVsZW1lbnRBdHRy
aWJ1dGUoTCJBWFRpdGxlVUlFbGVtZW50QXR0cmlidXRlIik7CisKIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGVVSUVsZW1lbnQoKQogewogICAgIENP
TVB0cjxJQWNjZXNzaWJsZT4gcGxhdGZvcm1FbGVtZW50ID0gcGxhdGZvcm1VSUVsZW1lbnQoKTsK
QEAgLTE3Miw3ICsxNzUsNyBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlV
SUVsCiAKICAgICBWQVJJQU5UIHZhbHVlOwogICAgIDo6VmFyaWFudEluaXQoJnZhbHVlKTsKLSAg
ICBpZiAoRkFJTEVEKGNvbXBhcmFibGUtPmF0dHJpYnV0ZVZhbHVlKEwiQVhUaXRsZVVJRWxlbWVu
dEF0dHJpYnV0ZSIsICZ2YWx1ZSkpKSB7CisgICAgaWYgKEZBSUxFRChjb21wYXJhYmxlLT5nZXRf
YXR0cmlidXRlKHNfQVhUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZSwgJnZhbHVlKSkpIHsKICAgICAg
ICAgOjpWYXJpYW50Q2xlYXIoJnZhbHVlKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204541</attachid>
            <date>2013-06-12 15:41:46 -0700</date>
            <delta_ts>2013-06-12 16:39:00 -0700</delta_ts>
            <desc>Revised to not use global constructors.</desc>
            <filename>bug-117561-20130612154052.patch</filename>
            <type>text/plain</type>
            <size>102875</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTE1MjMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA2LTEyICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBJbXBsZW1lbnQg
QWNjZXNzaWJpbGl0eTIgQVBJcyBpbiBXaW5kb3dzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3NTYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQudmN4cHJvai9JbnRlcmZhY2VzL0ludGVy
ZmFjZXMudmN4cHJvajogQWRkIG5ldyBJQWNjZXNzaWJsZTIgSURMIGZpbGVzLgorICAgICAgICAq
IFdlYktpdC52Y3hwcm9qL0ludGVyZmFjZXMvSW50ZXJmYWNlcy52Y3hwcm9qLmZpbHRlcnM6IERp
dHRvLgorICAgICAgICAqIFdlYktpdC52Y3hwcm9qL0ludGVyZmFjZXMvSW50ZXJmYWNlc0NvbW1v
bi5wcm9wczogUmVmZXJlbmNlIG5ldyBBY2Nlc3NpYmxlMiBmb2xkZXIuCisgICAgICAgICogV2Vi
S2l0LnZjeHByb2ovV2ViS2l0R1VJRC9XZWJLaXRHVUlELnZjeHByb2o6IEJ1aWxkIElBY2Nlc3Np
YmxlMiBzeW1ib2xzLgorICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEdVSUQvV2ViS2l0
R1VJRC52Y3hwcm9qLmZpbHRlcnM6IERpdHRvLgorCiAyMDEzLTA2LTEwICBCZWFyIFRyYXZpcyAg
PGJldHJhdmlzQGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIFNoYXBlc11bQ1NTIEV4Y2x1c2lv
bnNdIFNwbGl0IENTUyBFeGNsdXNpb25zIGFuZCBDU1MgU2hhcGVzIGNvZGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovSW50ZXJmYWNlcy9JbnRlcmZhY2VzLnZjeHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9JbnRlcmZhY2VzL0ludGVy
ZmFjZXMudmN4cHJvagkocmV2aXNpb24gMTUxNTIyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQu
dmN4cHJvai9JbnRlcmZhY2VzL0ludGVyZmFjZXMudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTYxLDYgKzE2MSwxMSBAQAogICAgIDwvTGluaz4NCiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4N
CiAgIDxJdGVtR3JvdXA+DQorICAgIDxNaWRsIEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRlcmZhY2Vz
XEFjY2Vzc2libGUyXEFjY2Vzc2libGUyLmlkbCIgLz4NCisgICAgPE1pZGwgSW5jbHVkZT0iLi5c
Li5cd2luXEludGVyZmFjZXNcQWNjZXNzaWJsZTJcQWNjZXNzaWJsZTJfMi5pZGwiIC8+DQorICAg
IDxNaWRsIEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRlcmZhY2VzXEFjY2Vzc2libGUyXEFjY2Vzc2li
bGVBcHBsaWNhdGlvbi5pZGwiIC8+DQorICAgIDxNaWRsIEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRl
cmZhY2VzXEFjY2Vzc2libGUyXEFjY2Vzc2libGVSZWxhdGlvbi5pZGwiIC8+DQorICAgIDxNaWRs
IEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRlcmZhY2VzXEFjY2Vzc2libGUyXEFjY2Vzc2libGVTdGF0
ZXMuaWRsIiAvPg0KICAgICA8TWlkbCBJbmNsdWRlPSIuLlwuLlx3aW5cSW50ZXJmYWNlc1xBY2Nl
c3NpYmxlQ29tcGFyYWJsZS5pZGwiPg0KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+DQogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCkBAIC0yMzMsNiArMjM4LDcgQEAKICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQogICAg
IDwvTWlkbD4NCisgICAgPE1pZGwgSW5jbHVkZT0iLi5cLi5cd2luXEludGVyZmFjZXNcQWNjZXNz
aWJsZTJcSUEyQ29tbW9uVHlwZXMuaWRsIiAvPg0KICAgICA8TWlkbCBJbmNsdWRlPSIuLlwuLlx3
aW5cSW50ZXJmYWNlc1xJR0VOX0RPTU9iamVjdC5pZGwiPg0KICAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdp
bjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+DQogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fp
cm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4NCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL0ludGVyZmFjZXMvSW50ZXJmYWNlcy52Y3hwcm9qLmZpbHRlcnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9JbnRlcmZhY2VzL0ludGVy
ZmFjZXMudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNTE1MjIpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYktpdC52Y3hwcm9qL0ludGVyZmFjZXMvSW50ZXJmYWNlcy52Y3hwcm9qLmZpbHRlcnMJKHdv
cmtpbmcgY29weSkKQEAgLTI1Niw2ICsyNTYsMjQgQEAKICAgICA8TWlkbCBJbmNsdWRlPSIuLlwu
Llx3aW5cSW50ZXJmYWNlc1xXZWJLaXQuaWRsIj4NCiAgICAgICA8RmlsdGVyPklETDwvRmlsdGVy
Pg0KICAgICA8L01pZGw+DQorICAgIDxNaWRsIEluY2x1ZGU9Ii4uXC4uXHdpblxJbnRlcmZhY2Vz
XEFjY2Vzc2libGUyXElBMkNvbW1vblR5cGVzLmlkbCI+DQorICAgICAgPEZpbHRlcj5JRExcQWNj
ZXNzaWJpbGl0eTI8L0ZpbHRlcj4NCisgICAgPC9NaWRsPg0KKyAgICA8TWlkbCBJbmNsdWRlPSIu
LlwuLlx3aW5cSW50ZXJmYWNlc1xBY2Nlc3NpYmxlMlxBY2Nlc3NpYmxlMi5pZGwiPg0KKyAgICAg
IDxGaWx0ZXI+SURMXEFjY2Vzc2liaWxpdHkyPC9GaWx0ZXI+DQorICAgIDwvTWlkbD4NCisgICAg
PE1pZGwgSW5jbHVkZT0iLi5cLi5cd2luXEludGVyZmFjZXNcQWNjZXNzaWJsZTJcQWNjZXNzaWJs
ZTJfMi5pZGwiPg0KKyAgICAgIDxGaWx0ZXI+SURMXEFjY2Vzc2liaWxpdHkyPC9GaWx0ZXI+DQor
ICAgIDwvTWlkbD4NCisgICAgPE1pZGwgSW5jbHVkZT0iLi5cLi5cd2luXEludGVyZmFjZXNcQWNj
ZXNzaWJsZTJcQWNjZXNzaWJsZVJlbGF0aW9uLmlkbCI+DQorICAgICAgPEZpbHRlcj5JRExcQWNj
ZXNzaWJpbGl0eTI8L0ZpbHRlcj4NCisgICAgPC9NaWRsPg0KKyAgICA8TWlkbCBJbmNsdWRlPSIu
LlwuLlx3aW5cSW50ZXJmYWNlc1xBY2Nlc3NpYmxlMlxBY2Nlc3NpYmxlU3RhdGVzLmlkbCI+DQor
ICAgICAgPEZpbHRlcj5JRExcQWNjZXNzaWJpbGl0eTI8L0ZpbHRlcj4NCisgICAgPC9NaWRsPg0K
KyAgICA8TWlkbCBJbmNsdWRlPSIuLlwuLlx3aW5cSW50ZXJmYWNlc1xBY2Nlc3NpYmxlMlxBY2Nl
c3NpYmxlQXBwbGljYXRpb24uaWRsIj4NCisgICAgICA8RmlsdGVyPklETFxBY2Nlc3NpYmlsaXR5
MjwvRmlsdGVyPg0KKyAgICA8L01pZGw+DQogICA8L0l0ZW1Hcm91cD4NCiAgIDxJdGVtR3JvdXA+
DQogICAgIDxOb25lIEluY2x1ZGU9IkludGVyZmFjZXNQb3N0QnVpbGQuY21kIiAvPg0KQEAgLTI2
Niw1ICsyODQsOCBAQAogICAgIDxGaWx0ZXIgSW5jbHVkZT0iSURMIj4NCiAgICAgICA8VW5pcXVl
SWRlbnRpZmllcj57NTE2NTJjMDEtZTMwMS00YjcyLTlkOTYtNWQ1MDQ5MWQyNThjfTwvVW5pcXVl
SWRlbnRpZmllcj4NCiAgICAgPC9GaWx0ZXI+DQorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSURMXEFj
Y2Vzc2liaWxpdHkyIj4NCisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MmUxNWZjMzgtZGY2Zi00
NzBmLWIyMDEtMjcyZThkMmQ5MWE0fTwvVW5pcXVlSWRlbnRpZmllcj4NCisgICAgPC9GaWx0ZXI+
DQogICA8L0l0ZW1Hcm91cD4NCiA8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9JbnRlcmZhY2VzL0ludGVyZmFj
ZXNDb21tb24ucHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJv
ai9JbnRlcmZhY2VzL0ludGVyZmFjZXNDb21tb24ucHJvcHMJKHJldmlzaW9uIDE1MTUyMikKKysr
IFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovSW50ZXJmYWNlcy9JbnRlcmZhY2VzQ29tbW9u
LnByb3BzCSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogICA8L1Byb3BlcnR5R3JvdXA+
DQogICA8SXRlbURlZmluaXRpb25Hcm91cD4NCiAgICAgPE1pZGw+DQotICAgICAgPEFkZGl0aW9u
YWxJbmNsdWRlRGlyZWN0b3JpZXM+JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9iajMyXFdlYktp
dFxEZXJpdmVkU291cmNlczsuLi8uLi93aW4vSW50ZXJmYWNlczskKEludERpcilcaW5jbHVkZTsl
KEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPg0KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmozMlxXZWJLaXRcRGVyaXZlZFNvdXJjZXM7Li4vLi4vd2luL0ludGVyZmFj
ZXM7Li4vLi4vd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTI7JChJbnREaXIpXGluY2x1ZGU7JShB
ZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz4NCiAgICAgPC9NaWRsPg0KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KICAgPEl0ZW1EZWZp
bml0aW9uR3JvdXA+DQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRH
VUlEL1dlYktpdEdVSUQudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktp
dC52Y3hwcm9qL1dlYktpdEdVSUQvV2ViS2l0R1VJRC52Y3hwcm9qCShyZXZpc2lvbiAxNTE1MjIp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEdVSUQvV2ViS2l0R1VJRC52
Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDEwIEBACiAgIDwvSXRlbUdyb3Vw
Pg0KICAgPEl0ZW1Hcm91cD4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqMzJcV2ViS2l0XEludGVyZmFjZXNcV2ViS2l0X2kuYyIgLz4NCisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqMzJcV2ViS2l0
XEludGVyZmFjZXNcQWNjZXNzaWJsZTJfaS5jIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmozMlxXZWJLaXRcSW50ZXJmYWNlc1xBY2Nlc3Np
YmxlMl8yX2kuYyIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqMzJcV2ViS2l0XEludGVyZmFjZXNcQWNjZXNzaWJsZUFwcGxpY2F0aW9uX2ku
YyIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqMzJcV2ViS2l0XEludGVyZmFjZXNcQWNjZXNzaWJsZVJlbGF0aW9uX2kuYyIgLz4NCiAgIDwv
SXRlbUdyb3VwPg0KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29m
dC5DcHAudGFyZ2V0cyIgLz4NCiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0
cyI+DQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRHVUlEL1dlYktp
dEdVSUQudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0
LnZjeHByb2ovV2ViS2l0R1VJRC9XZWJLaXRHVUlELnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24g
MTUxNTIyKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRHVUlEL1dlYktp
dEdVSUQudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC02LDUgKzYsOSBAQAogICA8
L0l0ZW1Hcm91cD4NCiAgIDxJdGVtR3JvdXA+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxXZWJLaXRcSW50ZXJmYWNlc1xXZWJLaXRfaS5jIiAv
Pg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpc
V2ViS2l0XEludGVyZmFjZXNcQWNjZXNzaWJsZTJfaS5jIiAvPg0KKyAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcV2ViS2l0XEludGVyZmFjZXNcQWNj
ZXNzaWJsZTJfMl9pLmMiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9ialxXZWJLaXRcSW50ZXJmYWNlc1xBY2Nlc3NpYmxlQXBwbGljYXRpb25f
aS5jIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxvYmpcV2ViS2l0XEludGVyZmFjZXNcQWNjZXNzaWJsZVJlbGF0aW9uX2kuYyIgLz4NCiAgIDwv
SXRlbUdyb3VwPg0KIDwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTE1MjMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOSBAQAorMjAxMy0wNi0xMiAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gSW1w
bGVtZW50IEFjY2Vzc2liaWxpdHkyIEFQSXMgaW4gV2luZG93cy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNzU2MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQWNjZXNzaWJsZUJhc2UuY3BwOiBBZGQg
c3R1YnMgZm9yIElBY2Nlc3NpYmxlMiBpbnRlcmZhY2UsIHJlcGxhY2UgYXR0cmlidXRlVmFsdWUK
KyAgICAgICAgbWV0aG9kIHdpdGggZ2V0X2F0dHJpYnV0ZSBmcm9tIElBY2Nlc3NpYmxlMiBBUEku
CisgICAgICAgICogQWNjZXNzaWJsZUJhc2UuaDogRGl0dG8uCisgICAgICAgICogQWNjZXNzaWJs
ZURvY3VtZW50LmNwcDogUmV2aXNlIHNpZ25hdHVyZXMgZm9yIElBY2Nlc3NpYmxlMi4KKyAgICAg
ICAgKiBBY2Nlc3NpYmxlRG9jdW1lbnQuaDogRGl0dG8uCisgICAgICAgICogQWNjZXNzaWJsZUlt
YWdlLmNwcDogUmV2aXNlIHNpZ25hdHVyZXMgZm9yIElBY2Nlc3NpYmxlMi4KKyAgICAgICAgKiBB
Y2Nlc3NpYmxlSW1hZ2UuaDogRGl0dG8uCisgICAgICAgICogSW50ZXJmYWNlcy9BY2Nlc3NpYmxl
MjogQWRkZWQuCisgICAgICAgICogSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlMi5p
ZGw6IEFkZGVkLgorICAgICAgICAqIEludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZTJf
Mi5pZGw6IEFkZGVkLgorICAgICAgICAqIEludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJs
ZUFwcGxpY2F0aW9uLmlkbDogQWRkZWQuCisgICAgICAgICogSW50ZXJmYWNlcy9BY2Nlc3NpYmxl
Mi9BY2Nlc3NpYmxlUmVsYXRpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBJbnRlcmZhY2VzL0Fj
Y2Vzc2libGUyL0FjY2Vzc2libGVTdGF0ZXMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBJbnRlcmZh
Y2VzL0FjY2Vzc2libGUyL0lBMkNvbW1vblR5cGVzLmlkbDogQWRkZWQuCisgICAgICAgICogSW50
ZXJmYWNlcy9BY2Nlc3NpYmxlQ29tcGFyYWJsZS5pZGw6CisgICAgICAgICogSW50ZXJmYWNlcy9X
ZWJLaXQuaWRsOiBSZWZlcmVuY2UgSUFjY2Vzc2libGUyIHR5cGVzLgorICAgICAgICAqIFdlYkZy
YW1lLmNwcDogCisgICAgICAgIChXZWJGcmFtZTo6YWNjZXNzaWJsZSk6IFBhc3Mgd2luZG93IGhh
bmRsZSB0byBJQWNjZXNzaWJsZSB0eXBlcy4KKwogMjAxMy0wNi0xMiAgQnJlbnQgRnVsZ2hhbSAg
PGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luZG93c10gU3VwcG9ydCBUaXRsZSBV
SSBFbGVtZW50IEFjY2Vzc2liaWxpdHkgQXR0cmlidXRlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9BY2Nlc3NpYmxlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQWNj
ZXNzaWJsZUJhc2UuY3BwCShyZXZpc2lvbiAxNTE1MjIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9B
Y2Nlc3NpYmxlQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBTZXJvdGVrIENvcnBvcmF0aW9uLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Miw2ICs0Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVE1MRnJhbWVFbGVtZW50QmFzZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW50UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckZyYW1l
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJPYmplY3QuaD4KQEAgLTUzLDggKzU1LDkgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLUFjY2Vzc2libGVCYXNlOjpBY2Nlc3NpYmxl
QmFzZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCitBY2Nlc3NpYmxlQmFzZTo6QWNjZXNzaWJs
ZUJhc2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBIV05EIHdpbmRvdykKICAgICA6IEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyKG9iaikKKyAgICAsIG1fd2luZG93KHdpbmRvdykKICAgICAs
IG1fcmVmQ291bnQoMCkKIHsKICAgICBBU1NFUlRfQVJHKG9iaiwgb2JqKTsKQEAgLTY5LDE5ICs3
MiwyMyBAQCBBY2Nlc3NpYmxlQmFzZTo6fkFjY2Vzc2libGVCYXNlKCkKICAgICBnQ2xhc3NOYW1l
Q291bnQucmVtb3ZlKCJBY2Nlc3NpYmxlQmFzZSIpOwogfQogCi1BY2Nlc3NpYmxlQmFzZSogQWNj
ZXNzaWJsZUJhc2U6OmNyZWF0ZUluc3RhbmNlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK0Fj
Y2Vzc2libGVCYXNlKiBBY2Nlc3NpYmxlQmFzZTo6Y3JlYXRlSW5zdGFuY2UoQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqLCBIV05EIHdpbmRvdykKIHsKICAgICBBU1NFUlRfQVJHKG9iaiwgb2JqKTsK
IAogICAgIGlmIChvYmotPmlzSW1hZ2UoKSkKLSAgICAgICAgcmV0dXJuIG5ldyBBY2Nlc3NpYmxl
SW1hZ2Uob2JqKTsKKyAgICAgICAgcmV0dXJuIG5ldyBBY2Nlc3NpYmxlSW1hZ2Uob2JqLCB3aW5k
b3cpOwogCi0gICAgcmV0dXJuIG5ldyBBY2Nlc3NpYmxlQmFzZShvYmopOworICAgIHJldHVybiBu
ZXcgQWNjZXNzaWJsZUJhc2Uob2JqLCB3aW5kb3cpOwogfQogCiBIUkVTVUxUIEFjY2Vzc2libGVC
YXNlOjpRdWVyeVNlcnZpY2UoUkVGR1VJRCBndWlkU2VydmljZSwgUkVGSUlEIHJpaWQsIHZvaWQg
KipwcHZPYmplY3QpCiB7Ci0gICAgaWYgKCFJc0VxdWFsR1VJRChndWlkU2VydmljZSwgU0lEX0Fj
Y2Vzc2libGVDb21wYXJhYmxlKSkgeworICAgIGlmICghSXNFcXVhbEdVSUQoZ3VpZFNlcnZpY2Us
IFNJRF9BY2Nlc3NpYmxlQ29tcGFyYWJsZSkKKyAgICAgICAgJiYgIUlzRXF1YWxHVUlEKGd1aWRT
ZXJ2aWNlLCBJSURfSUFjY2Vzc2libGUyXzIpCisgICAgICAgICYmICFJc0VxdWFsR1VJRChndWlk
U2VydmljZSwgSUlEX0lBY2Nlc3NpYmxlMikKKyAgICAgICAgJiYgIUlzRXF1YWxHVUlEKGd1aWRT
ZXJ2aWNlLCBJSURfSUFjY2Vzc2libGVBcHBsaWNhdGlvbikKKyAgICAgICAgJiYgIUlzRXF1YWxH
VUlEKGd1aWRTZXJ2aWNlLCBJSURfSUFjY2Vzc2libGUpKSB7CiAgICAgICAgICpwcHZPYmplY3Qg
PSAwOwogICAgICAgICByZXR1cm4gRV9JTlZBTElEQVJHOwogICAgIH0KQEAgLTk3LDYgKzEwNCwx
MCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEFjY2Vzc2libGVCYXNlCiAgICAgICAgICpw
cHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJQWNjZXNzaWJsZSo+KHRoaXMpOwogICAgIGVsc2UgaWYg
KElzRXF1YWxHVUlEKHJpaWQsIF9fdXVpZG9mKElVbmtub3duKSkpCiAgICAgICAgICpwcHZPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxJQWNjZXNzaWJsZSo+KHRoaXMpOworICAgIGVsc2UgaWYgKElzRXF1
YWxHVUlEKHJpaWQsIF9fdXVpZG9mKElBY2Nlc3NpYmxlMl8yKSkpCisgICAgICAgICpwcHZPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxJQWNjZXNzaWJsZTJfMio+KHRoaXMpOworICAgIGVsc2UgaWYgKElz
RXF1YWxHVUlEKHJpaWQsIF9fdXVpZG9mKElBY2Nlc3NpYmxlMikpKQorICAgICAgICAqcHB2T2Jq
ZWN0ID0gc3RhdGljX2Nhc3Q8SUFjY2Vzc2libGUyKj4odGhpcyk7CiAgICAgZWxzZSBpZiAoSXNF
cXVhbEdVSUQocmlpZCwgX191dWlkb2YoSUFjY2Vzc2libGVDb21wYXJhYmxlKSkpCiAgICAgICAg
ICpwcHZPYmplY3QgPSBzdGF0aWNfY2FzdDxJQWNjZXNzaWJsZUNvbXBhcmFibGUqPih0aGlzKTsK
ICAgICBlbHNlIGlmIChJc0VxdWFsR1VJRChyaWlkLCBfX3V1aWRvZihJU2VydmljZVByb3ZpZGVy
KSkpCkBAIC0xMjAsOCArMTMxLDE5NSBAQCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3Np
YmxlQmFzZTo6CiAgICAgcmV0dXJuIDA7CiB9CiAKKy8vIElBY2Nlc3NpYmxlMl8yCitIUkVTVUxU
IEFjY2Vzc2libGVCYXNlOjpnZXRfYXR0cmlidXRlKEJTVFIga2V5LCBWQVJJQU5UKiB2YWx1ZSkK
K3sKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworCisgICAgQXRv
bWljU3RyaW5nIGtleUF0b21pYyhrZXksIDo6U3lzU3RyaW5nTGVuKGtleSkpOworCisgICAgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKGtleUF0b21pYywgdmFsdWUpOworCisgICAgcmV0dXJu
IFNfT0s7Cit9CisKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9hY2Nlc3NpYmxlV2l0aENh
cmV0KElVbmtub3duKiogYWNjZXNzaWJsZSwgbG9uZyogY2FyZXRPZmZzZXQpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRV9OT1RJTVBMOworfQorCitIUkVTVUxUIEFjY2Vz
c2libGVCYXNlOjpnZXRfcmVsYXRpb25UYXJnZXRzT2ZUeXBlKEJTVFIgdHlwZSwgbG9uZyBtYXhU
YXJnZXRzLCBJVW5rbm93bioqKiB0YXJnZXRzLCBsb25nKiBuVGFyZ2V0cykKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKKy8vIElBY2Nlc3NpYmxl
MgorSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X25SZWxhdGlvbnMobG9uZyogblJlbGF0aW9u
cykKK3sKKyAgICBpZiAoIW5SZWxhdGlvbnMpCisgICAgICAgIHJldHVybiBFX1BPSU5URVI7CisK
KyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm4gRV9GQUlMOworICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgKm5SZWxhdGlvbnMgPSAwOworICAgIHJldHVybiBTX09LOworfQorCitI
UkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfcmVsYXRpb24obG9uZyByZWxhdGlvbkluZGV4LCBJ
QWNjZXNzaWJsZVJlbGF0aW9uKiogcmVsYXRpb24pCit7CisgICAgaWYgKCFyZWxhdGlvbikKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIEVfTk9USU1QTDsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X3JlbGF0aW9u
cyhsb25nIG1heFJlbGF0aW9ucywgSUFjY2Vzc2libGVSZWxhdGlvbioqIHJlbGF0aW9ucywgbG9u
ZyogblJlbGF0aW9ucykKK3sKKyAgICBpZiAoIXJlbGF0aW9ucyB8fCAhblJlbGF0aW9ucykKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIEVfTk9USU1QTDsKK30KKworSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6cm9sZShsb25nKiBy
b2xlKQoreworICAgIGlmICghcm9sZSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAg
IGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKKyAgICAqcm9sZSA9IHdy
YXBwZXIobV9vYmplY3QpLT5yb2xlKCk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQg
QWNjZXNzaWJsZUJhc2U6OnNjcm9sbFRvKElBMlNjcm9sbFR5cGUgc2Nyb2xsVHlwZSkKK3sKKyAg
ICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm4gRV9GQUlMOworICAgIHJldHVybiBTX0ZB
TFNFOworfQorCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpzY3JvbGxUb1BvaW50KElBMkNvb3Jk
aW5hdGVUeXBlIGNvb3JkaW5hdGVUeXBlLCBsb25nIHgsIGxvbmcgeSkKK3sKKyAgICBpZiAoIW1f
b2JqZWN0KQorICAgICAgICByZXR1cm4gRV9GQUlMOworICAgIHJldHVybiBTX0ZBTFNFOworfQor
CitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfZ3JvdXBQb3NpdGlvbihsb25nKiBncm91cExl
dmVsLCBsb25nKiBzaW1pbGFySXRlbXNJbkdyb3VwLCBsb25nKiBwb3NpdGlvbkluR3JvdXApCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRV9OT1RJTVBMOworfQorCitIUkVT
VUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfc3RhdGVzKEFjY2Vzc2libGVTdGF0ZXMqIHN0YXRlcykK
K3sKKyAgICBpZiAoIXN0YXRlcykKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgIGlm
ICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKKyAgICAqc3RhdGVzID0gMDsK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIEFj
Y2Vzc2libGVCYXNlOjpnZXRfZXh0ZW5kZWRSb2xlKEJTVFIqIGV4dGVuZGVkUm9sZSkKK3sKKyAg
ICBpZiAoIWV4dGVuZGVkUm9sZSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgIGlm
ICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBTX0ZBTFNFOworfQorCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpn
ZXRfbG9jYWxpemVkRXh0ZW5kZWRSb2xlKEJTVFIqIGxvY2FsaXplZEV4dGVuZGVkUm9sZSkKK3sK
KyAgICBpZiAoIWxvY2FsaXplZEV4dGVuZGVkUm9sZSkKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRF
UjsKKworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBTX0ZBTFNFOworfQorCitIUkVTVUxUIEFjY2Vz
c2libGVCYXNlOjpnZXRfbkV4dGVuZGVkU3RhdGVzKGxvbmcqIG5FeHRlbmRlZFN0YXRlcykKK3sK
KyAgICBpZiAoIW5FeHRlbmRlZFN0YXRlcykKKyAgICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKwor
ICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBFX0ZBSUw7CisKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgICpuRXh0ZW5kZWRTdGF0ZXMgPSAwOworICAgIHJldHVybiBTX09LOwor
fQorCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfZXh0ZW5kZWRTdGF0ZXMobG9uZyBtYXhF
eHRlbmRlZFN0YXRlcywgQlNUUioqIGV4dGVuZGVkU3RhdGVzLCBsb25nKiBuRXh0ZW5kZWRTdGF0
ZXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gRV9OT1RJTVBMOworfQor
CitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfbG9jYWxpemVkRXh0ZW5kZWRTdGF0ZXMobG9u
ZyBtYXhMb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcywgQlNUUioqIGxvY2FsaXplZEV4dGVuZGVkU3Rh
dGVzLCBsb25nKiBuTG9jYWxpemVkRXh0ZW5kZWRTdGF0ZXMpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gRV9OT1RJTVBMOworfQorCitIUkVTVUxUIEFjY2Vzc2libGVCYXNl
OjpnZXRfdW5pcXVlSUQobG9uZyogdW5pcXVlSUQpCit7CisgICAgaWYgKCF1bmlxdWVJRCkKKyAg
ICAgICAgcmV0dXJuIEVfUE9JTlRFUjsKKworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJl
dHVybiBFX0ZBSUw7CisKKyAgICAqdW5pcXVlSUQgPSBzdGF0aWNfY2FzdDxsb25nPihtX29iamVj
dC0+YXhPYmplY3RJRCgpKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBBY2Nlc3Np
YmxlQmFzZTo6Z2V0X3dpbmRvd0hhbmRsZShIV05EKiB3aW5kb3dIYW5kbGUpCit7CisgICAgKndp
bmRvd0hhbmRsZSA9IG1fd2luZG93OworICAgIHJldHVybiBTX09LOworfQorCitIUkVTVUxUIEFj
Y2Vzc2libGVCYXNlOjpnZXRfaW5kZXhJblBhcmVudChsb25nKiBpbmRleEluUGFyZW50KQorewor
ICAgIHJldHVybiBFX05PVElNUEw7Cit9CisKK0hSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmdldF9s
b2NhbGUoSUEyTG9jYWxlKiBsb2NhbGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gRV9OT1RJTVBMOworfQorCitIUkVTVUxUIEFjY2Vzc2libGVCYXNlOjpnZXRfYXR0cmli
dXRlcyhCU1RSKiBhdHRyaWJ1dGVzKQoreworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJl
dHVybiBFX0ZBSUw7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gU19GQUxTRTsK
K30KKwogLy8gSUFjY2Vzc2libGUKLUhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgQWNjZXNzaWJs
ZUJhc2U6OmdldF9hY2NQYXJlbnQoSURpc3BhdGNoKiogcGFyZW50KQorSFJFU1VMVCBBY2Nlc3Np
YmxlQmFzZTo6Z2V0X2FjY1BhcmVudChJRGlzcGF0Y2gqKiBwYXJlbnQpCiB7CiAgICAgKnBhcmVu
dCA9IDA7CiAKQEAgLTEzNSwxMCArMzMzLDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
QWNjZXNzaWJsZUJhc2UKICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgfQogCi0gICAgaWYgKCFt
X29iamVjdC0+dG9wRG9jdW1lbnRGcmFtZVZpZXcoKSkKKyAgICBpZiAoIW1fd2luZG93KQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgcmV0dXJuIFdlYlZpZXc6OkFjY2Vzc2libGVPYmpl
Y3RGcm9tV2luZG93KG1fb2JqZWN0LT50b3BEb2N1bWVudEZyYW1lVmlldygpLT5ob3N0V2luZG93
KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLAorICAgIHJldHVybiBXZWJWaWV3OjpBY2Nlc3NpYmxl
T2JqZWN0RnJvbVdpbmRvdyhtX3dpbmRvdywKICAgICAgICAgT0JKSURfV0lORE9XLCBfX3V1aWRv
ZihJQWNjZXNzaWJsZSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPihwYXJlbnQpKTsKIH0KIApA
QCAtMjUwLDc5ICs0NDgsODUgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBBY2Nlc3NpYmxl
QmFzZQogICAgIHJldHVybiBTX09LOwogfQogCi1IUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEFj
Y2Vzc2libGVCYXNlOjpnZXRfYWNjU3RhdGUoVkFSSUFOVCB2Q2hpbGQsIFZBUklBTlQqIHB2U3Rh
dGUpCitsb25nIEFjY2Vzc2libGVCYXNlOjpzdGF0ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFwdlN0
YXRlKQotICAgICAgICByZXR1cm4gRV9QT0lOVEVSOworICAgIGxvbmcgc3RhdGUgPSAwOworICAg
IGlmIChtX29iamVjdC0+aXNMaW5rZWQoKSkKKyAgICAgICAgc3RhdGUgfD0gU1RBVEVfU1lTVEVN
X0xJTktFRDsKIAotICAgIDo6VmFyaWFudEluaXQocHZTdGF0ZSk7CisgICAgaWYgKG1fb2JqZWN0
LT5pc0hvdmVyZWQoKSkKKyAgICAgICAgc3RhdGUgfD0gU1RBVEVfU1lTVEVNX0hPVFRSQUNLRUQ7
CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZE9iajsKLSAgICBIUkVTVUxUIGhyID0g
Z2V0QWNjZXNzaWJpbGl0eU9iamVjdEZvckNoaWxkKHZDaGlsZCwgY2hpbGRPYmopOworICAgIGlm
ICghbV9vYmplY3QtPmlzRW5hYmxlZCgpKQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9TWVNURU1f
VU5BVkFJTEFCTEU7CiAKLSAgICBpZiAoRkFJTEVEKGhyKSkKLSAgICAgICAgcmV0dXJuIGhyOwor
ICAgIGlmIChtX29iamVjdC0+aXNSZWFkT25seSgpKQorICAgICAgICBzdGF0ZSB8PSBTVEFURV9T
WVNURU1fUkVBRE9OTFk7CiAKLSAgICBwdlN0YXRlLT52dCA9IFZUX0k0OwotICAgIHB2U3RhdGUt
PmxWYWwgPSAwOworICAgIGlmIChtX29iamVjdC0+aXNPZmZTY3JlZW4oKSkKKyAgICAgICAgc3Rh
dGUgfD0gU1RBVEVfU1lTVEVNX09GRlNDUkVFTjsKIAotICAgIGlmIChjaGlsZE9iai0+aXNMaW5r
ZWQoKSkKLSAgICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNURU1fTElOS0VEOworICAg
IGlmIChtX29iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRF
X1NZU1RFTV9QUk9URUNURUQ7CiAKLSAgICBpZiAoY2hpbGRPYmotPmlzSG92ZXJlZCgpKQotICAg
ICAgICBwdlN0YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RFTV9IT1RUUkFDS0VEOworICAgIGlmICht
X29iamVjdC0+aXNJbmRldGVybWluYXRlKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZU1RF
TV9JTkRFVEVSTUlOQVRFOwogCi0gICAgaWYgKCFjaGlsZE9iai0+aXNFbmFibGVkKCkpCi0gICAg
ICAgIHB2U3RhdGUtPmxWYWwgfD0gU1RBVEVfU1lTVEVNX1VOQVZBSUxBQkxFOworICAgIGlmICht
X29iamVjdC0+aXNDaGVja2VkKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZU1RFTV9DSEVD
S0VEOwogCi0gICAgaWYgKGNoaWxkT2JqLT5pc1JlYWRPbmx5KCkpCi0gICAgICAgIHB2U3RhdGUt
PmxWYWwgfD0gU1RBVEVfU1lTVEVNX1JFQURPTkxZOworICAgIGlmIChtX29iamVjdC0+aXNQcmVz
c2VkKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZU1RFTV9QUkVTU0VEOwogCi0gICAgaWYg
KGNoaWxkT2JqLT5pc09mZlNjcmVlbigpKQotICAgICAgICBwdlN0YXRlLT5sVmFsIHw9IFNUQVRF
X1NZU1RFTV9PRkZTQ1JFRU47CisgICAgaWYgKG1fb2JqZWN0LT5pc0ZvY3VzZWQoKSkKKyAgICAg
ICAgc3RhdGUgfD0gU1RBVEVfU1lTVEVNX0ZPQ1VTRUQ7CiAKLSAgICBpZiAoY2hpbGRPYmotPmlz
UGFzc3dvcmRGaWVsZCgpKQotICAgICAgICBwdlN0YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RFTV9Q
Uk9URUNURUQ7CisgICAgaWYgKG1fb2JqZWN0LT5pc1Zpc2l0ZWQoKSkKKyAgICAgICAgc3RhdGUg
fD0gU1RBVEVfU1lTVEVNX1RSQVZFUlNFRDsKIAotICAgIGlmIChjaGlsZE9iai0+aXNJbmRldGVy
bWluYXRlKCkpCi0gICAgICAgIHB2U3RhdGUtPmxWYWwgfD0gU1RBVEVfU1lTVEVNX0lOREVURVJN
SU5BVEU7CisgICAgaWYgKG1fb2JqZWN0LT5jYW5TZXRGb2N1c0F0dHJpYnV0ZSgpKQorICAgICAg
ICBzdGF0ZSB8PSBTVEFURV9TWVNURU1fRk9DVVNBQkxFOwogCi0gICAgaWYgKGNoaWxkT2JqLT5p
c0NoZWNrZWQoKSkKLSAgICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNURU1fQ0hFQ0tF
RDsKKyAgICBpZiAobV9vYmplY3QtPmlzU2VsZWN0ZWQoKSkKKyAgICAgICAgc3RhdGUgfD0gU1RB
VEVfU1lTVEVNX1NFTEVDVEVEOwogCi0gICAgaWYgKGNoaWxkT2JqLT5pc1ByZXNzZWQoKSkKLSAg
ICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNURU1fUFJFU1NFRDsKKyAgICBpZiAobV9v
YmplY3QtPmNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRF
X1NZU1RFTV9TRUxFQ1RBQkxFOwogCi0gICAgaWYgKGNoaWxkT2JqLT5pc0ZvY3VzZWQoKSkKLSAg
ICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNURU1fRk9DVVNFRDsKKyAgICBpZiAobV9v
YmplY3QtPmlzTXVsdGlTZWxlY3RhYmxlKCkpCisgICAgICAgIHN0YXRlIHw9IFNUQVRFX1NZU1RF
TV9FWFRTRUxFQ1RBQkxFIHwgU1RBVEVfU1lTVEVNX01VTFRJU0VMRUNUQUJMRTsKIAotICAgIGlm
IChjaGlsZE9iai0+aXNWaXNpdGVkKCkpCi0gICAgICAgIHB2U3RhdGUtPmxWYWwgfD0gU1RBVEVf
U1lTVEVNX1RSQVZFUlNFRDsKKyAgICBpZiAoIW1fb2JqZWN0LT5pc1Zpc2libGUoKSkKKyAgICAg
ICAgc3RhdGUgfD0gU1RBVEVfU1lTVEVNX0lOVklTSUJMRTsKIAotICAgIGlmIChjaGlsZE9iai0+
Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSkKLSAgICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9T
WVNURU1fRk9DVVNBQkxFOworICAgIGlmIChtX29iamVjdC0+aXNDb2xsYXBzZWQoKSkKKyAgICAg
ICAgc3RhdGUgfD0gU1RBVEVfU1lTVEVNX0NPTExBUFNFRDsKIAotICAgIGlmIChjaGlsZE9iai0+
aXNTZWxlY3RlZCgpKQotICAgICAgICBwdlN0YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RFTV9TRUxF
Q1RFRDsKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IFBvcFVwQnV0dG9uUm9sZSkg
eworICAgICAgICBzdGF0ZSB8PSBTVEFURV9TWVNURU1fSEFTUE9QVVA7CiAKLSAgICBpZiAoY2hp
bGRPYmotPmNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkpCi0gICAgICAgIHB2U3RhdGUtPmxWYWwg
fD0gU1RBVEVfU1lTVEVNX1NFTEVDVEFCTEU7CisgICAgICAgIGlmICghbV9vYmplY3QtPmlzQ29s
bGFwc2VkKCkpCisgICAgICAgICAgICBzdGF0ZSB8PSBTVEFURV9TWVNURU1fRVhQQU5ERUQ7Cisg
ICAgfQogCi0gICAgaWYgKGNoaWxkT2JqLT5pc011bHRpU2VsZWN0YWJsZSgpKQotICAgICAgICBw
dlN0YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RFTV9FWFRTRUxFQ1RBQkxFIHwgU1RBVEVfU1lTVEVN
X01VTFRJU0VMRUNUQUJMRTsKKyAgICByZXR1cm4gc3RhdGU7Cit9CiAKLSAgICBpZiAoIWNoaWxk
T2JqLT5pc1Zpc2libGUoKSkKLSAgICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNURU1f
SU5WSVNJQkxFOworSFJFU1VMVCBBY2Nlc3NpYmxlQmFzZTo6Z2V0X2FjY1N0YXRlKFZBUklBTlQg
dkNoaWxkLCBWQVJJQU5UKiBwdlN0YXRlKQoreworICAgIGlmICghcHZTdGF0ZSkKKyAgICAgICAg
cmV0dXJuIEVfUE9JTlRFUjsKIAotICAgIGlmIChjaGlsZE9iai0+aXNDb2xsYXBzZWQoKSkKLSAg
ICAgICAgcHZTdGF0ZS0+bFZhbCB8PSBTVEFURV9TWVNURU1fQ09MTEFQU0VEOworICAgIDo6VmFy
aWFudEluaXQocHZTdGF0ZSk7CiAKLSAgICBpZiAoY2hpbGRPYmotPnJvbGVWYWx1ZSgpID09IFBv
cFVwQnV0dG9uUm9sZSkgewotICAgICAgICBwdlN0YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RFTV9I
QVNQT1BVUDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjaGlsZE9iajsKKyAgICBIUkVTVUxU
IGhyID0gZ2V0QWNjZXNzaWJpbGl0eU9iamVjdEZvckNoaWxkKHZDaGlsZCwgY2hpbGRPYmopOwog
Ci0gICAgICAgIGlmICghY2hpbGRPYmotPmlzQ29sbGFwc2VkKCkpCi0gICAgICAgICAgICBwdlN0
YXRlLT5sVmFsIHw9IFNUQVRFX1NZU1RFTV9FWFBBTkRFRDsKLSAgICB9CisgICAgaWYgKEZBSUxF
RChocikpCisgICAgICAgIHJldHVybiBocjsKKworICAgIHB2U3RhdGUtPnZ0ID0gVlRfSTQ7Cisg
ICAgcHZTdGF0ZS0+bFZhbCA9IHdyYXBwZXIoY2hpbGRPYmopLT5zdGF0ZSgpOwogCiAgICAgcmV0
dXJuIFNfT0s7CiB9CkBAIC04MjAsMTEgKzEwMjQsMTEgQEAgSFJFU1VMVCBBY2Nlc3NpYmxlQmFz
ZTo6Z2V0QWNjZXNzaWJpbGl0eQogICAgIHJldHVybiBTX09LOwogfQogCi1BY2Nlc3NpYmxlQmFz
ZSogQWNjZXNzaWJsZUJhc2U6OndyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQorQWNj
ZXNzaWJsZUJhc2UqIEFjY2Vzc2libGVCYXNlOjp3cmFwcGVyKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iaikgY29uc3QKIHsKICAgICBBY2Nlc3NpYmxlQmFzZSogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8
QWNjZXNzaWJsZUJhc2UqPihvYmotPndyYXBwZXIoKSk7CiAgICAgaWYgKCFyZXN1bHQpCi0gICAg
ICAgIHJlc3VsdCA9IGNyZWF0ZUluc3RhbmNlKG9iaik7CisgICAgICAgIHJlc3VsdCA9IGNyZWF0
ZUluc3RhbmNlKG9iaiwgbV93aW5kb3cpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTgz
NCwxNSArMTAzOCwzIEBAIEhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmlzU2FtZU9iamVjdChJQWMK
ICAgICAqcmVzdWx0ID0gKG90aGVyQWNjZXNzaWJsZUJhc2UgPT0gdGhpcyB8fCBvdGhlckFjY2Vz
c2libGVCYXNlLT5tX29iamVjdCA9PSBtX29iamVjdCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9Ci0K
LUhSRVNVTFQgQWNjZXNzaWJsZUJhc2U6OmF0dHJpYnV0ZVZhbHVlKEJTVFIga2V5LCBWQVJJQU5U
KiB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gRV9QT0lOVEVSOwot
Ci0gICAgQXRvbWljU3RyaW5nIGtleUF0b21pYyhrZXksIDo6U3lzU3RyaW5nTGVuKGtleSkpOwot
Ci0gICAgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlKGtleUF0b21pYywgdmFsdWUpOwotCi0g
ICAgcmV0dXJuIFNfT0s7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlQmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVCYXNlLmgJKHJl
dmlzaW9uIDE1MTUyMikKKysrIFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVCYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogY2xhc3MgREVDTFNQRUNfVVVJRCgiM2Ri
ZDU2NWItZGIyMi00ZDg4LThlMGUtNzc4YmRlNTQ1MjRhIikgQWNjZXNzaWJsZUJhc2UgOiBwdWJs
aWMgSUFjY2Vzc2libGVDb21wYXJhYmxlLCBwdWJsaWMgSVNlcnZpY2VQcm92aWRlciwgcHVibGlj
IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgQWNjZXNzaWJsZUJhc2UqIGNyZWF0ZUluc3RhbmNlKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3QqKTsKKyAgICBzdGF0aWMgQWNjZXNzaWJsZUJhc2UqIGNyZWF0ZUluc3RhbmNlKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqLCBIV05EKTsKIAogICAgIC8vIElTZXJ2aWNlUHJvdmlk
ZXIKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUXVlcnlTZXJ2aWNlKFJF
RkdVSUQgZ3VpZFNlcnZpY2UsIFJFRklJRCByaWlkLCB2b2lkICoqcHB2KTsKQEAgLTQyLDYgKzQy
LDMxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJl
Zih2b2lkKSB7IHJldHVybiArK21fcmVmQ291bnQ7IH0KICAgICB2aXJ0dWFsIFVMT05HIFNURE1F
VEhPRENBTExUWVBFIFJlbGVhc2Uodm9pZCk7CiAKKyAgICAvLyBJQWNjZXNzaWJsZTJfMgorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfYXR0cmlidXRlKEJTVFIgbmFt
ZSwgVkFSSUFOVCogYXR0cmlidXRlKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgZ2V0X2FjY2Vzc2libGVXaXRoQ2FyZXQoSVVua25vd24qKiBhY2Nlc3NpYmxlLCBsb25n
KiBjYXJldE9mZnNldCk7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdl
dF9yZWxhdGlvblRhcmdldHNPZlR5cGUoQlNUUiB0eXBlLCBsb25nIG1heFRhcmdldHMsIElVbmtu
b3duKioqIHRhcmdldHMsIGxvbmcqIG5UYXJnZXRzKTsKKworICAgIC8vIElBY2Nlc3NpYmxlMgor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfblJlbGF0aW9ucyhsb25n
Kik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9yZWxhdGlvbihs
b25nIHJlbGF0aW9uSW5kZXgsIElBY2Nlc3NpYmxlUmVsYXRpb24qKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9yZWxhdGlvbnMobG9uZyBtYXhSZWxhdGlvbnMs
IElBY2Nlc3NpYmxlUmVsYXRpb24qKiByZWxhdGlvbnMsIGxvbmcqIG5SZWxhdGlvbnMpOworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSByb2xlKGxvbmcqKTsKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2Nyb2xsVG8oSUEyU2Nyb2xsVHlwZSk7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNjcm9sbFRvUG9pbnQoSUEyQ29v
cmRpbmF0ZVR5cGUsIGxvbmcgeCwgbG9uZyB5KTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZ2V0X2dyb3VwUG9zaXRpb24obG9uZyogZ3JvdXBMZXZlbCwgbG9uZyogc2lt
aWxhckl0ZW1zSW5Hcm91cCwgbG9uZyogcG9zaXRpb25Jbkdyb3VwKTsKKyAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZ2V0X3N0YXRlcyhBY2Nlc3NpYmxlU3RhdGVzKik7Cisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9leHRlbmRlZFJvbGUoQlNU
UiopOworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfbG9jYWxpemVk
RXh0ZW5kZWRSb2xlKEJTVFIqKTsKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZ2V0X25FeHRlbmRlZFN0YXRlcyhsb25nKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGdldF9leHRlbmRlZFN0YXRlcyhsb25nIG1heEV4dGVuZGVkU3RhdGVzLCBC
U1RSKiogZXh0ZW5kZWRTdGF0ZXMsIGxvbmcqIG5FeHRlbmRlZFN0YXRlcyk7CisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9sb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcyhs
b25nIG1heExvY2FsaXplZEV4dGVuZGVkU3RhdGVzLCBCU1RSKiogbG9jYWxpemVkRXh0ZW5kZWRT
dGF0ZXMsIGxvbmcqIG5Mb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcyk7CisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGdldF91bmlxdWVJRChsb25nKik7CisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF93aW5kb3dIYW5kbGUoSFdORCopOworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfaW5kZXhJblBhcmVudChsb25nKik7
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9sb2NhbGUoSUEyTG9j
YWxlKik7CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGdldF9hdHRyaWJ1
dGVzKEJTVFIqKTsKKwogICAgIC8vIElBY2Nlc3NpYmxlCiAgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGdldF9hY2NQYXJlbnQoSURpc3BhdGNoKiopOwogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBnZXRfYWNjQ2hpbGRDb3VudChsb25nKik7CkBAIC05
NCwyMCArMTE5LDIxIEBAIHB1YmxpYzoKIAogICAgIC8vIElBY2Nlc3NpYmxlQ29tcGFyYWJsZQog
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBpc1NhbWVPYmplY3QoSUFjY2Vz
c2libGVDb21wYXJhYmxlKiBvdGhlciwgQk9PTCogcmVzdWx0KTsKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgYXR0cmlidXRlVmFsdWUoQlNUUiBrZXksIFZBUklBTlQqIHZh
bHVlKTsKIAogcHJvdGVjdGVkOgotICAgIEFjY2Vzc2libGVCYXNlKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3QqKTsKKyAgICBBY2Nlc3NpYmxlQmFzZShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0KiwgSFdORCk7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJsZUJhc2UoKTsKIAogICAgIHZp
cnR1YWwgV1RGOjpTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcg
dmFsdWUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGxvbmcgcm9sZSgpIGNvbnN0OworICAgIHZpcnR1
YWwgbG9uZyBzdGF0ZSgpIGNvbnN0OwogCiAgICAgSFJFU1VMVCBnZXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Rm9yQ2hpbGQoVkFSSUFOVCB2Q2hpbGQsIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Qq
JikgY29uc3Q7CiAKLSAgICBzdGF0aWMgQWNjZXNzaWJsZUJhc2UqIHdyYXBwZXIoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIEFjY2Vzc2libGVCYXNlKiB3cmFwcGVyKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqKSBjb25zdDsKIAorICAgIEhXTkQgbV93aW5kb3c7CiAg
ICAgaW50IG1fcmVmQ291bnQ7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9B
Y2Nlc3NpYmxlRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0Fj
Y2Vzc2libGVEb2N1bWVudC5jcHAJKHJldmlzaW9uIDE1MTUyMikKKysrIFNvdXJjZS9XZWJLaXQv
d2luL0FjY2Vzc2libGVEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDggKzMzLDggQEAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAvLyBBY2Nlc3NpYmxlRG9jdW1lbnQKLUFjY2Vz
c2libGVEb2N1bWVudDo6QWNjZXNzaWJsZURvY3VtZW50KERvY3VtZW50KiBkb2MpCi0gICAgOiBB
Y2Nlc3NpYmxlQmFzZShkb2MtPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgpKQorQWNjZXNz
aWJsZURvY3VtZW50OjpBY2Nlc3NpYmxlRG9jdW1lbnQoRG9jdW1lbnQqIGRvYywgSFdORCB3aW5k
b3cpCisgICAgOiBBY2Nlc3NpYmxlQmFzZShkb2MtPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVj
dCgpLCB3aW5kb3cpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVE
b2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVEb2N1
bWVudC5oCShyZXZpc2lvbiAxNTE1MjIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxl
RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw3ICszMCw3IEBACiAKIGNsYXNzIEFjY2Vzc2li
bGVEb2N1bWVudCA6IHB1YmxpYyBBY2Nlc3NpYmxlQmFzZSB7CiBwdWJsaWM6Ci0gICAgQWNjZXNz
aWJsZURvY3VtZW50KFdlYkNvcmU6OkRvY3VtZW50Kik7CisgICAgQWNjZXNzaWJsZURvY3VtZW50
KFdlYkNvcmU6OkRvY3VtZW50KiwgSFdORCk7CiAgICAgV2ViQ29yZTo6RG9jdW1lbnQqIGRvY3Vt
ZW50KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0FjY2Vz
c2libGVJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJs
ZUltYWdlLmNwcAkocmV2aXNpb24gMTUxNTIyKQorKysgU291cmNlL1dlYktpdC93aW4vQWNjZXNz
aWJsZUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOCBAQAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTo6SFRNTE5hbWVzOwogCi1B
Y2Nlc3NpYmxlSW1hZ2U6OkFjY2Vzc2libGVJbWFnZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmop
Ci0gICAgOiBBY2Nlc3NpYmxlQmFzZShvYmopCitBY2Nlc3NpYmxlSW1hZ2U6OkFjY2Vzc2libGVJ
bWFnZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQorICAgIDogQWNjZXNz
aWJsZUJhc2Uob2JqLCB3aW5kb3cpCiB7CiAgICAgQVNTRVJUX0FSRyhvYmosIG9iai0+aXNJbWFn
ZSgpKTsKICAgICBBU1NFUlRfQVJHKG9iaiwgb2JqLT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlSW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3NpYmxlSW1hZ2UuaAkocmV2aXNpb24gMTUx
NTIyKQorKysgU291cmNlL1dlYktpdC93aW4vQWNjZXNzaWJsZUltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDcgQEAKIGNsYXNzIEFjY2Vzc2libGVJbWFnZSA6IHB1YmxpYyBBY2Nl
c3NpYmxlQmFzZQogewogcHVibGljOgotICAgIEFjY2Vzc2libGVJbWFnZShXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Kik7CisgICAgQWNjZXNzaWJsZUltYWdlKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3QqLCBIV05EKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmxlSW1hZ2UoKSB7IH0K
IAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDE1MTUyMikK
KysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2
LTIwMDksIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjU5MCw3ICsyNTkwLDcgQEAgQ09NUHRyPElB
Y2Nlc3NpYmxlPiBXZWJGcmFtZTo6YWNjZXNzaWJsZQogICAgICAgICAvLyB0aGUgRG9jdW1lbnQg
cmVuZGVyZXIgd2FzIGRlc3Ryb3llZCBhbmQgaXRzIHdyYXBwZXIgd2FzIGRldGFjaGVkLCBvcgog
ICAgICAgICAvLyB0aGUgcHJldmlvdXMgRG9jdW1lbnQgaXMgaW4gdGhlIHBhZ2UgY2FjaGUsIGFu
ZCB0aGUgY3VycmVudCBkb2N1bWVudAogICAgICAgICAvLyBuZWVkcyB0byBiZSB3cmFwcGVkLgot
ICAgICAgICBtX2FjY2Vzc2libGUgPSBuZXcgQWNjZXNzaWJsZURvY3VtZW50KGN1cnJlbnREb2N1
bWVudCk7CisgICAgICAgIG1fYWNjZXNzaWJsZSA9IG5ldyBBY2Nlc3NpYmxlRG9jdW1lbnQoY3Vy
cmVudERvY3VtZW50LCB3ZWJWaWV3KCktPnZpZXdXaW5kb3coKSk7CiAgICAgfQogICAgIHJldHVy
biBtX2FjY2Vzc2libGUuZ2V0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0FjY2Vzc2libGVDb21wYXJhYmxlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGVDb21wYXJhYmxlLmlkbAkocmV2aXNpb24gMTUxNTIy
KQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlQ29tcGFyYWJsZS5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAgaW1wb3J0ICJvY2lkbC5pZGwiOwog
I2VuZGlmCiAKIGltcG9ydCAib2xlYWNjLmlkbCI7CitpbXBvcnQgIkFjY2Vzc2libGUyXzIuaWRs
IjsKIAogY3BwX3F1b3RlKCJleHRlcm4gY29uc3QgR1VJRCAgX19kZWNsc3BlYyhzZWxlY3Rhbnkp
IFNJRF9BY2Nlc3NpYmxlQ29tcGFyYWJsZSA9IHsgMHg2MmI4Y2I1ZiwgMHhmYjdhLCAweDRmYWYs
IDB4ODEsIDB4ZTgsIDB4NTIsIDB4YjYsIDB4NWYsIDB4MTIsIDB4OGIsIDB4MzEgfTsiKQogCkBA
IC0zOSw4ICs0MCw3IEBAIGNwcF9xdW90ZSgiZXh0ZXJuIGNvbnN0IEdVSUQgIF9fZGVjbHNwZWMK
ICAgICBkdWFsLAogICAgIHBvaW50ZXJfZGVmYXVsdCh1bmlxdWUpCiBdCi1pbnRlcmZhY2UgSUFj
Y2Vzc2libGVDb21wYXJhYmxlIDogSUFjY2Vzc2libGUKK2ludGVyZmFjZSBJQWNjZXNzaWJsZUNv
bXBhcmFibGUgOiBJQWNjZXNzaWJsZTJfMgogewogICAgIEhSRVNVTFQgaXNTYW1lT2JqZWN0KFtp
bl0gSUFjY2Vzc2libGVDb21wYXJhYmxlKiBvdGhlciwgW291dCwgcmV0dmFsXSBCT09MKiByZXN1
bHQpOwotICAgIEhSRVNVTFQgYXR0cmlidXRlVmFsdWUoW2luXSBCU1RSIGtleSwgW291dCwgcmV0
dmFsXSBWQVJJQU5UKiB2YWx1ZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL1dlYktpdC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9XZWJLaXQuaWRsCShyZXZpc2lvbiAxNTE1MjIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRl
cmZhY2VzL1dlYktpdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDggQEAgY3BwX3F1
b3RlKCIgKi8iKQogaW1wb3J0ICJvYWlkbC5pZGwiOwogaW1wb3J0ICJvY2lkbC5pZGwiOwogCitp
bXBvcnQgIkFjY2Vzc2libGVBcHBsaWNhdGlvbi5pZGwiOworCiAjaW5jbHVkZSAiQWNjZXNzaWJs
ZUNvbXBhcmFibGUuaWRsIgogI2luY2x1ZGUgIldlYlNjcm9sbGJhclR5cGVzLmlkbCIKICNpbmNs
dWRlICJKYXZhU2NyaXB0Q29yZUFQSVR5cGVzLmlkbCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZTIuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZTIuaWRsCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9B
Y2Nlc3NpYmxlMi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OTIgQEAKKy8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqCisgKgorICogIEZpbGUgTmFtZSAoQWNjZXNzaWJsZTIuaWRsKQorICogCisgKiAg
SUFjY2Vzc2libGUyIElETCBTcGVjaWZpY2F0aW9uIAorICogCisgKiAgQ29weXJpZ2h0IChjKSAy
MDA3LCAyMDEzIExpbnV4IEZvdW5kYXRpb24gCisgKiAgQ29weXJpZ2h0IChjKSAyMDA2IElCTSBD
b3Jwb3JhdGlvbiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgU3VuIE1pY3Jvc3lzdGVt
cywgSW5jLiAKKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiAKKyAqICAgCisgKiAgIAorICogIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dCAKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgCisgKiAgYXJlIG1ldDogCisgKiAgIAorICogICAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodCAKKyAqICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgCisgKiAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIAorICogICAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
CisgKiAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKgorICogICAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBMaW51eCBGb3VuZGF0aW9uIG5vciB0aGUgbmFtZXMgb2Yg
aXRzIAorICogICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIAorICogICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gCisgKiAgICAgIHBlcm1pc3Npb24uIAorICogICAKKyAq
ICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
CisgKiAgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgCisgKiAgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgCisgKiAgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgCisgKiAgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiAgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIAorICogIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCAKKyAqICBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgCisg
KiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgCisgKiAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIAorICogIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiAKKyAqICBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCAKKyAqICBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqICAgCisgKiAgVGhpcyBCU0QgTGlj
ZW5zZSBjb25mb3JtcyB0byB0aGUgT3BlbiBTb3VyY2UgSW5pdGlhdGl2ZSAiU2ltcGxpZmllZCAK
KyAqICBCU0QgTGljZW5zZSIgYXMgcHVibGlzaGVkIGF0OiAKKyAqICBodHRwOi8vd3d3Lm9wZW5z
b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocCAKKyAqICAgCisgKiAgSUFjY2Vzc2li
bGUyIGlzIGEgdHJhZGVtYXJrIG9mIHRoZSBMaW51eCBGb3VuZGF0aW9uLiBUaGUgSUFjY2Vzc2li
bGUyIAorICogIG1hcmsgbWF5IGJlIHVzZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBMaW51eCBG
b3VuZGF0aW9uIFRyYWRlbWFyayAKKyAqICBQb2xpY3kgdG8gaW5kaWNhdGUgY29tcGxpYW5jZSB3
aXRoIHRoZSBJQWNjZXNzaWJsZTIgc3BlY2lmaWNhdGlvbi4gCisgKiAKKyAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KiovIAorCisvKiogQG1haW5wYWdlCisKKyBAc2VjdGlvbiBfaW50ZXJmYWNlcyBJbnRlcmZhY2Vz
CisgIElBY2Nlc3NpYmxlMlxuCisgIElBY2Nlc3NpYmxlMl8yXG4KKyAgSUFjY2Vzc2libGVBY3Rp
b25cbgorICBJQWNjZXNzaWJsZUFwcGxpY2F0aW9uXG4KKyAgSUFjY2Vzc2libGVDb21wb25lbnRc
bgorICBJQWNjZXNzaWJsZURvY3VtZW50XG4KKyAgSUFjY2Vzc2libGVFZGl0YWJsZVRleHRcbgor
ICBJQWNjZXNzaWJsZUh5cGVydGV4dFxuCisgIElBY2Nlc3NpYmxlSHlwZXJ0ZXh0MlxuCisgIElB
Y2Nlc3NpYmxlSHlwZXJsaW5rXG4KKyAgSUFjY2Vzc2libGVJbWFnZVxuCisgIElBY2Nlc3NpYmxl
UmVsYXRpb25cbgorICBJQWNjZXNzaWJsZVRhYmxlIFtEZXByZWNhdGVkXVxuCisgIElBY2Nlc3Np
YmxlVGFibGUyXG4KKyAgSUFjY2Vzc2libGVUYWJsZUNlbGxcbgorICBJQWNjZXNzaWJsZVRleHRc
bgorICBJQWNjZXNzaWJsZVRleHQyXG4KKyAgSUFjY2Vzc2libGVWYWx1ZQorCisgQHNlY3Rpb24g
X3N0cnVjdHMgU3RydWN0cworICBJQTJMb2NhbGVcbgorICBJQTJUYWJsZU1vZGVsQ2hhbmdlXG4K
KyAgSUEyVGV4dFNlZ21lbnQKKworIEBzZWN0aW9uIF9lbnVtcyBFbnVtcworICA6OklBMkFjdGlv
bnMgdmFsdWVzIGFyZSBwcmVkZWZpbmVkIGFjdGlvbnMgZm9yIHVzZSB3aGVuIGltcGxlbWVudGlu
ZyBzdXBwb3J0IGZvciBIVE1MNSBtZWRpYS5cbgorICA6OklBMkNvb3JkaW5hdGVUeXBlIHZhbHVl
cyBkZWZpbmUgdGhlIHJlcXVlc3RlZCBjb29yZGluYXRlIHR5cGUgKHNjcmVlbiBvciBwYXJlbnQg
d2luZG93KS5cbgorICA6OklBMkV2ZW50SUQgdmFsdWVzIGlkZW50aWZ5IGV2ZW50cy5cbgorICA6
OklBMlJvbGUgdmFsdWVzIGRlZmluZXMgcm9sZXMgd2hpY2ggYXJlIGluIGFkZGl0aW9uIHRvIHRo
ZSBleGlzdGluZyBNU0FBIHJvbGVzLlxuCisgIDo6SUEyU2Nyb2xsVHlwZSB2YWx1ZXMgZGVmaW5l
IHdoZXJlIHRvIHBsYWNlIGFuIG9iamVjdCBvciBzdWJzdHJpbmcgb24gdGhlIHNjcmVlbi5cbgor
ICA6OklBMlN0YXRlcyB2YWx1ZXMgZGVmaW5lIHN0YXRlcyB3aGljaCBhcmUgaW4gYWRkaXRpb24g
dG8gdGhlIGV4aXN0aW5nIE1TQUEgc3RhdGVzLlxuCisgIDo6SUEyVGFibGVNb2RlbENoYW5nZVR5
cGUgdmFsdWVzIGRlc2NyaWJlIHRoZSBraW5kcyBvZiBjaGFuZ2VzIG1hZGUgdG8gYSB0YWJsZSAo
aW5zZXJ0LCBkZWxldGUsIHVwZGF0ZSkuXG4KKyAgOjpJQTJUZXh0Qm91bmRhcnlUeXBlIHZhbHVl
cyBkZWZpbmUgdGhlIHJlcXVlc3RlZCB0ZXh0IHVuaXQgKGNoYXJhY3Rlciwgd29yZCwgc2VudGVu
Y2UsIGxpbmUsIHBhcmFncmFwaCkuXG4KKyAgOjpJQTJUZXh0U3BlY2lhbE9mZnNldHMgdmFsdWVz
IGRlZmluZSBzcGVjaWFsIG9mZnNldHMgZm9yIHVzZSBpbiB0aGUgdGV4dCBpbnRlcmZhY2VzLgor
CisgQHNlY3Rpb24gX2NvbnN0YW50cyBDb25zdGFudHMKKyAgQHJlZiBncnBSZWxhdGlvbnMKKwor
IEBzZWN0aW9uIF9taXNjIE1pc2NlbGxhbmVvdXMKKyAgQHJlZiBfbGljZW5zZVBhZ2UgIkJTRCBM
aWNlbnNlIlxuCisgIEByZWYgX2dlbmVyYWxJbmZvICJHZW5lcmFsIEluZm9ybWF0aW9uIlxuCisK
KyBAcGFnZSBfbGljZW5zZVBhZ2UgQlNEIExpY2Vuc2UKKyAgJUlBY2Nlc3NpYmxlMiBJREwgU3Bl
Y2lmaWNhdGlvbgorCisgIENvcHlyaWdodCAoYykgMjAwNywgMjAxMyBMaW51eCBGb3VuZGF0aW9u
XG4KKyAgQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jwb3JhdGlvblxuCisgIENvcHlyaWdodCAo
YykgMjAwMCwgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuXG4KKyAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKworICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQgCisgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyAKKyAgYXJlIG1ldDogCisgICAgCisg
ICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodCAKKyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgCisgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAorICAgICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgCisgICAgICBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgCisgICAg
ICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIAorICAgMy4gTmVpdGhlciB0aGUg
bmFtZSBvZiB0aGUgTGludXggRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyAKKyAgICAg
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
CisgICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gCisgICAgICBwZXJtaXNzaW9uLiAKKyAKKyAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIAorICBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKKyAgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgCisgIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAorICBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IAorICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgCisgIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyAKKyAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgCisgIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiAKKyAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIAorICBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCAKKyAgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgCisgIFRoaXMgQlNE
IExpY2Vuc2UgY29uZm9ybXMgdG8gdGhlIE9wZW4gU291cmNlIEluaXRpYXRpdmUgIlNpbXBsaWZp
ZWQgCisgIEJTRCBMaWNlbnNlIiBhcyBwdWJsaXNoZWQgYXQ6IAorICBodHRwOi8vd3d3Lm9wZW5z
b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocCAKKyAKKyAgJUlBY2Nlc3NpYmxlMiBp
cyBhIHRyYWRlbWFyayBvZiB0aGUgTGludXggRm91bmRhdGlvbi4gVGhlICVJQWNjZXNzaWJsZTIg
CisgIG1hcmsgbWF5IGJlIHVzZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZQorICA8YSBocmVmPSJo
dHRwOi8vd3d3LmxpbnV4Zm91bmRhdGlvbi5vcmcvY29sbGFib3JhdGUvd29ya2dyb3Vwcy9hY2Nl
c3NpYmlsaXR5L3RyYWRlbWFyay1wb2xpY3kiPgorICBMaW51eCBGb3VuZGF0aW9uIFRyYWRlbWFy
ayBQb2xpY3k8L2E+IHRvIGluZGljYXRlIGNvbXBsaWFuY2Ugd2l0aCB0aGUgJUlBY2Nlc3NpYmxl
MiBzcGVjaWZpY2F0aW9uLiAKKworIEBwYWdlIF9nZW5lcmFsSW5mbyBHZW5lcmFsIEluZm9ybWF0
aW9uIAorICBUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGlzIGFwcGxpY2FibGUgdG8gdHdvIG9y
IG1vcmUgaW50ZXJmYWNlcy4KKworIEByZWYgX2Vycm9yc1xuCisgQHJlZiBfbWVtb3J5XG4KKyAm
bmJzcDsmbmJzcDtAcmVmIF9hcnJheUNvbnNpZGVyYXRpb25cbgorIEByZWYgX2luZGV4ZXNcbgor
IEByZWYgX2VudW1zXG4KKyBAcmVmIF9zcGVjaWFsT2Zmc2V0c1xuCisgQHJlZiBfZGljb3Zlcmlu
Z0ludGVyZmFjZXNcbgorIEByZWYgX2NoYW5naW5nSW50ZXJmYWNlc1xuCisgQHJlZiBfYXBwbGlj
YXRpb25JbmZvXG4KKyBAcmVmIF9jaGlsZElEc1xuCisgQHJlZiBfdmFyaWFudHNcbgorIEByZWYg
X2lhYWN0aW9uLWlhaHlwZXJsaW5rXG4KKyBAcmVmIF90cmFkZW1hcmsKKworIEBzZWN0aW9uIF9l
cnJvcnMgRXJyb3IgSGFuZGxpbmcKKyAgSFJFU1VMVCB2YWx1ZXMgYXJlIGRlZmluZWQgYnkgdGhl
IE1pY3Jvc29mdCZyZWc7IFdpbjMyJnJlZzsgQVBJLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJl
ZmVyIHRvCisgIDxhIGhyZWY9Imh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFy
eS93aW5kb3dzL2Rlc2t0b3AvYWEzNzgxMzclMjh2PXZzLjg1JTI5LmFzcHgiPgorICBJbnRlcnBy
ZXRpbmcgSFJFU1VMVCBWYWx1ZXM8L2E+IGluIE1TRE4mcmVnOy4KKworICBOb3RlIHRoYXQgdGhl
IFNfRkFMU0UgcmV0dXJuIHZhbHVlIGlzIGNvbnNpZGVyZWQgYSBub24tZXJyb3IgdmFsdWUgYW5k
IHRoZSAKKyAgU1VDQ0VFREVEIG1hY3JvIHdpbGwgcmV0dXJuIFRSVUUuICBTX0ZBTFNFIGlzIHVz
ZWQgd2hlbiB0aGVyZSBpcyBubyBmYWlsdXJlCisgIGJ1dCB0aGVyZSB3YXMgbm90aGluZyB2YWxp
ZCB0byByZXR1cm4sIGUuZy4gaW4gSUFjY2Vzc2libGUyOjphdHRyaWJ1dGVzIHdoZW4KKyAgdGhl
cmUgYXJlIG5vIGF0dHJpYnV0ZXMuICBXaGVuIFNfRkFMU0UgaXMgcmV0dXJuZWQgW291dF0gcG9p
bnRlciB0eXBlcyBzaG91bGQgCisgIGJlIE5VTEwgYW5kIFtvdXRdIGxvbmdzIHNob3VsZCBnZW5l
cmFsbHkgYmUgMCwgYnV0IHNvbWV0aW1lcyAtMSBpcyB1c2VkIHN1Y2gKKyAgYXMgSUFjY2Vzc2li
bGUyOjppbmRleEluUGFyZW50LCBJQWNjZXNzaWJsZVRleHQ6OmNhcmV0T2Zmc2V0LCBhbmQKKyAg
SUFjY2Vzc2libGVIeXBlcnRleHQ6Omh5cGVybGlua0luZGV4LgorCisgIE5vdGUgdGhhdCBmb3Ig
QlNUUiBbb3V0XSB2YXJpYWJsZXMgY29tbW9uIENPTSBwcmFjdGljZSBpcyB0aGF0IHRoZSBzZXJ2
ZXIgZG9lcyAKKyAgdGhlIFN5c0FsbG9jU3RyaW5nIGFuZCB0aGUgY2xpZW50IGRvZXMgdGhlIFN5
c0ZyZWVTdHJpbmcuICBBbHNvIG5vdGUgdGhhdCB3aGVuCisgIE5VTEwgaXMgcmV0dXJuZWQgdGhl
cmUgaXMgbm8gbmVlZCBmb3IgdGhlIGNsaWVudCB0byBjYWxsIFN5c0ZyZWVTdHJpbmcuICBQbGVh
c2UKKyAgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIGVhY2ggbWV0aG9kIGZvciBtb3Jl
IGRldGFpbHMgcmVnYXJkaW5nIGVycm9yIGhhbmRsaW5nLgorCisgQHNlY3Rpb24gX21lbW9yeSBN
ZW1vcnkgTWFuYWdlbWVudAorICBUaGUgZm9sbG93aW5nIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3Vl
cyBzaG91bGQgYmUgY29uc2lkZXJlZDoKKyAgQGxpIEFsdGhvdWdoIFtvdXRdIEJTVFIgdmFyaWFi
bGVzIGFyZSBkZWNsYXJlZCBieSB0aGUgY2xpZW50LCB0aGVpciBzcGFjZSBpcyAKKyAgIGFsbG9j
YXRlZCBieSB0aGUgc2VydmVyLiAgVGhleSBuZWVkIHRvIGJlIGZyZWVkIHdpdGggU3lzRnJlZVN0
cmluZyBieSB0aGUgCisgICBjbGllbnQgYXQgZW5kIG9mIGxpZmU7IHRoZSBzYW1lIGlzIHRydWUg
d2hlbiBCU1RScyBhcmUgdXNlZCBpbiBzdHJ1Y3RzIG9yIAorICAgYXJyYXlzIHdoaWNoIGFyZSBw
YXNzZWQgdG8gdGhlIHNlcnZlci4KKyAgQGxpIElmIHRoZXJlIGlzIG5vIHZhbGlkIFtvdXRdIEJT
VFIgdG8gcmV0dXJuLCB0aGUgc2VydmVyIHNob3VsZCByZXR1cm4gU19GQUxTRSBhbmQgCisgICBh
c3NpZ24gTlVMTCB0byB0aGUgb3V0cHV0LCBlLmcuICp0aGVPdXRCU1RSID0gTlVMTDsuIAorICBA
bGkgQ09NIGludGVyZmFjZXMgbmVlZCB0byBiZSByZWZlcmVuY2VkIHdpdGggQWRkUmVmIHdoZW4g
dXNlZCBhbmQgZGVyZWZlcmVuY2VkCisgICB3aXRoIFJlbGVhc2UgYXQgZW5kIG9mIGxpZmUuCisg
IEBsaSBTaW5nbGUgW291dF0gbG9uZ3MsIEhXTkRzLCBib29sZWFucywgYW5kIHN0cnVjdHMgYXJl
IGRlY2xhcmVkIGJ5IHRoZSBjYWxsZXIKKyAgIGFuZCBwYXNzZWQgYnkgcmVmZXJlbmNlLiBUaGUg
bWFyc2hhbGxlciBkb2VzIGFsbCB0aGUgbWVtb3J5IG1hbmFnZW1lbnQuCisgIAorICBUaGUgZm9s
bG93aW5nIGFydGljbGVzIG1heSBiZSBoZWxwZnVsIGZvciB1bmRlcnN0YW5kaW5nIG1lbW9yeSBt
YW5hZ2VtZW50IGlzc3VlczoKKyAgQGxpIEFuIGFydGljbGUgYnkgRG9uIEJveCBpbiBhCisgICA8
YSBocmVmPSJodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vbXNqLzExOTYvYWN0aXZleDExOTYuYXNw
eCI+USAmIEEgc2VjdGlvbjwvYT4KKyAgIG9mIHRoZSBOb3ZlbWJlciAxOTk2IGVkaXRpb24gb2Yg
dGhlIE1pY3Jvc29mdCBTeXN0ZW1zIEpvdXJuYWwuCisgIEBsaSBBIHBvc3RpbmcgdG8gYSBDb2Rl
R3VydSBmb3J1bSwgCisgICA8YSBocmVmPSJodHRwOi8vd3d3LmNvZGVndXJ1LmNvbS9mb3J1bS9z
aG93dGhyZWFkLnBocD90PTM2NDUxMSI+V2luZG93cyBTREsgCisgICBTdHJpbmc6IFdoYXQgYXJl
IHRoZSBydWxlcyBmb3IgQlNUUiBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24/PC9hPgorCisg
QHN1YnNlY3Rpb24gX2FycmF5Q29uc2lkZXJhdGlvbiBTcGVjaWFsIENvbnNpZGVyYXRpb24gd2hl
biB1c2luZyBBcnJheXMKKyAgVGhlcmUgYXJlIHNldmVyYWwgbWV0aG9kcyB3aGljaCByZXR1cm4g
YXJyYXlzLiAgSW4gdGhlIGNhc2Ugb2YgSUFjY2Vzc2libGUyOjpyZWxhdGlvbnMKKyAgYW5kIElB
Y2Nlc3NpYmxlUmVsYXRpb246OnRhcmdldHMgdGhlIGNsaWVudCBtdXN0IGFsbG9jYXRlIGFuZCBm
cmVlIHRoZSBhcnJheXMuCisKKyAgRm9yIHRoZSByZW1haW5pbmcgbWV0aG9kcyB3aGljaCByZXR1
cm4gYXJyYXlzLCB0aGUgc2VydmVyIG11c3QgYWxsb2NhdGUgdGhlIGFycmF5CisgIGFuZCB0aGUg
Y2xpZW50IG11c3QgZnJlZSB0aGUgYXJyYXkgd2hlbiBubyBsb25nZXIgbmVlZGVkLiAgVGhlc2Ug
bWV0aG9kcyBhcmUKKyAgSUFjY2Vzc2libGUyOjpleHRlbmRlZFN0YXRlcywgSUFjY2Vzc2libGUy
Ojpsb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcywKKyAgSUFjY2Vzc2libGUyXzI6OnJlbGF0aW9uVGFy
Z2V0c09mVHlwZSwgSUFjY2Vzc2libGVBY3Rpb246OmtleUJpbmRpbmcsIAorICBJQWNjZXNzaWJs
ZUh5cGVydGV4dDI6Omh5cGVybGlua3MsIElBY2Nlc3NpYmxlVGFibGU6OnNlbGVjdGVkQ2hpbGRy
ZW4sIAorICBJQWNjZXNzaWJsZVRhYmxlOjpzZWxlY3RlZENvbHVtbnMsIElBY2Nlc3NpYmxlVGFi
bGU6OnNlbGVjdGVkUm93cywKKyAgSUFjY2Vzc2libGVUYWJsZTI6OnNlbGVjdGVkQ2VsbHMsIElB
Y2Nlc3NpYmxlVGFibGUyOjpzZWxlY3RlZENvbHVtbnMsCisgIElBY2Nlc3NpYmxlVGFibGUyOjpz
ZWxlY3RlZFJvd3MsIElBY2Nlc3NpYmxlVGFibGVDZWxsOjpjb2x1bW5IZWFkZXJDZWxscywKKyAg
YW5kIElBY2Nlc3NpYmxlVGFibGVDZWxsOjpyb3dIZWFkZXJDZWxscy4KKyAgRm9yIHRob3NlIG1l
dGhvZHMsIHRoZSBzZXJ2ZXIgbXVzdCBhbGxvY2F0ZSBib3RoIHRoZSB0b3AgbGV2ZWwgYXJyYXkg
YW5kIGFueSBzdG9yYWdlIAorICBhc3NvY2lhdGVkIHdpdGggaXQsIGUuZy4gZm9yIEJTVFJzLiAg
VGhlIHNlcnZlciBtdXN0IGFsbG9jYXRlIHRoZSBhcnJheXMgd2l0aCAKKyAgQ29UYXNrTWVtQWxs
b2MgYW5kIGFueSBCU1RScyB3aXRoIFN5c0FsbG9jU3RyaW5nLiAgVGhlIGNsaWVudCBtdXN0IHVz
ZSBDb1Rhc2tNZW1GcmVlCisgIHRvIGZyZWUgdGhlIGFycmF5IGFuZCBhbnkgQlNUUnMgbXVzdCBi
ZSBmcmVlZCB3aXRoIFN5c0ZyZWVTdHJpbmcuICAKKyAgCisgIEFsc28sIHRoZSBJREwgZm9yIElB
Y2Nlc3NpYmxlMjo6ZXh0ZW5kZWRTdGF0ZXMsIElBY2Nlc3NpYmxlMjo6bG9jYWxpemVkRXh0ZW5k
ZWRTdGF0ZXMsIAorICBJQWNjZXNzaWJsZUFjdGlvbjo6a2V5QmluZGluZywgSUFjY2Vzc2libGVU
YWJsZTo6c2VsZWN0ZWRDaGlsZHJlbiwgCisgIElBY2Nlc3NpYmxlVGFibGU6OnNlbGVjdGVkQ29s
dW1ucywgYW5kIElBY2Nlc3NpYmxlVGFibGU6OnNlbGVjdGVkUm93cyBpbmNsdWRlcyBhbgorICBl
eHRyYW5lb3VzIFtpbl0gcGFyYW1ldGVyIGZvciB0aGUgY2FsbGVyIHRvIHNwZWNpZnkgdGhlIG1h
eCBzaXplIG9mIHRoZSBhcnJheS4KKyAgVGhpcyBwYXJhbWV0ZXIgd2lsbCBiZSBpZ25vcmVkIGJ5
IHRoZSBDT00gc2VydmVyLgorCisgQHNlY3Rpb24gX2luZGV4ZXMgWmVybyBhbmQgT25lIEJhc2Vk
IEluZGV4ZXMKKyAgVW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQgYWxsIG9mZnNldHMgYW5kIGlu
ZGV4ZXMgYXJlIDAgYmFzZWQuIAorCisgQHNlY3Rpb24gX2VudW1zIEVudW1zCisgIE5vdGUgdGhh
dCBlbnVtcyBzdGFydCBhdCAwLgorCisgQHNlY3Rpb24gX3NwZWNpYWxPZmZzZXRzIFNwZWNpYWwg
T2Zmc2V0cyBmb3IgdXNlIGluIHRoZSBJQWNjZXNzaWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRp
dGFibGVUZXh0IE1ldGhvZHMKKyAgSUFjY2Vzc2libGVUZXh0IGFuZCBJQWNjZXNzaWJsZUVkaXRh
YmxlVGV4dCBjYW4gdXNlIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcKKyAgc3BlY2lhbCBv
ZmZzZXQgdmFsdWVzLiAgVGhleSBhcmUgZGVmaW5lZCBpbiB0aGUgOjpJQTJUZXh0U3BlY2lhbE9m
ZnNldHMgZW51bS4KKyAgQGxpIFVzaW5nIDo6SUEyX1RFWFRfT0ZGU0VUX0xFTkdUSCAoLTEpIGFz
IGFuIG9mZnNldCBpbiBhbnkgb2YgdGhlIElBY2Nlc3NpYmxlVGV4dCBvcgorICAgSUFjY2Vzc2li
bGVFZGl0YWJsZVRleHQgbWV0aG9kcyBpcyB0aGUgc2FtZSBhcyBzcGVjaWZ5aW5nIHRoZSBsZW5n
dGggb2YgdGhlIHN0cmluZy4KKyAgQGxpIFVzaW5nIDo6SUEyX1RFWFRfT0ZGU0VUX0NBUkVUICgt
MikgYXMgYW4gb2Zmc2V0IGZvciBJQWNjZXNzaWJsZVRleHQ6OnRleHRCZWZvcmVPZmZzZXQsIAor
ICAgSUFjY2Vzc2libGVUZXh0Ojp0ZXh0QXRPZmZzZXQsIGFuZCBJQWNjZXNzaWJsZVRleHQ6OnRl
eHRBZnRlck9mZnNldCBpbmRpY2F0ZXMgdGhhdCB0aGUgCisgICB0ZXh0IHJlbGF0ZWQgdG8gdGhl
IHBoeXNpY2FsIGxvY2F0aW9uIG9mIHRoZSBjYXJldCBzaG91bGQgYmUgdXNlZC4gIFRoaXMgaXMg
bmVlZGVkIGZvciAKKyAgIGFwcGxpY2F0aW9ucyB0aGF0IGNvbnNpZGVyIHRoZSBjaGFyYWN0ZXIg
b2Zmc2V0IG9mIHRoZSBlbmQgb2Ygb25lIGxpbmUgKGFzIHJlYWNoZWQgYnkgCisgICBwcmVzc2lu
ZyB0aGUgRW5kIGtleSkgdGhlIHNhbWUgYXMgdGhlIG9mZnNldCBvZiB0aGUgZmlyc3QgY2hhcmFj
dGVyIG9uIHRoZSBuZXh0IGxpbmUuCisgICBTaW5jZSB0aGUgc2FtZSBvZmZzZXQgaXMgYXNzb2Np
YXRlZCB3aXRoIHR3byBkaWZmZXJlbnQgbGluZXMgYSBzcGVjaWFsIG1lYW5zIGlzIG5lZWRlZCAK
KyAgIHRvIGZldGNoIHRleHQgZnJvbSB0aGUgbGluZSB3aGVyZSB0aGUgY2FyZXQgaXMgcGh5c2lj
YWxseSBsb2NhdGVkLgorCisgQHNlY3Rpb24gX2RpY292ZXJpbmdJbnRlcmZhY2VzIERpc2NvdmVy
eSBvZiBJbnRlcmZhY2VzCisgIEluIGdlbmVyYWwgQVQgKEFzc2lzdGl2ZSBUZWNobm9sb2d5KSBz
aG91bGQgdHJ5IElBY2Nlc3NpYmxlMiBpbnRlcmZhY2VzLCBmb2xsb3dlZCBieSB1c2luZyAKKyAg
dGhlIE1TQUEgKE1pY3Jvc29mdCZyZWc7IEFjdGl2ZSBBY2Nlc3NpYmlsaXR5JnJlZzspIGludGVy
ZmFjZXMuICAoSW4gY2FzZXMgd2hlcmUgdGhlIGFuIGFwcGxpY2F0aW9uCisgIGlzIGtub3duIHRv
IGhhdmUgY3VzdG9tIGludGVyZmFjZXMgd2hpY2ggcHJvdmlkZSBpbmZvcm1hdGlvbiBub3Qgc3Vw
cGxpZWQgYnkgSUFjY2Vzc2libGUyCisgIG9yIE1TQUEsIHRoZW4gdGhvc2UgY3VzdG9tIGludGVy
ZmFjZXMgY2FuIGJlIHVzZWQuKSAgVGhlIEFUIGNhbiB0aGVuLCBieSBkZWZhdWx0LCBzdXBwb3J0
CisgIHVua25vd24gSUFjY2Vzc2libGUyL01TQUEgYXBwbGljYXRpb25zLCB3aXRob3V0IHRoZSBh
cHBsaWNhdGlvbiBkZXZlbG9wZXJzIGhhdmluZyB0byByZXF1ZXN0CisgIEFUIHZlbmRvcnMgZm9y
IHN1cHBvcnQgb24gYW4gaW5kaXZpZHVhbCBhcHBsaWNhdGlvbiBieSBhcHBsaWNhdGlvbiBiYXNp
cy4KKworICBXaGVuIHlvdSBoYXZlIGEgcmVmZXJlbmNlIHRvIGFuIElBY2Nlc3NpYmxlIGFuZCBy
ZXF1aXJlIGEgcmVmZXJlbmNlIHRvIGFuIElBY2Nlc3NpYmxlMiB1c2UgCisgIFF1ZXJ5U2Vydmlj
ZSBhcyBmb2xsb3dzOgorICBAY29kZQorICAvLyBwQWNjIGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBh
Y2Nlc3NpYmxlIG9iamVjdCdzIElBY2Nlc3NpYmxlIGludGVyZmFjZS4gCisgIElTZXJ2aWNlUHJv
dmlkZXIgKnBTZXJ2aWNlID0gTlVMTDsgCisgIGhyID0gcEFjYy0+UXVlcnlJbnRlcmZhY2UoSUlE
X0lTZXJ2aWNlUHJvdmlkZXIsICh2b2lkICoqKSZwU2VydmljZSk7IAorICBpZihTVUNDRUVERUQo
aHIpKSB7IAorICAgIElBY2Nlc3NpYmxlMiAqcElBMiA9IE5VTEw7IAorICAgIGhyID0gcFNlcnZp
Y2UtPlF1ZXJ5U2VydmljZShJSURfSUFjY2Vzc2libGUsIElJRF9JQWNjZXNzaWJsZTIsICh2b2lk
KiopJnBJQTIpOyAKKyAgICBpZiAoU1VDQ0VFREVEKGhyKSAmJiBwSUEyKSB7IAorICAgICAgLy8g
VGhlIGNvbnRyb2wgc3VwcG9ydHMgSUFjY2Vzc2libGUyLiAKKyAgICAgIC8vIHBJQTIgaXMgdGhl
IHJlZmVyZW5jZSB0byB0aGUgYWNjZXNzaWJsZSBvYmplY3QncyBJQWNjZXNzaWJsZTIgaW50ZXJm
YWNlLgorICAgIH0gCisgIH0gCisgIEBlbmRjb2RlCisKKyAgQHNlY3Rpb24gX2NoYW5naW5nSW50
ZXJmYWNlcyBDaGFuZ2luZyBiZXR3ZWVuIEFjY2Vzc2libGUgSW50ZXJmYWNlcworICBOb3RlIHRo
YXQgZGV2ZWxvcGVycyBtdXN0IGFsd2F5cyBpbXBsZW1lbnQgTVNBQSdzIElBY2Nlc3NpYmxlIGFu
ZCwgaWYgbmVlZGVkLCBzb21lCisgIG9mIHRoZSBpbnRlcmZhY2VzIGluIHRoZSBzZXQgb2YgSUFj
Y2Vzc2libGUyIGludGVyZmFjZXMuICBBbHRob3VnaCB0aGUgSUFjY2Vzc2libGUyCisgIElETCBp
cyBjb2RlZCBzdWNoIHRoYXQgSUFjY2Vzc2libGUyIGlzIGEgc3ViY2xhc3Mgb2YgTVNBQSdzIElB
Y2Nlc3NpYmxlLCBub25lIG9mCisgIE1TQUEncyBJQWNjZXNzaWJsZSBtZXRob2RzIGFyZSByZWRl
ZmluZWQgYnkgSUFjY2Vzc2libGUyLgorCisgIFF1ZXJ5U2VydmljZSBtdXN0IGJlIHVzZWQgdG8g
c3dpdGNoIGZyb20gYSByZWZlcmVuY2UgdG8gYW4gTVNBQSBJQWNjZXNzaWJsZSBpbnRlcmZhY2Ug
CisgIHRvIGFub3RoZXIgaW50ZXJmYWNlLiAgVGhpcyBoYXMgYmVlbiAKKyAgPGEgaHJlZj0iaHR0
cDovL3d3dy5hdGlhLm9yZy9maWxlcy9wdWJsaWMvSW50cm9kdWNpbmdfSUFjY2Vzc2libGVFeC5k
b2MiPgorICBkb2N1bWVudGVkPC9hPiBhbmQgdGhlIHBlcnRpbmVudCBmYWN0cyBoYXZlIGJlZW4g
ZXh0cmFjdGVkIGJlbG93OiAKKworICBAcGFyIAorICAgV2h5IHVzZSBRdWVyeVNlcnZpY2UgaW5z
dGVhZCBvZiBqdXN0IHVzaW5nIFF1ZXJ5SW50ZXJmYWNlIHRvIGdldCBJQWNjZXNzaWJsZUV4IAor
ICAgZGlyZWN0bHk/IFRoZSByZWFzb24gaXMgdGhhdCBzaW5jZSBNU0FBIDIuMCwgY2xpZW50cyBk
b24ndCB0YWxrIHRvIGEgc2VydmVyJ3MgCisgICBJQWNjZXNzaWJsZSBpbnRlcmZhY2UgZGlyZWN0
bHk7IGluc3RlYWQgdGhleSB0YWxrIHRvIGFuIGludGVybWVkaWF0ZSBNU0FBLXByb3ZpZGVkIAor
ICAgd3JhcHBlciB0aGF0IGNhbGxzIHRocm91Z2ggdG8gdGhlIG9yaWdpbmFsIElBY2Nlc3NpYmxl
LiBUaGlzIHdyYXBwZXIgcHJvdmlkZXMgc2VydmljZXMgCisgICBzdWNoIGFzIGltcGxlbWVudGlu
ZyBJRGlzcGF0Y2gsIHN1cHBseWluZyBpbmZvcm1hdGlvbiBmcm9tIE1TQUEgMi4wJ3MgRHluYW1p
YyBBbm5vdGF0aW9uIAorICAgc2VydmljZSwgYW5kIHNjYWxpbmcgbG9jYXRpb25zIHdoZW4gcnVu
bmluZyBvbiBXaW5kb3dzIFZpc3RhIHdpdGggRFBJIHNjYWxpbmcgZW5hYmxlZC4gCisgICBRdWVy
eVNlcnZpY2UgaXMgdGhlIHN1cHBvcnRlZCB3YXkgdG8gZXhwb3NlIGFkZGl0aW9uYWwgaW50ZXJm
YWNlcyBmcm9tIGFuIGV4aXN0aW5nIAorICAgSUFjY2Vzc2libGUgYW5kIHdhcyBvcmlnaW5hbGx5
IHVzZWQgYnkgTVNIVE1MIHRvIGV4cG9zZSBJSFRNTEVsZW1lbnQgb2JqZWN0cyBjb3JyZXNwb25k
aW5nIAorICAgdG8gSUFjY2Vzc2libGVzLiBRdWVyeVNlcnZpY2UgaXMgb2Z0ZW4gbW9yZSBjb252
ZW5pZW50IGZvciBzZXJ2ZXJzIHRvIGltcGxlbWVudCB0aGFuIAorICAgUXVlcnlJbnRlcmZhY2Ug
YmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlIHRoZSBzYW1lIHJlcXVpcmVtZW50cyBmb3IgcHJlc2Vy
dmluZyBvYmplY3QgCisgICBpZGVudGl0eSBvciBzeW1tZXRyeS90cmFuc2l0aXZpdHkgYXMgUXVl
cnlJbnRlcmZhY2UsIHNvIFF1ZXJ5U2VydmljZSBhbGxvd3Mgc2VydmVycyB0byAKKyAgIGVhc2ls
eSBpbXBsZW1lbnQgdGhlIGludGVyZmFjZSBvbiB0aGUgc2FtZSBvYmplY3Qgb3IgYSBzZXBhcmF0
ZSBvYmplY3QuIFRoZSBsYXR0ZXIgaXMgCisgICBvZnRlbiBoYXJkIHRvIGRvIHdpdGggUXVlcnlJ
bnRlcmZhY2UgdW5sZXNzIHRoZSBvcmlnaW5hbCBvYmplY3Qgc3VwcG9ydHMgYWdncmVnYXRpb24u
IAorCisgIFR3byByZWxhdGVkIHJlZmVyZW5jZXMgaW4gTVNETiZyZWc7IGFyZTogCisgIEBsaSA8
YSBocmVmPSJodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM2OTYwNzgo
VlMuODUpLmFzcHgiPgorICAiVXNpbmcgUXVlcnlTZXJ2aWNlIHRvIGV4cG9zZSBhIG5hdGl2ZSBv
YmplY3QgbW9kZWwgaW50ZXJmYWNlIGZvciBhbiBJQWNjZXNzaWJsZSBvYmplY3QiPC9hPgorICBA
bGkgPGEgaHJlZj0iaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L21zNTI4
NDE1LmFzcHgjYWNjX29iaiI+IAorICAiQWNjZXNzaW5nIHRoZSBJbnRlcm5ldCBFeHBsb3JlciBP
YmplY3QgQXNzb2NpYXRlZCB3aXRoIGFuIEFjY2Vzc2libGUgT2JqZWN0IjwvYT4KKworICBCYXNl
ZCBvbiB0aGlzIGluZm9ybWF0aW9uIGZyb20gTWljcm9zb2Z0LCBRdWVyeVNlcnZpY2UgbXVzdCBi
ZSB1c2VkIHRvIHN3aXRjaCBiYWNrIGFuZCBmb3J0aCAKKyAgYmV0d2VlbiBhIHJlZmVyZW5jZSB0
byBhbiBNU0FBIElBY2Nlc3NpYmxlIGludGVyZmFjZSBhbmQgYW55IG9mIHRoZSBJQWNjZXNzaWJs
ZTIgaW50ZXJmYWNlcy4gCisKKyAgUmVnYXJkaW5nIHN3aXRjaGluZyBiZXR3ZWVuIGFueSBvZiB0
aGUgSUFjY2Vzc2libGUyIGludGVyZmFjZXMsIGFwcGxpY2F0aW9ucyBpbXBsZW1lbnRpbmcKKyAg
SUFjY2Vzc2libGUyIHNob3VsZCBpbXBsZW1lbnQgdGhlIElBY2Nlc3NpYmxlMiBpbnRlcmZhY2Vz
IG9uIGEgc2luZ2xlIG9iamVjdCBzaW5jZSBBVHMKKyAgd2lsbCBiZSB1c2luZyBRdWVyeUludGVy
ZmFjZSB0byBzd2l0Y2ggYmV0d2VlbiB0aGUgSUFjY2Vzc2lsYmUyIGludGVyZmFjZXMuICBJbXBs
ZW1lbnRpbmcKKyAgdGhlIElBY2Nlc3NpYmxlMiBpbnRlcmZhY2VzIG9uIHNlcGFyYXRlIG9iamVj
dHMgd291bGQgcmVxdWlyZSB0aGUgdXNlIG9mIFF1ZXJ5U2VydmljZS4KKyAgVGhlcmUgaXMgb25l
IGV4Y2VwdGlvbiwgSUFjY2Vzc2libGVBcHBsaWNhdGlvbiBjYW4gYmUgaW1wbGVtZW50ZWQgb24g
YSBzZXBhcmF0ZSBvYmplY3Qgc28KKyAgaXRzIGNvbW1vbiBjb2RlIGRvZXNuJ3QgaGF2ZSB0byBi
ZSBpbmNsdWRlZCBpbiBlYWNoIGFjY2Vzc2libGUgb2JqZWN0LiAgQVRzIHNob3VsZCB1c2UKKyAg
UXVlcnlTZXJ2aWNlIHRvIGFjY2VzcyBJQWNjZXNzaWJsZUFwcGxpY2F0aW9uLgorCisgQHNlY3Rp
b24gX2FwcGxpY2F0aW9uSW5mbyBBY2Nlc3MgdG8gSW5mb3JtYXRpb24gYWJvdXQgdGhlIEFwcGxp
Y2F0aW9uCisgIFNlcnZlcnMgaW1wbGVtZW50aW5nIElBY2Nlc3NpYmxlMiBzaG91bGQgcHJvdmlk
ZSBhY2Nlc3MgdG8gdGhlIElBY2Nlc3NpYmxlQXBwbGljYXRpb24gCisgIGludGVyZmFjZSB2aWEg
UXVlcnlTZXJ2aWNlIGZyb20gYW55IG9iamVjdCBzbyB0aGF0IEFUcyBjYW4gZWFzaWx5IGRldGVy
bWluZSBzcGVjaWZpYyAKKyAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFwcGxpY2F0aW9uIHN1Y2gg
YXMgaXRzIG5hbWUgb3IgdmVyc2lvbi4KKworIEBzZWN0aW9uIF9jaGlsZElEcyBDaGlsZCBJRHMK
KyAgVGhlIElBY2Nlc3NpYmxlMiBpbnRlcmZhY2VzIGRvIG5vdCBzdXBwb3J0IGNoaWxkIElEcywg
aS5lLiBzaW1wbGUgY2hpbGQgZWxlbWVudHMuCisgIEZ1bGwgYWNjZXNzaWJsZSBvYmplY3RzIG11
c3QgYmUgY3JlYXRlZCBmb3IgZWFjaCBvYmplY3QgdGhhdCBzdXBwb3J0cyBJQWNjZXNzaWJsZTIu
CisgIFRoZXJlZm9yZSBNU0FBJ3MgZ2V0X2FjY0NoaWxkIHNob3VsZCBuZXZlciByZXR1cm4gYSBj
aGlsZCBJRCAob3RoZXIgdGhhbiBDSElMRElEX1NFTEYpCisgIGZvciBhbiBvYmplY3QgdGhhdCBp
bXBsZW1lbnRzIGFueSBvZiB0aGUgSUFjY2Vzc2libGUyIGludGVyZmFjZXMuCisKKyAgTWljcm9z
b2Z0J3MgVUkgQXV0b21hdGlvbiBzcGVjaWZpY2F0aW9uIGhhcyB0aGUgc2FtZSBsaW1pdGF0aW9u
IGFuZCB0aGlzIHdhcyByZXNvbHZlZAorICBpbiB0aGUgVUkgQXV0b21hdGlvbiBFeHByZXNzIHNw
ZWNpZmljYXRpb24gYnkgYWRkaW5nIElBY2Nlc3NpYmxlRXg6OkdldE9iamVjdEZvckNoaWxkCisg
IGFuZCBJQWNjZXNzaWJsZUV4OjpHZXRJQWNjZXNzaWJsZVBhaXIuICBUaGVzZSBtZXRob2RzIGFs
bG93IG1hcHBpbmcgYmFjayBhbmQgZm9ydGggCisgIGJldHdlZW4gYW4gSUFjY2Vzc2libGVFeCBh
bmQgYW4ge0lBY2Nlc3NpYmxlLCBDaGlsZCBJRH0gcGFpci4gIEEgZnV0dXJlIHZlcnNpb24gb2Yg
CisgIElBY2Nlc3NpYmxlMiBtYXkgaW5jbHVkZSBzaW1pbGFyIG1ldGhvZHMgdG8gbWFwIGJhY2sg
YW5kIGZvcnRoIGJldHdlZW4gYW4gSUFjY2Vzc2libGUyCisgIGFuZCBhbiB7SUFjY2Vzc2libGUs
IENoaWxkIElEfSBwYWlyLgorCisgQHNlY3Rpb24gX3ZhcmlhbnRzIFZBUklBTlRzCisgIFNvbWUg
bWV0aG9kcyByZXR1cm4gYSBWQVJJQU5ULiAgSW1wbGVtZW50ZXJzIG5lZWQgdG8gbWFrZSBzdXJl
IHRoYXQgdGhlIHJldHVybiB0eXBlIGlzIAorICBzcGVjaWZpZWQsIGkuZS4gVlRfSTQsIFZUX0lE
SVNQQVRDSCwgZXRjLiAgVGhlIG1ldGhvZHMgdGhhdCByZXR1cm4gVkFSSUFOVHMgYXJlIAorICBJ
QWNjZXNzaWJsZUh5cGVybGluazo6YW5jaG9yLCBJQWNjZXNzaWJsZUh5cGVybGluazo6YW5jaG9y
VGFyZ2V0LCBJQWNjZXNzaWJsZVZhbHVlOjpjdXJyZW50VmFsdWUsCisgIElBY2Nlc3NpYmxlVmFs
dWU6Om1heGltdW1WYWx1ZSwgSUFjY2Vzc2libGVWYWx1ZTo6bWluaW11bVZhbHVlLgorCisgQHNl
Y3Rpb24gX2lhYWN0aW9uLWlhaHlwZXJsaW5rIElBY2Nlc3NpYmxlSHlwZXJsaW5rIGFzIHN1YmNs
YXNzIG9mIElBY2Nlc3NpYmxlQWN0aW9uCisgIEluIHRoaXMgdmVyc2lvbiBvZiB0aGUgSURMLCBJ
QWNjZXNzaWJsZUh5cGVybGluayBpcyBhIHN1YmNsYXNzIG9mIElBY2Nlc3NpYmxlQWN0aW9uLiAg
CisgIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIHByYWN0aWNhbCBuZWVkIGZvciB0aGF0IGluaGVyaXRh
bmNlIGFuZCBpbiBzb21lIGNhc2VzLCBzdWNoIGFzCisgIGFuIGltYWdlIG1hcCBvZiBzbWFydCB0
YWdzLCBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgYmVjYXVzZSBzdWNoIGFuIGltYWdlIG1hcCBkb2Vz
bid0IAorICBoYXZlIGFjdGlvbmFibGUgb2JqZWN0czsgaXQncyB0aGUgc2Vjb25kYXJ5IHNtYXJ0
IHRhZ3MgdGhhdCBhcmUgYWN0aW9uYWJsZS4gIEFzIGEgCisgIHJlc3VsdCwgaW1wbGVtZW50YXRp
b25zIHNob3VsZCBub3QgcmVseSBvbiB0aGUgaW5oZXJpdGFuY2UgYXMgaXQgbWF5IGJlIHJlbW92
ZWQgaW4gCisgIGEgbGF0ZXIgdmVyc2lvbiBvZiB0aGUgSURMLgorCisgQHNlY3Rpb24gX3RyYWRl
bWFyayBUcmFkZW1hcmsgQXR0cmlidXRpb24KKyAgVGhlIG5hbWVzIG9mIGFjdHVhbCBjb21wYW5p
ZXMgYW5kIHByb2R1Y3RzIG1lbnRpb25lZCBoZXJlaW4gbWF5IGJlIHRoZSB0cmFkZW1hcmtzIG9m
CisgIHRoZWlyIHJlc3BlY3RpdmUgb3duZXJzLiAgSW4gcGFydGljdWxhciwgQWN0aXZlIEFjY2Vz
c2liaWxpdHksIE1pY3Jvc29mdCwgTVNETiwgYW5kIFdpbjMyCisgIGFyZSB0cmFkZW1hcmtzIG9m
IHRoZSBNaWNyb3NvZnQgZ3JvdXAgb2YgY29tcGFuaWVzIGluIHRoZSBVLlMuQS4gYW5kL29yIG90
aGVyIGNvdW50cmllcy4KKworKiovCisKK2ltcG9ydCAib2JqaWRsLmlkbCI7CitpbXBvcnQgIm9h
aWRsLmlkbCI7CitpbXBvcnQgIm9sZWFjYy5pZGwiOworaW1wb3J0ICJBY2Nlc3NpYmxlUmVsYXRp
b24uaWRsIjsKK2ltcG9ydCAiQWNjZXNzaWJsZVN0YXRlcy5pZGwiOworaW1wb3J0ICJJQTJDb21t
b25UeXBlcy5pZGwiOworCisvKiogQSBzdHJ1Y3R1cmUgZGVmaW5pbmcgdGhlIGxvY2FsZSBvZiBh
biBhY2Nlc3NpYmxlIG9iamVjdC4KKyAKK0lBY2Nlc3NpYmxlMjo6bG9jYWxlIHJldHVybnMgdGhp
cyBzdHJ1Y3QuCisqLwordHlwZWRlZiBzdHJ1Y3QgSUEyTG9jYWxlIHsKKyAgQlNUUiBsYW5ndWFn
ZTsgLy8vPCBJU08gNjM5LTEgQWxwaGEtMiB0d28gY2hhcmFjdGVyIGxhbmd1YWdlIGNvZGUKKyAg
QlNUUiBjb3VudHJ5OyAgLy8vPCBJU08gMzE2Ni0xIEFscGhhLTIgdHdvIGNoYXJhY3RlciBjb3Vu
dHJ5IGNvZGUKKyAgQlNUUiB2YXJpYW50OyAgLy8vPCBBcHBsaWNhdGlvbiBzcGVjaWZpYyB2YXJp
YW50IG9mIHRoZSBsb2NhbGUKK30gSUEyTG9jYWxlOworCisvKiogQGJyaWVmIFRoaXMgaW50ZXJm
YWNlIGV4cG9zZXMgdGhlIHByaW1hcnkgc2V0IG9mIGluZm9ybWF0aW9uIGFib3V0IGFuCisgSUFj
Y2Vzc2libGUyIGVuYWJsZWQgYWNjZXNzaWJsZSBvYmplY3QuCisKKyBUaGlzIGludGVyZmFjZSBt
dXN0IGFsd2F5cyBiZSBwcm92aWRlZCBmb3Igb2JqZWN0cyB0aGF0IHN1cHBvcnQgc29tZQorIHBv
cnRpb24gb2YgdGhlIGNvbGxlY3Rpb24gb2YgdGhlICVJQWNjZXNzaWJsZTIgaW50ZXJmYWNlcy4K
KworIFBsZWFzZSByZWZlciB0byBAcmVmIF9jaGFuZ2luZ0ludGVyZmFjZXMgIkNoYW5naW5nIGJl
dHdlZW4gQWNjZXNzaWJsZSBJbnRlcmZhY2VzIgorIGZvciBzcGVjaWFsIGNvbnNpZGVyYXRpb25z
IHJlbGF0ZWQgdG8gdXNlIG9mIHRoZSBNU0FBIElBY2Nlc3NpYmxlIGludGVyZmFjZSBhbmQgCisg
dGhlIHNldCBvZiAlSUFjY2Vzc2libGUyIGludGVyZmFjZXMuCisgKi8KK1tvYmplY3QsIHV1aWQo
RTg5RjcyNkUtQzRGNC00YzE5LUJCMTktQjY0N0Q3RkE4NDc4KV0KK2ludGVyZmFjZSBJQWNjZXNz
aWJsZTIgOiBJQWNjZXNzaWJsZQoreworCisgIC8qKiBAYnJpZWYgUmV0dXJucyB0aGUgbnVtYmVy
IG9mIGFjY2Vzc2libGUgcmVsYXRpb25zIGZvciB0aGlzIG9iamVjdC4KKyAgIEBwYXJhbSBbb3V0
XSBuUmVsYXRpb25zCisgICBAcmV0dmFsIFNfT0sKKyAgKi8KKyAgW3Byb3BnZXRdIEhSRVNVTFQg
blJlbGF0aW9ucworICAgICgKKyAgICAgW291dCwgcmV0dmFsXSBsb25nICpuUmVsYXRpb25zCisg
ICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMgb25lIGFjY2Vzc2libGUgcmVsYXRpb24gZm9y
IHRoaXMgb2JqZWN0LgorICAgQHBhcmFtIFtpbl0gcmVsYXRpb25JbmRleAorICAgICAwIGJhc2Vk
CisgICBAcGFyYW0gW291dF0gcmVsYXRpb24KKyAgIEByZXR2YWwgU19PSworICAgQHJldHZhbCBF
X0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFzc2VkCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxU
IHJlbGF0aW9uCisgICAgKAorICAgICBbaW5dIGxvbmcgcmVsYXRpb25JbmRleCwKKyAgICAgW291
dCwgcmV0dmFsXSBJQWNjZXNzaWJsZVJlbGF0aW9uICoqcmVsYXRpb24KKyAgICApOworCisgIC8q
KiBAYnJpZWYgUmV0dXJucyBtdWx0aXBsZSBhY2Nlc3NpYmxlIHJlbGF0aW9ucyBmb3IgdGhpcyBv
YmplY3QuCisgICBAcGFyYW0gW2luXSBtYXhSZWxhdGlvbnMKKyAgICAgbWF4aW11bSBzaXplIG9m
IHRoZSBhcnJheSBhbGxvY2F0ZWQgYnkgdGhlIGNsaWVudAorICAgQHBhcmFtIFtvdXRdIHJlbGF0
aW9ucworICAgIFRoZSBhcnJheSBvZiBhY2Nlc3NpYmxlIHJlbGF0aW9uIG9iamVjdHMuICBOb3Rl
IHRoYXQgdGhpcyBhcnJheSBpcyB0byBiZQorICAgIGFsbG9jYXRlZCBieSB0aGUgY2xpZW50IGFu
ZCBmcmVlZCB3aGVuIG5vIGxvbmdlciBuZWVkZWQuICBSZWZlciB0byBAcmVmIAorICAgIF9hcnJh
eUNvbnNpZGVyYXRpb24gIlNwZWNpYWwgQ29uc2lkZXJhdGlvbiB3aGVuIHVzaW5nIEFycmF5cyIg
Zm9yIG1vcmUgZGV0YWlscy4KKyAgIEBwYXJhbSBbb3V0XSBuUmVsYXRpb25zIAorICAgIGFjdHVh
bCBudW1iZXIgb2YgcmVsYXRpb25zIGluIHRoZSByZXR1cm5lZCBhcnJheSAobm90IG1vcmUgdGhh
biBtYXhSZWxhdGlvbnMpCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxTRSBpZiB0
aGVyZSBhcmUgbm8gcmVsYXRpb25zLCBuUmVsYXRpb25zIGlzIHNldCB0byAwCisgICBAbm90ZSBB
cyBhIHBlcmZvcm1hbnQgYWx0ZXJuYXRpdmUsIGNsaWVudCBjb2RlIHNob3VsZCBjb25zaWRlciB1
c2luZyBJQWNjZXNzaWJsZTJfMjo6cmVsYXRpb25UYXJnZXRzT2ZUeXBlLgorICAqLworICBbcHJv
cGdldF0gSFJFU1VMVCByZWxhdGlvbnMKKyAgICAoCisgICAgIFtpbl0gbG9uZyBtYXhSZWxhdGlv
bnMsIAorICAgICBbb3V0LCBzaXplX2lzKG1heFJlbGF0aW9ucyksIGxlbmd0aF9pcygqblJlbGF0
aW9ucyldCisgICAgICAgSUFjY2Vzc2libGVSZWxhdGlvbiAqKnJlbGF0aW9ucywgCisgICAgIFtv
dXQsIHJldHZhbF0gbG9uZyAqblJlbGF0aW9ucyAKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0
dXJucyB0aGUgcm9sZSBvZiBhbiAlSUFjY2Vzc2libGUyIG9iamVjdC4KKyAgIEBwYXJhbSBbb3V0
XSByb2xlCisgICAgVGhlIHJvbGUgb2YgYW4gJUlBY2Nlc3NpYmxlMiBvYmplY3QuCisgICBAcmV0
dmFsIFNfT0sKKyAgIEBub3RlIAorICAgQGxpIEZvciBjb252ZW5pZW5jZSBNU0FBIHJvbGVzIGFy
ZSBhbHNvIHBhc3NlZCB0aHJvdWdoIHRoaXMgbWV0aG9kIHNvIHRoZQorICAgIEFUIGRvZXNuJ3Qg
aGF2ZSB0byBhbHNvIGZldGNoIHJvbGVzIHRocm91Z2ggTVNBQSdzIGdldF9hY2NSb2xlLgorICAg
QGxpICVJQWNjZXNzaWJsZTIgcm9sZXMgc2hvdWxkIG5vdCBiZSBwYXNzZWQgdGhyb3VnaCBNU0FB
J3MgZ2V0X2FjY1JvbGUuCisgICBAbGkgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24gSUFjY2Vz
c2libGUyIGVuYWJsZWQgQVRzLCBJQWNjZXNzaWJsZTIgCisgICAgYXBwbGljYXRpb25zIHNob3Vs
ZCBhbHNvIGFkZCBzdXBwb3J0IHRvIGdldF9hY2NSb2xlIHRvIHJldHVybiB0aGUgY2xvc2VzdCAK
KyAgICBNU0FBIHJvbGUgb3IgUk9MRV9TWVNURU1fQ0xJRU5UICh0aGUgTVNBQSBkZWZpbmVkIGRl
ZmF1bHQgcm9sZSkgaWYgdGhlcmUgCisgICAgaXMgbm90IGEgZ29vZCBtYXRjaC4gIAorICAgQGxp
IFRoaXMgbWV0aG9kIGlzIG1pc3NpbmcgYSBbcHJvcGdldF0gcHJlZml4IGluIHRoZSBJREwuICBU
aGUgcmVzdWx0IGlzIHRoZQorICAgIG1ldGhvZCBpcyBuYW1lZCByb2xlIGluIGdlbmVyYXRlZCBD
KysgY29kZSBpbnN0ZWFkIG9mIGdldF9yb2xlLgorICAqLworICBIUkVTVUxUIHJvbGUKKyAgICAo
CisgICAgIFtvdXQsIHJldHZhbF0gbG9uZyAqcm9sZQorICAgICk7CisKKyAgLyoqIEBicmllZiBN
YWtlcyBhbiBvYmplY3QgdmlzaWJsZSBvbiB0aGUgc2NyZWVuLgorICAgQHBhcmFtIFtpbl0gc2Ny
b2xsVHlwZQorICAgIERlZmluZXMgd2hlcmUgdGhlIG9iamVjdCBzaG91bGQgYmUgcGxhY2VkIG9u
IHRoZSBzY3JlZW4uCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlm
IGJhZCBbaW5dIHBhc3NlZAorICAqLworICBIUkVTVUxUIHNjcm9sbFRvCisgICAgKAorICAgICBb
aW5dIGVudW0gSUEyU2Nyb2xsVHlwZSBzY3JvbGxUeXBlIAorICAgICk7CisKKyAgLyoqIEBicmll
ZiBNb3ZlcyB0aGUgdG9wIGxlZnQgb2YgYW4gb2JqZWN0IHRvIGEgc3BlY2lmaWVkIGxvY2F0aW9u
LgorCisgICBAcGFyYW0gW2luXSBjb29yZGluYXRlVHlwZQorICAgIFNwZWNpZmllcyB3aGV0aGVy
IHRoZSBjb29yZGluYXRlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIHNjcmVlbiBvciB0aGUgcGFyZW50
IG9iamVjdC4KKyAgIEBwYXJhbSBbaW5dIHgKKyAgICBEZWZpbmVzIHRoZSB4IGNvb3JkaW5hdGUu
CisgICBAcGFyYW0gW2luXSB5CisgICAgRGVmaW5lcyB0aGUgeSBjb29yZGluYXRlLgorICAgQHJl
dHZhbCBTX09LCisgICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBwYXNzZWQKKyAg
Ki8KKyAgSFJFU1VMVCBzY3JvbGxUb1BvaW50CisgICAgKAorICAgICBbaW5dIGVudW0gSUEyQ29v
cmRpbmF0ZVR5cGUgY29vcmRpbmF0ZVR5cGUsCisgICAgIFtpbl0gbG9uZyB4LAorICAgICBbaW5d
IGxvbmcgeSAKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJucyBncm91cGluZyBpbmZvcm1h
dGlvbi4KKyAgIAorICAgVXNlZCBmb3IgdHJlZSBpdGVtcywgbGlzdCBpdGVtcywgdGFiIHBhbmVs
IGxhYmVscywgcmFkaW8gYnV0dG9ucywgZXRjLgorICAgQWxzbyB1c2VkIGZvciBjb2xsZWN0aW9u
cyBvZiBub24tdGV4dCBvYmplY3RzLgorCisgICBAcGFyYW0gW291dF0gZ3JvdXBMZXZlbAorICAg
IDEgYmFzZWQsIDAgaW5kaWNhdGVzIHRoYXQgdGhpcyB2YWx1ZSBpcyBub3QgYXBwbGljYWJsZQor
ICAgQHBhcmFtIFtvdXRdIHNpbWlsYXJJdGVtc0luR3JvdXAKKyAgICAxIGJhc2VkLCAwIGluZGlj
YXRlcyB0aGF0IHRoaXMgdmFsdWUgaXMgbm90IGFwcGxpY2FibGUKKyAgIEBwYXJhbSBbb3V0XSBw
b3NpdGlvbkluR3JvdXAKKyAgICAxIGJhc2VkLCAwIGluZGljYXRlcyB0aGF0IHRoaXMgdmFsdWUg
aXMgbm90IGFwcGxpY2FibGUuIFRoaXMgaXMgYW4gaW5kZXgKKyAgICBpbnRvIHRoZSBvYmplY3Rz
IGluIHRoZSBjdXJyZW50IGdyb3VwLCBub3QgYW4gaW5kZXggaW50byBhbGwgdGhlIG9iamVjdHMK
KyAgICBhdCB0aGUgc2FtZSBncm91cCBsZXZlbC4KKyAgIEByZXR2YWwgU19PSyBpZiBhdCBsZWFz
dCBvbmUgdmFsdWUgaXMgdmFsaWQKKyAgIEByZXR2YWwgU19GQUxTRSBpZiBubyB2YWx1ZXMgYXJl
IHZhbGlkLCBbb3V0XSB2YWx1ZXMgYXJlIDBzCisgICBAbm90ZSBUaGlzIG1ldGhvZCBpcyBtZWFu
dCB0byBkZXNjcmliZSB0aGUgbmF0dXJlIG9mIGFuIG9iamVjdCdzIGNvbnRhaW5tZW50CisgICAg
c3RydWN0dXJlLiAgSXQncyBleHBvc2VkIGJ5IHRyZWVzLCB0cmVlIGdyaWRzLCBuZXN0ZWQgbGlz
dHMsIG5lc3RlZCBtZW51cywKKyAgICBidXQgbm90IGhlYWRpbmdzLCB3aGljaCB1c2VzIHRoZSBs
ZXZlbCBvYmplY3QgYXR0cmlidXRlLiAgSXQgaXMgYWxzbyBleHBvc2VkCisgICAgYnkgcmFkaW8g
YnV0dG9ucyAod2l0aCBncm91cExldmVsID09IDApLgorICAgQG5vdGUgVGhpcyBpcyBub3JtYWxs
eSBub3QgaW1wbGVtZW50ZWQgb24gYSBjb21ibyBib3ggdG8gZGVzY3JpYmUgdGhlIG5hdHVyZQor
ICAgIG9mIGl0cyBjb250ZW50cy4gIE5vcm1hbGx5IGFuIEFUIHdpbGwgZ2V0IHRoYXQgaW5mb3Jt
YXRpb24gZnJvbSBpdHMgY2hpbGQgbGlzdCAKKyAgICBvYmplY3QuICBIb3dldmVyLCBpbiBzb21l
IGNhc2VzIHdoZW4gbm9uLWVkaXQgY29tYm8gYm94ZXMgYXJlIG5vdCBhYmxlIHRvIGJlIHN0cnVj
dHVyZWQKKyAgICBzdWNoIHRoYXQgdGhlIGxpc3QgaXMgYSBjaGlsZCBvZiB0aGUgY29tYm8gYm94
LCB0aGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBvbgorICAgIHRoZSBjb21ibyBib3ggaXRzZWxm
LiBBVHMgY2FuIHVzZSB0aGlzIGludGVyZmFjZSBpZiBhIGNoaWxkIGxpc3QgaXMgbm90IGZvdW5k
LgorICAqLworICBbcHJvcGdldF0gSFJFU1VMVCBncm91cFBvc2l0aW9uCisgICAgKAorICAgICBb
b3V0XSBsb25nICpncm91cExldmVsLAorICAgICBbb3V0XSBsb25nICpzaW1pbGFySXRlbXNJbkdy
b3VwLAorICAgICBbb3V0LCByZXR2YWxdIGxvbmcgKnBvc2l0aW9uSW5Hcm91cCAKKyAgICApOwor
CisgIC8qKiBAYnJpZWYgUmV0dXJucyB0aGUgYml0IHN0cmlwIGNvbnRhaW5pbmcgYW55IElBY2Nl
c3NpYmxlMiBzdGF0ZXMuCisgIAorICAgVGhlIElBY2Nlc3NpYmxlMiBzdGF0ZXMgYXJlIGluIGFk
ZGl0aW9uIHRvIHRoZSBNU0FBIHN0YXRlcyBhbmQgYXJlIGRlZmluZWQgaW4KKyAgIHRoZSBJQTJT
dGF0ZXMgZW51bS4KKworICAgQHBhcmFtIFtvdXRdIHN0YXRlcworICAgQHJldHZhbCBTX09LCisg
ICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIHN0YXRlcworICAgICgKKyAgICAgW291dCwgcmV0dmFs
XSBBY2Nlc3NpYmxlU3RhdGVzICpzdGF0ZXMKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJu
cyB0aGUgZXh0ZW5kZWQgcm9sZS4KKyAgIAorICAgQW4gZXh0ZW5kZWQgcm9sZSBpcyBhIHJvbGUg
d2hpY2ggaXMgZHluYW1pY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KKyAgIEl0
IGlzIG5vdCBwcmVkZWZpbmVkIGJ5IHRoZSAlSUFjY2Vzc2libGUyIHNwZWNpZmljYXRpb24uCisg
ICAKKyAgIEBwYXJhbSBbb3V0XSBleHRlbmRlZFJvbGUKKyAgIEByZXR2YWwgU19PSworICAgQHJl
dHZhbCBTX0ZBTFNFIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmV0dXJuLCBbb3V0XSB2YWx1ZSBp
cyBOVUxMCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIGV4dGVuZGVkUm9sZQorICAgICgKKyAg
ICAgW291dCwgcmV0dmFsXSBCU1RSICpleHRlbmRlZFJvbGUKKyAgICApOworCisgIC8qKiBAYnJp
ZWYgUmV0dXJucyB0aGUgbG9jYWxpemVkIGV4dGVuZGVkIHJvbGUuCisgICBAcGFyYW0gW291dF0g
bG9jYWxpemVkRXh0ZW5kZWRSb2xlCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxT
RSBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIHJldHVybiwgW291dF0gdmFsdWUgaXMgTlVMTAorICAq
LworICBbcHJvcGdldF0gSFJFU1VMVCBsb2NhbGl6ZWRFeHRlbmRlZFJvbGUKKyAgICAoCisgICAg
IFtvdXQsIHJldHZhbF0gQlNUUiAqbG9jYWxpemVkRXh0ZW5kZWRSb2xlCisgICAgKTsKKworICAv
KiogQGJyaWVmIFJldHVybnMgdGhlIG51bWJlciBvZiBleHRlbmRlZCBzdGF0ZXMuCisgICBAcGFy
YW0gW291dF0gbkV4dGVuZGVkU3RhdGVzCisgICBAcmV0dmFsIFNfT0sKKyAgKi8KKyAgW3Byb3Bn
ZXRdIEhSRVNVTFQgbkV4dGVuZGVkU3RhdGVzCisgICAgKAorICAgICBbb3V0LCByZXR2YWxdIGxv
bmcgKm5FeHRlbmRlZFN0YXRlcworICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSBl
eHRlbmRlZCBzdGF0ZXMgKGFycmF5IG9mIHN0cmluZ3MpLgorCisgICBBbiBleHRlbmRlZCBzdGF0
ZSBpcyBhIHN0YXRlIHdoaWNoIGlzIGR5bmFtaWNhbGx5IGdlbmVyYXRlZCBieSB0aGUgYXBwbGlj
YXRpb24uCisgICBJdCBpcyBub3QgcHJlZGVmaW5lZCBieSB0aGUgJUlBY2Nlc3NpYmxlMiBzcGVj
aWZpY2F0aW9uLgorCisgICBAcGFyYW0gW2luXSBtYXhFeHRlbmRlZFN0YXRlcworICAgIFRoaXMg
cGFyYW1ldGVyIGlzIGlnbm9yZWQuIFJlZmVyIHRvIEByZWYgX2FycmF5Q29uc2lkZXJhdGlvbiAK
KyAgICAiU3BlY2lhbCBDb25zaWRlcmF0aW9uIHdoZW4gdXNpbmcgQXJyYXlzIiBmb3IgbW9yZSBk
ZXRhaWxzLgorICAgQHBhcmFtIFtvdXRdIGV4dGVuZGVkU3RhdGVzCisgICAgVGhpcyBhcnJheSBp
cyBhbGxvY2F0ZWQgYnkgdGhlIHNlcnZlci4gIFRoZSBjbGllbnQgbXVzdCBmcmVlIGl0IHdpdGgg
Q29UYXNrTWVtRnJlZS4KKyAgIEBwYXJhbSBbb3V0XSBuRXh0ZW5kZWRTdGF0ZXMKKyAgICBUaGUg
bnVtYmVyIG9mIGV4dGVuZGVkIHN0YXRlcyByZXR1cm5lZDsgdGhlIHNpemUgb2YgdGhlIHJldHVy
bmVkIGFycmF5LgorICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFsIFNfRkFMU0UgaWYgdGhlcmUg
YXJlIG5vIHN0YXRlcywgW291dF0gdmFsdWVzIGFyZSBOVUxMIGFuZCAwIHJlc3BlY3RpdmVseQor
ICAqLworICBbcHJvcGdldF0gSFJFU1VMVCBleHRlbmRlZFN0YXRlcworICAgICgKKyAgICAgW2lu
XSBsb25nIG1heEV4dGVuZGVkU3RhdGVzLAorICAgICBbb3V0LCBzaXplX2lzKCxtYXhFeHRlbmRl
ZFN0YXRlcyksIGxlbmd0aF9pcygsKm5FeHRlbmRlZFN0YXRlcyldIEJTVFIgKipleHRlbmRlZFN0
YXRlcywKKyAgICAgW291dCwgcmV0dmFsXSBsb25nICpuRXh0ZW5kZWRTdGF0ZXMKKyAgICApOwor
CisgIC8qKiBAYnJpZWYgUmV0dXJucyB0aGUgbG9jYWxpemVkIGV4dGVuZGVkIHN0YXRlcyAoYXJy
YXkgb2Ygc3RyaW5ncykuCisKKyAgIEBwYXJhbSBbaW5dIG1heExvY2FsaXplZEV4dGVuZGVkU3Rh
dGVzCisgICAgVGhpcyBwYXJhbWV0ZXIgaXMgaWdub3JlZC4gUmVmZXIgdG8gQHJlZiBfYXJyYXlD
b25zaWRlcmF0aW9uIAorICAgICJTcGVjaWFsIENvbnNpZGVyYXRpb24gd2hlbiB1c2luZyBBcnJh
eXMiIGZvciBtb3JlIGRldGFpbHMuCisgICBAcGFyYW0gW291dF0gbG9jYWxpemVkRXh0ZW5kZWRT
dGF0ZXMKKyAgICBUaGlzIGFycmF5IGlzIGFsbG9jYXRlZCBieSB0aGUgc2VydmVyLiAgVGhlIGNs
aWVudCBtdXN0IGZyZWUgaXQgd2l0aCBDb1Rhc2tNZW1GcmVlLiAKKyAgIEBwYXJhbSBbb3V0XSBu
TG9jYWxpemVkRXh0ZW5kZWRTdGF0ZXMKKyAgICBUaGUgbnVtYmVyIG9mIGxvY2FsaXplZCBleHRl
bmRlZCBzdGF0ZXMgcmV0dXJuZWQ7IHRoZSBzaXplIG9mIHRoZSByZXR1cm5lZCBhcnJheS4KKyAg
IEByZXR2YWwgU19PSworICAgQHJldHZhbCBTX0ZBTFNFIGlmIHRoZXJlIGFyZSBubyBzdGF0ZXMs
IFtvdXRdIHZhbHVlcyBhcmUgTlVMTCBhbmQgMCByZXNwZWN0aXZlbHkKKyAgKi8KKyAgW3Byb3Bn
ZXRdIEhSRVNVTFQgbG9jYWxpemVkRXh0ZW5kZWRTdGF0ZXMKKyAgICAoCisgICAgIFtpbl0gbG9u
ZyBtYXhMb2NhbGl6ZWRFeHRlbmRlZFN0YXRlcywKKyAgICAgW291dCwgc2l6ZV9pcygsbWF4TG9j
YWxpemVkRXh0ZW5kZWRTdGF0ZXMpLCBsZW5ndGhfaXMoLCpuTG9jYWxpemVkRXh0ZW5kZWRTdGF0
ZXMpXSBCU1RSICoqbG9jYWxpemVkRXh0ZW5kZWRTdGF0ZXMsCisgICAgIFtvdXQsIHJldHZhbF0g
bG9uZyAqbkxvY2FsaXplZEV4dGVuZGVkU3RhdGVzCisgICAgKTsKKworICAvKiogQGJyaWVmIFJl
dHVybnMgdGhlIHVuaXF1ZSBJRC4KKyAgIAorICAgVGhlIHVuaXF1ZUlEIGlzIGFuIGlkZW50aWZp
ZXIgZm9yIHRoaXMgb2JqZWN0LCBpcyB1bmlxdWUgd2l0aGluIHRoZQorICAgY3VycmVudCB3aW5k
b3csIGFuZCByZW1haW5zIHRoZSBzYW1lIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIGFjY2Vzc2li
bGUKKyAgIG9iamVjdC4gCisgICAKKyAgIFRoZSB1bmlxdWVJRCBpcyBub3QgcmVsYXRlZCB0bzoK
KyAgIC0gdGhlIE1TQUEgb2JqZWN0SUQgd2hpY2ggaXMgdXNlZCBieSB0aGUgc2VydmVyIHRvIGRp
c2FtYmlndWF0ZSBiZXR3ZWVuCisgICBJQWNjZXNzaWJsZXMgcGVyIEhXTkQgb3IKKyAgIC0gdGhl
IE1TQUEgY2hpbGRJRCB3aGljaCBpcyB1c2VkIHRvIGRpc2FtYmlndWF0ZSBiZXR3ZWVuIGNoaWxk
cmVuIGJlaW5nCisgICBtYW5hZ2VkIGJ5IGFuIElBY2Nlc3NpYmxlLgorCisgICBUaGlzIHZhbHVl
IGlzIHByb3ZpZGVkIHNvIHRoZSBBVCBjYW4gaGF2ZSBhY2Nlc3MgdG8gYSB1bmlxdWUgcnVudGlt
ZSBwZXJzaXN0ZW50IAorICAgaWRlbnRpZmllciBldmVuIHdoZW4gbm90IGhhbmRsaW5nIGFuIGV2
ZW50IGZvciB0aGUgb2JqZWN0LgorICAgCisgICBBbiBleGFtcGxlIG9mIHdoZW4gdGhpcyB2YWx1
ZSBpcyB1c2VmdWwgaXMgaWYgdGhlIEFUIHdhbnRzIHRvIGJ1aWxkIGEgY2FjaGUuIAorICAgVGhl
IEFUIGNvdWxkIGNhY2hlIHRoZSB1bmlxdWVJRHMgaW4gYWRkaXRpb24gdG8gb3RoZXIgZGF0YSBi
ZWluZyBjYWNoZWQuIAorICAgV2hlbiBhbiBldmVudCBpcyBmaXJlZCB0aGUgQVQgY291bGQgbWFw
IHRoZSB1bmlxdWVJRCB0byBpdHMgaW50ZXJuYWwgbW9kZWwuCisgICBUaHVzLCBpZiB0aGVyZSdz
IGEgUkVPUkRFUi9TSE9XL0hJREUgZXZlbnQgdGhlIEFUIGtub3dzIHdoaWNoIHBhcnQgb2YgdGhl
IAorICAgaW50ZXJuYWwgc3RydWN0dXJlIGhhcyBiZWVuIGludmFsaWRhdGVkIGFuZCBjYW4gcmVm
ZXRjaCBqdXN0IHRoYXQgcGFydC4KKworICAgVGhpcyB2YWx1ZSBjYW4gYWxzbyBiZSB1c2VkIGJ5
IGFuIEFUIHRvIGRldGVybWluZSB3aGVuIHRoZSBjdXJyZW50IGNvbnRyb2wKKyAgIGhhcyBjaGFu
Z2VkLiBJZiB0aGUgcm9sZSBpcyB0aGUgc2FtZSBmb3IgdHdvIGNvbnRyb2xzIHRoYXQgYXJlIGFk
amFjZW50IGluIAorICAgdGhlIHRhYiBvcmRlciwgdGhpcyBjYW4gYmUgdXNlZCB0byBkZXRlY3Qg
dGhlIG5ldyBjb250cm9sLgorCisgICBBbm90aGVyIHVzZSBvZiB0aGlzIHZhbHVlIGJ5IGFuIEFU
IGlzIHRvIGlkZW50aWZ5IHdoZW4gYSBncm91cGluZyBvYmplY3QgaGFzIAorICAgY2hhbmdlZCwg
ZS5nLiB3aGVuIG1vdmluZyBmcm9tIGEgcmFkaW8gYnV0dG9uIGluIG9uZSBncm91cCB0byBhIHJh
ZGlvIGJ1dHRvbiBpbiBhIAorICAgZGlmZmVyZW50IGdyb3VwLgorCisgICBPbmUgbWVhbnMgb2Yg
aW1wbGVtZW50aW5nIHRoaXMgd291bGQgYmUgdG8gY3JlYXRlIGEgZmFjdG9yeSB3aXRoIGEgMzIg
Yml0IG51bWJlciAKKyAgIGdlbmVyYXRvciBhbmQgYSByZXVzZSBwb29sLiAgVGhlIG51bWJlciBn
ZW5lcmF0b3Igd291bGQgZW1pdCBudW1iZXJzIHN0YXJ0aW5nIAorICAgYXQgMS4gIEVhY2ggdGlt
ZSBhbiBvYmplY3QncyBsaWZlIGN5Y2xlIGVuZGVkLCBpdHMgbnVtYmVyIHdvdWxkIGJlIHNhdmVk
IGludG8gYSAKKyAgIHJldXNlIHBvb2wuICBUaGUgbnVtYmVyIGdlbmVyYXRvciB3b3VsZCBiZSB1
c2VkIHdoZW5ldmVyIHRoZSByZXVzZSBwb29sIHdhcyBlbXB0eS4KKworICAgQW5vdGhlciB3YXkg
dG8gY3JlYXRlIGEgdW5pcXVlIElEIGlzIHRvIGdlbmVyYXRlIGl0IGZyb20gYSBwb2ludGVyIHZh
bHVlLCBlLmcuIGFuCisgICBvYmplY3QncyBhZGRyZXNzLiBUaGF0IHdvdWxkIGJlIHVuaXF1ZSBi
ZWNhdXNlIG5vIHR3byBhY3RpdmUgb2JqZWN0cyBjYW4gdXNlIHRoZQorICAgc2FtZSBhbGxvY2F0
ZWQgbWVtb3J5IHNwYWNlLgorCisgICBAcGFyYW0gW291dF0gdW5pcXVlSUQKKyAgIEByZXR2YWwg
U19PSworICAqLworICBbcHJvcGdldF0gSFJFU1VMVCB1bmlxdWVJRAorICAgICgKKyAgICAgW291
dCwgcmV0dmFsXSBsb25nICp1bmlxdWVJRAorICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5z
IHRoZSB3aW5kb3cgaGFuZGxlIGZvciB0aGUgcGFyZW50IHdpbmRvdyB3aGljaCBjb250YWlucyB0
aGlzIG9iamVjdC4KKworICAgVGhpcyBpcyB0aGUgc2FtZSB3aW5kb3cgaGFuZGxlIHdoaWNoIHdp
bGwgYmUgcGFzc2VkIGZvciBhbnkgZXZlbnRzIHRoYXQgb2NjdXIgb24gdGhlIAorICAgb2JqZWN0
LCBidXQgaXMgY2FjaGVkIGluIHRoZSBhY2Nlc3NpYmxlIG9iamVjdCBmb3IgdXNlIHdoZW4gaXQg
d291bGQgYmUgaGVscGZ1bCB0byAKKyAgIGFjY2VzcyB0aGUgd2luZG93IGhhbmRsZSBpbiBjYXNl
cyB3aGVyZSBhbiBldmVudCBpc24ndCBmaXJlZCBvbiB0aGlzIG9iamVjdC4KKworICAgQSB1c2Ug
Y2FzZSBpcyB3aGVuIGEgc2NyZWVuIHJlYWRlciBpcyBncmFiYmluZyBhbiBlbnRpcmUgd2ViIHBh
Z2Ugb24gYSBwYWdlIGxvYWQuIAorICAgV2l0aG91dCB0aGUgYXZhaWxhYmlsaXR5IG9mIHdpbmRv
d0hhbmRsZSwgdGhlIEFUIHdvdWxkIGhhdmUgdG8gZ2V0IHRoZSB3aW5kb3cgaGFuZGxlCisgICBi
eSB1c2luZyBXaW5kb3dGcm9tQWNjZXNzaWJsZU9iamVjdCBvbiBlYWNoIElBY2Nlc3NpYmxlLCB3
aGljaCBpcyBzbG93IGJlY2F1c2UgaXQncyAKKyAgIGltcGxlbWVudGVkIGJ5IG9sZWFjYy5kbGwg
YXMgYSBsb29wIHdoaWNoIGNyYXdscyB1cCB0aGUgYW5jZXN0b3IgY2hhaW4gYW5kIGxvb2tzIGZv
ciAKKyAgIGEgUk9MRV9XSU5ET1cgb2JqZWN0LCBtYXBwaW5nIHRoYXQgYmFjayB0byBhIHdpbmRv
dyBoYW5kbGUuCisgICAKKyAgIEBwYXJhbSBbb3V0XSB3aW5kb3dIYW5kbGUKKyAgIEByZXR2YWwg
U19PSworICAqLworICBbcHJvcGdldF0gSFJFU1VMVCB3aW5kb3dIYW5kbGUKKyAgICAoCisgICAg
IFtvdXQsIHJldHZhbF0gSFdORCAqd2luZG93SGFuZGxlCisgICAgKTsKKyAKKyAgLyoqIEBicmll
ZiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGlzIG9iamVjdCBpbiBpdHMgcGFyZW50IG9iamVjdC4K
KyAgIEBwYXJhbSBbb3V0XSBpbmRleEluUGFyZW50CisgICAgIDAgYmFzZWQ7IC0xIGluZGljYXRl
cyB0aGVyZSBpcyBubyBwYXJlbnQ7IHRoZSB1cHBlciBib3VuZCBpcyB0aGUgdmFsdWUgCisgICAg
IHJldHVybmVkIGJ5IHRoZSBwYXJlbnQncyBJQWNjZXNzaWJsZTo6Z2V0X2FjY0NoaWxkQ291bnQu
CisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxTRSBpZiBubyBwYXJlbnQsIFtvdXRd
IHZhbHVlIGlzIC0xCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIGluZGV4SW5QYXJlbnQKKyAg
ICAoCisgICAgIFtvdXQsIHJldHZhbF0gbG9uZyAqaW5kZXhJblBhcmVudAorICAgICk7CisKKyAg
LyoqIEBicmllZiBSZXR1cm5zIHRoZSBJQTJMb2NhbGUgb2YgdGhlIGFjY2Vzc2libGUgb2JqZWN0
LiAKKyAgIEBwYXJhbSBbb3V0XSBsb2NhbGUKKyAgIEByZXR2YWwgU19PSworICAqLworICBbcHJv
cGdldF0gSFJFU1VMVCBsb2NhbGUKKyAgICAoCisgICAgIFtvdXQsIHJldHZhbF0gSUEyTG9jYWxl
ICpsb2NhbGUKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJucyB0aGUgYXR0cmlidXRlcyBz
cGVjaWZpYyB0byB0aGlzIG9iamVjdCwgc3VjaCBhcyBhIGNlbGwncyBmb3JtdWxhLgorICAgQHBh
cmFtIFtvdXRdIGF0dHJpYnV0ZXMKKyAgIEByZXR2YWwgU19PSworICAgQHJldHZhbCBTX0ZBTFNF
IHJldHVybmVkIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmV0dXJuLCBbb3V0XSB2YWx1ZSBpcyBO
VUxMCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIGF0dHJpYnV0ZXMKKyAgICAoCisgICAgIFtv
dXQsIHJldHZhbF0gQlNUUiAqYXR0cmlidXRlcworICAgICk7CisKK30KKwpJbmRleDogU291cmNl
L1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlMl8yLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vz
c2libGUyXzIuaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlMl8yLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEyMyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgRmlsZSBOYW1lIChBY2Nlc3NpYmxl
Ml8yLmlkbCkKKyAqIAorICogIElBY2Nlc3NpYmxlMiBJREwgU3BlY2lmaWNhdGlvbiAKKyAqIAor
ICogIENvcHlyaWdodCAoYykgMjAwNywgMjAxMyBMaW51eCBGb3VuZGF0aW9uIAorICogIENvcHly
aWdodCAoYykgMjAwNiBJQk0gQ29ycG9yYXRpb24gCisgKiAgQ29weXJpZ2h0IChjKSAyMDAwLCAy
MDA2IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gCisg
KiAgIAorICogICAKKyAqICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCisgKiAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIAorICogIGFyZSBtZXQ6
IAorICogICAKKyAqICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgCisgKiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgIAorICogICAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIAor
ICogICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyAKKyAqICAgICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIAorICogICAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uIAorICoKKyAqICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgTGludXggRm91bmRhdGlv
biBub3IgdGhlIG5hbWVzIG9mIGl0cyAKKyAqICAgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyAKKyAqICAgICAgZGVyaXZlZCBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIAorICogICAgICBwZXJt
aXNzaW9uLiAKKyAqICAgCisgKiAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIAorICogIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIAorICogIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIAorICogIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIAorICogIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIAorICogIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAKKyAq
ICBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgCisgKiAgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IAorICogIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIAorICogIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiAKKyAqICBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgCisgKiAgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgCisgKiAg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiAg
IAorICogIFRoaXMgQlNEIExpY2Vuc2UgY29uZm9ybXMgdG8gdGhlIE9wZW4gU291cmNlIEluaXRp
YXRpdmUgIlNpbXBsaWZpZWQgCisgKiAgQlNEIExpY2Vuc2UiIGFzIHB1Ymxpc2hlZCBhdDogCisg
KiAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAgCisg
KiAgIAorICogIElBY2Nlc3NpYmxlMiBpcyBhIHRyYWRlbWFyayBvZiB0aGUgTGludXggRm91bmRh
dGlvbi4gVGhlIElBY2Nlc3NpYmxlMiAKKyAqICBtYXJrIG1heSBiZSB1c2VkIGluIGFjY29yZGFu
Y2Ugd2l0aCB0aGUgTGludXggRm91bmRhdGlvbiBUcmFkZW1hcmsgCisgKiAgUG9saWN5IHRvIGlu
ZGljYXRlIGNvbXBsaWFuY2Ugd2l0aCB0aGUgSUFjY2Vzc2libGUyIHNwZWNpZmljYXRpb24uIAor
ICogCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqLyAKKworaW1wb3J0ICJvYmppZGwuaWRsIjsKK2ltcG9ydCAi
b2FpZGwuaWRsIjsKK2ltcG9ydCAib2xlYWNjLmlkbCI7CitpbXBvcnQgIkFjY2Vzc2libGUyLmlk
bCI7CisKKy8qKiBAYnJpZWYgVGhpcyBpbnRlcmZhY2UgZXhwb3NlcyB0aGUgcHJpbWFyeSBzZXQg
b2YgaW5mb3JtYXRpb24gYWJvdXQgYW4KKyBJQWNjZXNzaWJsZTIgZW5hYmxlZCBhY2Nlc3NpYmxl
IG9iamVjdC4KKworIFRoaXMgaW50ZXJmYWNlIG11c3QgYWx3YXlzIGJlIHByb3ZpZGVkIGZvciBv
YmplY3RzIHRoYXQgc3VwcG9ydCBzb21lCisgcG9ydGlvbiBvZiB0aGUgY29sbGVjdGlvbiBvZiB0
aGUgJUlBY2Nlc3NpYmxlMiBpbnRlcmZhY2VzLgorCisgUGxlYXNlIHJlZmVyIHRvIEByZWYgX2No
YW5naW5nSW50ZXJmYWNlcyAiQ2hhbmdpbmcgYmV0d2VlbiBBY2Nlc3NpYmxlIEludGVyZmFjZXMi
CisgZm9yIHNwZWNpYWwgY29uc2lkZXJhdGlvbnMgcmVsYXRlZCB0byB1c2Ugb2YgdGhlIE1TQUEg
SUFjY2Vzc2libGUgaW50ZXJmYWNlIGFuZCAKKyB0aGUgc2V0IG9mICVJQWNjZXNzaWJsZTIgaW50
ZXJmYWNlcy4KKyAqLworW29iamVjdCwgdXVpZCg2Qzk0MzBFOS0yOTlELTRFNkYtQkQwMS1BODJB
MUU4OEQzRkYpXQoraW50ZXJmYWNlIElBY2Nlc3NpYmxlMl8yIDogSUFjY2Vzc2libGUyCit7Cisg
IC8qKiBAYnJpZWYgUmV0dXJucyB0aGUgYXR0cmlidXRlIHZhbHVlIG9mIGEgc3BlY2lmaWVkIGF0
dHJpYnV0ZSBzcGVjaWZpYyB0byB0aGlzIG9iamVjdC4KKyAgIEBwYXJhbSBbaW5dIG5hbWUKKyAg
IEBwYXJhbSBbb3V0XSBhdHRyaWJ1dGUKKyAgIEByZXR2YWwgU19PSworICAgQHJldHZhbCBTX0ZB
TFNFIHJldHVybmVkIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmV0dXJuLCBbb3V0XSB2YWx1ZSBp
cyBOVUxMLgorICAgQHJldHZhbCBFX0lOVkFMSURBUkcgaWYgYmFkIFtpbl0gcGFzc2VkLgorICAg
QG5vdGUgVGhlIG91dHB1dCB2YWx1ZSBpcyBhIFZBUklBTlQuICBUeXBpY2FsbHkgaXQgd2lsbCBi
ZSBhIFZUX0JTVFIsIGJ1dCB0aGVyZQorICAgICBhcmUgc29tZSBjYXNlcyB3aGVyZSBpdCB3aWxs
IGJlIGEgVlRfSTQgb3IgVlRfQk9PTC4gIFJlZmVyIHRvIHRoZSA8YSBocmVmPQorICAgICAiaHR0
cDovL3d3dy5saW51eGZvdW5kYXRpb24ub3JnL2NvbGxhYm9yYXRlL3dvcmtncm91cHMvYWNjZXNz
aWJpbGl0eS9pYWNjZXNzaWJsZTIvb2JqZWN0YXR0cmlidXRlc0lBY2Nlc3NpYmxlMiI+CisgICAg
IE9iamVjdCBBdHRyaWJ1dGVzIHNwZWNpZmljYXRpb248L2E+IGZvciBtb3JlIGluZm9ybWF0aW9u
LgorICAqLworICBbcHJvcGdldF0gSFJFU1VMVCBhdHRyaWJ1dGUKKyAgICAoCisgICAgIFtpbl0g
QlNUUiBuYW1lLAorICAgICBbb3V0LCByZXR2YWxdIFZBUklBTlQgKmF0dHJpYnV0ZQorICAgICk7
CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSBkZWVwZXN0IGh5cGVydGV4dCBhY2Nlc3NpYmxl
IGluIHRoZSBzdWJ0cmVlIG9mIHRoaXMgb2JqZWN0LCBhbmQgdGhlIGNhcmV0IG9mZnNldCB3aXRo
aW4gaXQuCisgICBAcGFyYW0gW291dF0gYWNjZXNzaWJsZQorICAgQHBhcmFtIFtvdXRdIGNhcmV0
T2Zmc2V0CisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxTRSByZXR1cm5lZCBpZiB0
aGVyZSBpcyBubyBjYXJldCBpbiBhbnkgb2YgdGhlIG9iamVjdHMgaW4gdGhlIHN1YnRyZWUsIFtv
dXRdIGFjY2Vzc2libGUgaXMgTlVMTCBhbmQgW291dF0gY2FyZXRPZmZzZXQgaXMgLTEuCisgICov
CisgIFtwcm9wZ2V0XSBIUkVTVUxUIGFjY2Vzc2libGVXaXRoQ2FyZXQKKyAgICAoCisgICAgIFtv
dXRdIElVbmtub3duICoqYWNjZXNzaWJsZSwKKyAgICAgW291dCwgcmV0dmFsXSBsb25nICpjYXJl
dE9mZnNldAorICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIHJlbGF0aW9uIHRhcmdldHMg
Zm9yIGEgc3BlY2lmaWVkIHRhcmdldCB0eXBlLgorICAgQHBhcmFtIFtpbl0gdHlwZQorICAgIFRo
ZSByZXF1ZXN0ZWQgQHJlZiBncnBSZWxhdGlvbnMgInJlbGF0aW9uIHR5cGUiLgorICAgQHBhcmFt
IFtpbl0gbWF4VGFyZ2V0cworICAgIFRoZSBudW1iZXIgb2YgdGFyZ2V0cyByZXF1ZXN0ZWQuICAw
IGluZGljYXRlcyB0aGF0IGFsbCB0YXJnZXRzIHNob3VsZCBiZSByZXR1cm5lZC4KKyAgIEBwYXJh
bSBbb3V0XSB0YXJnZXRzCisgICAgVGhpcyBhcnJheSBpcyBhbGxvY2F0ZWQgYnkgdGhlIHNlcnZl
ci4gIFRoZSBjbGllbnQgbXVzdCBmcmVlIGl0IHdpdGggQ29UYXNrTWVtRnJlZS4KKyAgIEBwYXJh
bSBbb3V0XSBuVGFyZ2V0cworICAgIFRoZSBudW1iZXIgb2YgdGFyZ2V0cyByZXR1cm5lZDsgdGhl
IHNpemUgb2YgdGhlIHJldHVybmVkIGFycmF5LgorICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFs
IFNfRkFMU0UgaWYgdGhlcmUgYXJlIG5vIHRhcmdldHMsIFtvdXRdIHZhbHVlcyBhcmUgTlVMTCBh
bmQgMCByZXNwZWN0aXZlbHkuCisgICBAcmV0dmFsIEVfSU5WQUxJREFSRyBpZiBiYWQgW2luXSBw
YXNzZWQuCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIHJlbGF0aW9uVGFyZ2V0c09mVHlwZQor
ICAgICgKKyAgICAgW2luXSBCU1RSIHR5cGUsCisgICAgIFtpbl0gbG9uZyBtYXhUYXJnZXRzLAor
ICAgICBbb3V0LCBzaXplX2lzKCwqblRhcmdldHMpXSBJVW5rbm93biAqKip0YXJnZXRzLAorICAg
ICBbb3V0LCByZXR2YWxdIGxvbmcgKm5UYXJnZXRzCisgICAgKTsKKworfQorCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVBcHBsaWNhdGlv
bi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3Np
YmxlMi9BY2Nlc3NpYmxlQXBwbGljYXRpb24uaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlQXBwbGljYXRpb24uaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIxIEBACisvKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoK
KyAqICBGaWxlIE5hbWUgKEFjY2Vzc2libGVBcHBsaWNhdGlvbi5pZGwpCisgKiAKKyAqICBJQWNj
ZXNzaWJsZTIgSURMIFNwZWNpZmljYXRpb24gCisgKiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDcs
IDIwMTAgTGludXggRm91bmRhdGlvbiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBv
cmF0aW9uIAorICogIENvcHlyaWdodCAoYykgMjAwMCwgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJ
bmMuIAorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIAorICogICAKKyAqICAgCisgKiAgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0IAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyAKKyAqICBhcmUgbWV0OiAKKyAqICAgCisgKiAgIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
IAorICogICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAorICogICAKKyAqICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSAKKyAqICAgICAgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgCisgKiAgICAgIGRp
c2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyAKKyAq
ICAgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqCisgKiAgIDMuIE5laXRo
ZXIgdGhlIG5hbWUgb2YgdGhlIExpbnV4IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMg
CisgKiAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgCisgKiAgICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiAKKyAqICAgICAgcGVybWlzc2lvbi4gCisgKiAgIAorICogIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAq
ICBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCAKKyAqICBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiAKKyAqICBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSAKKyAqICBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUIEhPTERFUiBPUiAKKyAqICBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIAorICogIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyAKKyAqICBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSAK
KyAqICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gCisgKiAgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIAorICogIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIAorICogIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogICAKKyAqICBUaGlzIEJTRCBMaWNlbnNl
IGNvbmZvcm1zIHRvIHRoZSBPcGVuIFNvdXJjZSBJbml0aWF0aXZlICJTaW1wbGlmaWVkIAorICog
IEJTRCBMaWNlbnNlIiBhcyBwdWJsaXNoZWQgYXQ6IAorICogIGh0dHA6Ly93d3cub3BlbnNvdXJj
ZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwIAorICogICAKKyAqICBJQWNjZXNzaWJsZTIg
aXMgYSB0cmFkZW1hcmsgb2YgdGhlIExpbnV4IEZvdW5kYXRpb24uIFRoZSBJQWNjZXNzaWJsZTIg
CisgKiAgbWFyayBtYXkgYmUgdXNlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIExpbnV4IEZvdW5k
YXRpb24gVHJhZGVtYXJrIAorICogIFBvbGljeSB0byBpbmRpY2F0ZSBjb21wbGlhbmNlIHdpdGgg
dGhlIElBY2Nlc3NpYmxlMiBzcGVjaWZpY2F0aW9uLiAKKyAqIAorICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8g
CisKKworaW1wb3J0ICJvYmppZGwuaWRsIjsKK2ltcG9ydCAib2FpZGwuaWRsIjsKK2ltcG9ydCAi
b2xlYWNjLmlkbCI7CisKKy8qKiBAYnJpZWYgVGhpcyBpbnRlcmZhY2UgZ2l2ZXMgYWNjZXNzIHRv
IHRoZSBhcHBsaWNhdGlvbidzIG5hbWUgYW5kIHZlcnNpb24gaW5mb3JtYXRpb24uCisgICAgICAg
IAorIFRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzIHRoZSBBVCB3aXRoIHRoZSBpbmZvcm1hdGlvbiBp
dCBuZWVkcyB0byBkaWZmZXJlbnRpYXRlIAorIHRoaXMgYXBwbGljYXRpb24gZnJvbSBvdGhlciBh
cHBsaWNhdGlvbnMsIGZyb20gb3RoZXIgdmVyc2lvbnMgb2YgdGhpcyAKKyBhcHBsaWNhdGlvbiwg
b3IgZnJvbSBvdGhlciB2ZXJzaW9ucyBvZiB0aGlzIGFwcGxpY2F0aW9uIHJ1bm5pbmcgb24gZGlm
ZmVyZW50IAorIHZlcnNpb25zIG9mIGFuIGFjY2Vzc2liaWxpdHkgYnJpZGdlIG9yIGFjY2Vzc2li
aWxpdHkgdG9vbGtpdC4KKworIFNlcnZlcnMgaW1wbGVtZW50aW5nIElBY2Nlc3NpYmxlMiBzaG91
bGQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlICVJQWNjZXNzaWJsZUFwcGxpY2F0aW9uIAorIGludGVy
ZmFjZSB2aWEgUXVlcnlTZXJ2aWNlIGZyb20gYW55IG9iamVjdCBzbyB0aGF0IEFUcyBjYW4gZWFz
aWx5IGRldGVybWluZSBzcGVjaWZpYyAKKyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXBwbGljYXRp
b24gc3VjaCBhcyBpdHMgbmFtZSBvciB2ZXJzaW9uLgorKi8KK1tvYmplY3QsIHV1aWQoRDQ5REVE
ODMtNUIyNS00M0Y0LTlCOTUtOTNCNDQ1OTU5NzlFKV0KK2ludGVyZmFjZSBJQWNjZXNzaWJsZUFw
cGxpY2F0aW9uIDogSVVua25vd24KK3sKKyAgCisgIC8qKiBAYnJpZWYgUmV0dXJucyB0aGUgYXBw
bGljYXRpb24gbmFtZS4KKyAgIEBwYXJhbSBbb3V0XSBuYW1lCisgICBAcmV0dmFsIFNfT0sKKyAg
IEByZXR2YWwgU19GQUxTRSBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIHJldHVybiwgW291dF0gdmFs
dWUgaXMgTlVMTAorICAqLworICBbcHJvcGdldF0gSFJFU1VMVCBhcHBOYW1lCisgICAgKAorICAg
ICBbb3V0LCByZXR2YWxdIEJTVFIgKm5hbWUKKyAgICApOworCisgIC8qKiBAYnJpZWYgUmV0dXJu
cyB0aGUgYXBwbGljYXRpb24gdmVyc2lvbi4KKyAgIEBwYXJhbSBbb3V0XSB2ZXJzaW9uCisgICAg
VGhlIHZlcnNpb24gc3RyaW5nIG11c3Qgbm90IGNvbnRhaW4gbGV2ZWxzIHdoZW4gaXQgaXMga25v
dyBiZWZvcmVoYW5kIHRoYXQKKyAgICB0aGlzIGluZm9ybWF0aW9uIHdpbGwgbmV2ZXIgcmVxdWly
ZSBhIGNoYW5nZSBpbiBhIGNsaWVudCdzIGJlaGF2aW9yLgorICAgIEZvciBleGFtcGxlLCB1c2Ug
IjMuNi4wIiByYXRoZXIgdGhhbiAiMy42LjAudjIwMTAwNTEzMTUwMCIuCisgICBAcmV0dmFsIFNf
T0sKKyAgIEByZXR2YWwgU19GQUxTRSBpZiB0aGVyZSBpcyBub3RoaW5nIHRvIHJldHVybiwgW291
dF0gdmFsdWUgaXMgTlVMTAorICAqLworICBbcHJvcGdldF0gSFJFU1VMVCBhcHBWZXJzaW9uCisg
ICAgKAorICAgICBbb3V0LCByZXR2YWxdIEJTVFIgKnZlcnNpb24KKyAgICApOworCisgIC8qKiBA
YnJpZWYgUmV0dXJucyB0aGUgdG9vbGtpdC9icmlkZ2UgbmFtZS4KKyAgIEBwYXJhbSBbb3V0XSBu
YW1lCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgU19GQUxTRSBpZiB0aGVyZSBpcyBub3Ro
aW5nIHRvIHJldHVybiwgW291dF0gdmFsdWUgaXMgTlVMTAorICAqLworICBbcHJvcGdldF0gSFJF
U1VMVCB0b29sa2l0TmFtZQorICAgICgKKyAgICAgW291dCwgcmV0dmFsXSBCU1RSICpuYW1lCisg
ICAgKTsKKworICAvKiogQGJyaWVmIFJldHVybnMgdGhlIHRvb2xraXQvYnJpZGdlIHZlcnNpb24u
CisgICBAcGFyYW0gW291dF0gdmVyc2lvbgorICAgIFRoZSB2ZXJzaW9uIHN0cmluZyBtdXN0IG5v
dCBjb250YWluIGxldmVscyB3aGVuIGl0IGlzIGtub3cgYmVmb3JlaGFuZCB0aGF0CisgICAgdGhp
cyBpbmZvcm1hdGlvbiB3aWxsIG5ldmVyIHJlcXVpcmUgYSBjaGFuZ2UgaW4gYSBjbGllbnQncyBi
ZWhhdmlvci4KKyAgICBGb3IgZXhhbXBsZSwgdXNlICIzLjYuMCIgcmF0aGVyIHRoYW4gIjMuNi4w
LnYyMDEwMDUxMzE1MDAiLgorICAgQHJldHZhbCBTX09LCisgICBAcmV0dmFsIFNfRkFMU0UgaWYg
dGhlcmUgaXMgbm90aGluZyB0byByZXR1cm4sIFtvdXRdIHZhbHVlIGlzIE5VTEwKKyAgKi8KKyAg
W3Byb3BnZXRdIEhSRVNVTFQgdG9vbGtpdFZlcnNpb24KKyAgICAoCisgICAgIFtvdXQsIHJldHZh
bF0gQlNUUiAqdmVyc2lvbgorICAgICk7ICAKKworfQorCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVSZWxhdGlvbi5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxl
UmVsYXRpb24uaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNl
cy9BY2Nlc3NpYmxlMi9BY2Nlc3NpYmxlUmVsYXRpb24uaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMjI3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICBGaWxlIE5hbWUgKEFjY2Vz
c2libGVSZWxhdGlvbi5pZGwpCisgKiAKKyAqICBJQWNjZXNzaWJsZTIgSURMIFNwZWNpZmljYXRp
b24gCisgKiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMTMgTGludXggRm91bmRhdGlvbiAK
KyAqICBDb3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIAorICogIENvcHlyaWdodCAo
YykgMjAwMCwgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIAorICogIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuIAorICogICAKKyAqICAgCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyAKKyAq
ICBhcmUgbWV0OiAKKyAqICAgCisgKiAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IAorICogICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAK
KyAqICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSAKKyAqICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgCisgKiAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyAKKyAqICAgICAgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyAqCisgKiAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIExpbnV4
IEZvdW5kYXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgCisgKiAgICAgIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgCisgKiAgICAgIGRlcml2
ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiAKKyAq
ICAgICAgcGVybWlzc2lvbi4gCisgKiAgIAorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqICBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKKyAqICBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqICBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSAKKyAqICBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAq
ICBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgCisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIAorICogIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyAKKyAqICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSAKKyAqICBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gCisgKiAgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIAorICogIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIAorICogIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICogICAKKyAqICBUaGlzIEJTRCBMaWNlbnNlIGNvbmZvcm1zIHRvIHRoZSBPcGVuIFNv
dXJjZSBJbml0aWF0aXZlICJTaW1wbGlmaWVkIAorICogIEJTRCBMaWNlbnNlIiBhcyBwdWJsaXNo
ZWQgYXQ6IAorICogIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vu
c2UucGhwIAorICogICAKKyAqICBJQWNjZXNzaWJsZTIgaXMgYSB0cmFkZW1hcmsgb2YgdGhlIExp
bnV4IEZvdW5kYXRpb24uIFRoZSBJQWNjZXNzaWJsZTIgCisgKiAgbWFyayBtYXkgYmUgdXNlZCBp
biBhY2NvcmRhbmNlIHdpdGggdGhlIExpbnV4IEZvdW5kYXRpb24gVHJhZGVtYXJrIAorICogIFBv
bGljeSB0byBpbmRpY2F0ZSBjb21wbGlhbmNlIHdpdGggdGhlIElBY2Nlc3NpYmxlMiBzcGVjaWZp
Y2F0aW9uLiAKKyAqIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8gCisKK2ltcG9ydCAib2JqaWRsLmlkbCI7
CitpbXBvcnQgIm9haWRsLmlkbCI7CitpbXBvcnQgIm9sZWFjYy5pZGwiOworCisvKiogQGRlZmdy
b3VwIGdycFJlbGF0aW9ucyBSZWxhdGlvbnMgCisgIFVzZSB0aGUgZm9sbG93aW5nIGNvbnN0YW50
cyB0byBjb21wYXJlIGFnYWluc3QgdGhlIEJTVFJzIHJldHVybmVkIGJ5IAorICBJQWNjZXNzaWJs
ZVJlbGF0aW9uOjpyZWxhdGlvblR5cGUuCisqLyAKKy8vL0B7CisKKy8qKiBUaGUgdGFyZ2V0IG9i
amVjdCBpcyB0aGUgY29udGFpbmluZyBhcHBsaWNhdGlvbiBvYmplY3QuICovCitjb25zdCBXQ0hB
UiAqY29uc3QgSUEyX1JFTEFUSU9OX0NPTlRBSU5JTkdfQVBQTElDQVRJT04gPSBMImNvbnRhaW5p
bmdBcHBsaWNhdGlvbiI7CisKKy8qKiBUaGUgdGFyZ2V0IG9iamVjdCBpcyB0aGUgY29udGFpbmlu
ZyBkb2N1bWVudCBvYmplY3QuIFRoZSB0YXJnZXQgb2JqZWN0IGltcGxlbWVudHMKKyB0aGUgSUFj
Y2Vzc2libGVEb2N1bWVudCBpbnRlcmZhY2UuCisqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9S
RUxBVElPTl9DT05UQUlOSU5HX0RPQ1VNRU5UID0gTCJjb250YWluaW5nRG9jdW1lbnQiOworCisv
KiogVGhlIHRhcmdldCBvYmplY3QgaXMgdGhlIGNvbnRhaW5pbmcgdGFiIHBhbmUgb2JqZWN0LiAq
LworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxBVElPTl9DT05UQUlOSU5HX1RBQl9QQU5FID0g
TCJjb250YWluaW5nVGFiUGFuZSI7CisKKy8qKiBUaGUgdGFyZ2V0IG9iamVjdCBpcyB0aGUgY29u
dGFpbmluZyB3aW5kb3cgb2JqZWN0LiAqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxBVElP
Tl9DT05UQUlOSU5HX1dJTkRPVyA9IEwiY29udGFpbmluZ1dpbmRvdyI7CisKKy8qKiBTb21lIGF0
dHJpYnV0ZSBvZiB0aGlzIG9iamVjdCBpcyBhZmZlY3RlZCBieSBhIHRhcmdldCBvYmplY3QuICov
Citjb25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX0NPTlRST0xMRURfQlkgPSBMImNvbnRy
b2xsZWRCeSI7CisKKy8qKiBUaGlzIG9iamVjdCBpcyBpbnRlcmFjdGl2ZSBhbmQgY29udHJvbHMg
c29tZSBhdHRyaWJ1dGUgb2YgYSB0YXJnZXQgb2JqZWN0LiAqLworY29uc3QgV0NIQVIgKmNvbnN0
IElBMl9SRUxBVElPTl9DT05UUk9MTEVSX0ZPUiA9IEwiY29udHJvbGxlckZvciI7CisKKy8qKiBU
aGlzIG9iamVjdCBpcyBkZXNjcmliZWQgYnkgdGhlIHRhcmdldCBvYmplY3QuICovCitjb25zdCBX
Q0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX0RFU0NSSUJFRF9CWSA9IEwiZGVzY3JpYmVkQnkiOwor
CisvKiogVGhpcyBvYmplY3QgaXMgZGVzY3JpYmVzIHRoZSB0YXJnZXQgb2JqZWN0LiAqLworY29u
c3QgV0NIQVIgKmNvbnN0IElBMl9SRUxBVElPTl9ERVNDUklQVElPTl9GT1IgPSBMImRlc2NyaXB0
aW9uRm9yIjsKKworLyoqIFRoaXMgb2JqZWN0IGlzIGVtYmVkZGVkIGJ5IGEgdGFyZ2V0IG9iamVj
dC4gKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fRU1CRURERURfQlkgPSBMImVt
YmVkZGVkQnkiOworCisvKiogVGhpcyBvYmplY3QgZW1iZWRzIGEgdGFyZ2V0IG9iamVjdC4gVGhp
cyByZWxhdGlvbiBjYW4gYmUgdXNlZCBvbiB0aGUKKyBPQkpJRF9DTElFTlQgYWNjZXNzaWJsZSBm
b3IgYSB0b3AgbGV2ZWwgd2luZG93IHRvIHNob3cgd2hlcmUgdGhlIGNvbnRlbnQgCisgYXJlYXMg
YXJlLgorKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fRU1CRURTID0gTCJlbWJl
ZHMiOworCisvKiogQ29udGVudCBmbG93cyB0byB0aGlzIG9iamVjdCBmcm9tIGEgdGFyZ2V0IG9i
amVjdC4gCisgVGhpcyByZWxhdGlvbiBhbmQgSUEyX1JFTEFUSU9OX0ZMT1dTX1RPIGFyZSB1c2Vm
dWwgdG8gdGllIHRleHQgYW5kIG5vbi10ZXh0Cisgb2JqZWN0cyB0b2dldGhlciBpbiBvcmRlciB0
byBhbGxvdyBhc3Npc3RpdmUgdGVjaG5vbG9neSB0byBmb2xsb3cgdGhlCisgaW50ZW5kZWQgcmVh
ZGluZyBvcmRlci4KKyovCitjb25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX0ZMT1dTX0ZS
T00gPSBMImZsb3dzRnJvbSI7CisKKy8qKiBDb250ZW50IGZsb3dzIGZyb20gdGhpcyBvYmplY3Qg
dG8gYSB0YXJnZXQgb2JqZWN0LiAqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxBVElPTl9G
TE9XU19UTyA9IEwiZmxvd3NUbyI7CisKKy8qKiBUaGlzIG9iamVjdCBpcyBsYWJlbCBmb3IgYSB0
YXJnZXQgb2JqZWN0LiAqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxBVElPTl9MQUJFTF9G
T1IgPSBMImxhYmVsRm9yIjsKKworLyoqIFRoaXMgb2JqZWN0IGlzIGxhYmVsbGVkIGJ5IGEgdGFy
Z2V0IG9iamVjdC4gTm90ZSB0aGF0IHRoZSBkb3VibGUgTCBzcGVsbGluZworIHdoaWNoIGZvbGxv
d3MgaXMgcHJlZmVycmVkLiAgUGxlYXNlIHVzZSBpdCBpbnN0ZWFkLiAgVGhpcyBzaW5nbGUgTCB2
ZXJzaW9uIG1heQorIGJlIHJlbW92ZWQgaW4gYSBsYXRlciB2ZXJzaW9uLgorKi8KK2NvbnN0IFdD
SEFSICpjb25zdCBJQTJfUkVMQVRJT05fTEFCRUxFRF9CWSA9IEwibGFiZWxsZWRCeSI7CisKKy8q
KiBUaGlzIG9iamVjdCBpcyBsYWJlbGxlZCBieSBhIHRhcmdldCBvYmplY3QuICovCitjb25zdCBX
Q0hBUiAqY29uc3QgSUEyX1JFTEFUSU9OX0xBQkVMTEVEX0JZID0gTCJsYWJlbGxlZEJ5IjsKKwor
LyoqIFRoaXMgb2JqZWN0IGlzIGEgbWVtYmVyIG9mIGEgZ3JvdXAgb2Ygb25lIG9yIG1vcmUgb2Jq
ZWN0cy4gV2hlbiAKKyB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIG9iamVjdCBpbiB0aGUgZ3JvdXAg
ZWFjaCBtZW1iZXIgbWF5IGhhdmUgb25lIGFuZCB0aGUgCisgc2FtZSB0YXJnZXQsIGUuZy4gYSBn
cm91cGluZyBvYmplY3QuICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoYXQgZWFjaCBtZW1iZXIgaGFz
IAorIG11bHRpcGxlIGFkZGl0aW9uYWwgdGFyZ2V0cywgZS5nLiBvbmUgZm9yIGV2ZXJ5IG90aGVy
IG1lbWJlciBpbiB0aGUgZ3JvdXAuCisqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxBVElP
Tl9NRU1CRVJfT0YgPSBMIm1lbWJlck9mIjsKKworLyoqIFRoZSB0YXJnZXQgb2JqZWN0IGlzIHRo
ZSBuZXh0IG9iamVjdCBpbiB0aGUgdGFiIG9yZGVyLiAqLworY29uc3QgV0NIQVIgKmNvbnN0IElB
Ml9SRUxBVElPTl9ORVhUX1RBQkJBQkxFID0gTCJuZXh0VGFiYmFibGUiOworCisvKiogVGhpcyBv
YmplY3QgaXMgYSBsb2dpY2FsIGNoaWxkIG9mIGEgdGFyZ2V0IG9iamVjdC4gIFRoaXMgcmVsYXRp
b24gaXMgdGhlIHJlY2lwcm9jYWwKKyBvZiB0aGUgSUEyX1JFTEFUSU9OX05PREVfUEFSRU5UX09G
IHJlbGF0aW9uLiBJbiBzb21lIGNhc2VzIGFuIGFwcGxpY2F0aW9uJ3MgYWNjZXNzaWJsZQorIHRy
ZWUgaXMgc3VjaCB0aGF0IG9iamVjdHMgY2FuIGJlIGluIGEgbG9naWNhbCBwYXJlbnQtY2hpbGQg
cmVsYXRpb25zaGlwIHdoaWNoIGlzCisgZGlmZmVyZW50IGZyb20gdGhlIGhpZXJhcmNoeSBvZiB0
aGUgYWNjZXNzaWJsZSB0cmVlLiAqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxBVElPTl9O
T0RFX0NISUxEX09GID0gTCJub2RlQ2hpbGRPZiI7CisKKy8qKiBUaGlzIG9iamVjdCBpcyBhIGxv
Z2ljYWwgcGFyZW50IG9mIGEgdGFyZ2V0IG9iamVjdC4gVGhpcyByZWxhdGlvbiBpcyB0aGUgcmVj
aXByb2NhbAorIG9mIHRoZSBJQTJfUkVMQVRJT05fTk9ERV9DSElMRF9PRiByZWxhdGlvbi4gSW4g
c29tZSBjYXNlcyBhbiBhcHBsaWNhdGlvbidzIGFjY2Vzc2libGUKKyB0cmVlIGlzIHN1Y2ggdGhh
dCBvYmplY3RzIGNhbiBiZSBpbiBhIGxvZ2ljYWwgcGFyZW50LWNoaWxkIHJlbGF0aW9uc2hpcCB3
aGljaCBpcworIGRpZmZlcmVudCBmcm9tIHRoZSBoaWVyYXJjaHkgb2YgdGhlIGFjY2Vzc2libGUg
dHJlZS4gKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVMQVRJT05fTk9ERV9QQVJFTlRfT0Yg
PSBMIm5vZGVQYXJlbnRPZiI7CisKKy8qKiBUaGlzIG9iamVjdCBpcyBhIHBhcmVudCB3aW5kb3cg
b2YgdGhlIHRhcmdldCBvYmplY3QuICovCitjb25zdCBXQ0hBUiAqY29uc3QgSUEyX1JFTEFUSU9O
X1BBUkVOVF9XSU5ET1dfT0YgPSBMInBhcmVudFdpbmRvd09mIjsKKworLyoqIFRoaXMgb2JqZWN0
IGlzIGEgdHJhbnNpZW50IGNvbXBvbmVudCByZWxhdGVkIHRvIHRoZSB0YXJnZXQgb2JqZWN0LiAK
KyBXaGVuIHRoaXMgb2JqZWN0IGlzIGFjdGl2YXRlZCB0aGUgdGFyZ2V0IG9iamVjdCBkb2Vzbid0
IGxvc2UgZm9jdXMuCisqLworY29uc3QgV0NIQVIgKmNvbnN0IElBMl9SRUxBVElPTl9QT1BVUF9G
T1IgPSBMInBvcHVwRm9yIjsKKworLyoqIFRoZSB0YXJnZXQgb2JqZWN0IGlzIHRoZSBwcmV2aW91
cyBvYmplY3QgaW4gdGhlIHRhYiBvcmRlci4gKi8KK2NvbnN0IFdDSEFSICpjb25zdCBJQTJfUkVM
QVRJT05fUFJFVklPVVNfVEFCQkFCTEUgPSBMInByZXZpb3VzVGFiYmFibGUiOworCisvKiogVGhp
cyBvYmplY3QgaXMgYSBzdWIgd2luZG93IG9mIGEgdGFyZ2V0IG9iamVjdC4gKi8KK2NvbnN0IFdD
SEFSICpjb25zdCBJQTJfUkVMQVRJT05fU1VCV0lORE9XX09GID0gTCJzdWJ3aW5kb3dPZiI7CisK
Ky8vL0B9CisKKy8qKiBUaGlzIGludGVyZmFjZSBnaXZlcyBhY2Nlc3MgdG8gYW4gb2JqZWN0J3Mg
c2V0IG9mIHJlbGF0aW9ucy4KKyovCitbb2JqZWN0LCB1dWlkKDdDREY4NkVFLUMzREEtNDk2YS1C
REE0LTI4MUIzMzZFMUZEQyldCitpbnRlcmZhY2UgSUFjY2Vzc2libGVSZWxhdGlvbiA6IElVbmtu
b3duCit7CisgIC8qKiBAYnJpZWYgUmV0dXJucyB0aGUgdHlwZSBvZiB0aGUgcmVsYXRpb24uCisg
ICBAcGFyYW0gW291dF0gcmVsYXRpb25UeXBlCisgICAgVGhlIHN0cmluZ3MgcmV0dXJuZWQgYXJl
IGRlZmluZWQgQHJlZiBncnBSZWxhdGlvbnMgImluIHRoaXMgc2VjdGlvbiBvZiB0aGUgZG9jdW1l
bnRhdGlvbiIuCisgICBAcmV0dmFsIFNfT0sKKyAgKi8KKyAgW3Byb3BnZXRdIEhSRVNVTFQgcmVs
YXRpb25UeXBlCisgICAgKAorICAgICBbb3V0LCByZXR2YWxdIEJTVFIgKnJlbGF0aW9uVHlwZQor
ICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIGEgbG9jYWxpemVkIHZlcnNpb24gb2YgdGhl
IHJlbGF0aW9uIHR5cGUuCisgICBAcGFyYW0gW291dF0gbG9jYWxpemVkUmVsYXRpb25UeXBlCisg
ICBAcmV0dmFsIFNfT0sKKyAgKi8KKyAgW3Byb3BnZXRdIEhSRVNVTFQgbG9jYWxpemVkUmVsYXRp
b25UeXBlCisgICAgKAorICAgICBbb3V0LCByZXR2YWxdIEJTVFIgKmxvY2FsaXplZFJlbGF0aW9u
VHlwZQorICAgICk7CisKKyAgLyoqIEBicmllZiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGFyZ2V0
cyBmb3IgdGhpcyByZWxhdGlvbi4KKyAgIEBwYXJhbSBbb3V0XSBuVGFyZ2V0cworICAgQHJldHZh
bCBTX09LCisgICovCisgIFtwcm9wZ2V0XSBIUkVTVUxUIG5UYXJnZXRzCisgICAgKAorICAgICBb
b3V0LCByZXR2YWxdIGxvbmcgKm5UYXJnZXRzCisgICAgKTsKKworICAvKiogQGJyaWVmIFJldHVy
bnMgb25lIGFjY2Vzc2libGUgcmVsYXRpb24gdGFyZ2V0LgorICAgQHBhcmFtIFtpbl0gdGFyZ2V0
SW5kZXgKKyAgICAwIGJhc2VkIGluZGV4CisgICBAcGFyYW0gW291dF0gdGFyZ2V0CisgICBAcmV0
dmFsIFNfT0sKKyAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlmIGJhZCBbaW5dIHBhc3NlZAorICAg
QG5vdGUgVXNlIFF1ZXJ5SW50ZXJmYWNlIHRvIGdldCBJQWNjZXNzaWJsZTIuCisgICovCisgIFtw
cm9wZ2V0XSBIUkVTVUxUIHRhcmdldAorICAgICgKKyAgICAgW2luXSBsb25nIHRhcmdldEluZGV4
LAorICAgICBbb3V0LCByZXR2YWxdIElVbmtub3duICoqdGFyZ2V0IAorICAgICk7CisKKyAgLyoq
IEBicmllZiBSZXR1cm5zIG11bHRpcGxlIGFjY2Vzc2libGUgcmVsYXRpb24gdGFyZ2V0cworICAg
QHBhcmFtIFtpbl0gbWF4VGFyZ2V0cworICAgIG1heGltdW0gc2l6ZSBvZiB0aGUgYXJyYXkgYWxs
b2NhdGVkIGJ5IHRoZSBjbGllbnQKKyAgIEBwYXJhbSBbb3V0XSB0YXJnZXRzCisgICAgVGhlIGFy
cmF5IG9mIHRhcmdldCBvYmplY3RzLiAgTm90ZSB0aGF0IHRoaXMgYXJyYXkgaXMgdG8gYmUgYWxs
b2NhdGVkIGJ5IHRoZQorICAgIGNsaWVudCBhbmQgZnJlZWQgd2hlbiBubyBsb25nZXIgbmVlZGVk
LiAgUmVmZXIgdG8gQHJlZiBfYXJyYXlDb25zaWRlcmF0aW9uIAorICAgICJTcGVjaWFsIENvbnNp
ZGVyYXRpb24gd2hlbiB1c2luZyBBcnJheXMiIGZvciBtb3JlIGRldGFpbHMuICBZb3Ugd2lsbCBu
ZWVkIHRvIHVzZSAKKyAgICBRdWVyeUludGVyZmFjZSBvbiB0aGUgSVVua25vd24gdG8gZ2V0IHRo
ZSBJQWNjZXNzaWJsZTIuCisgICBAcGFyYW0gW291dF0gblRhcmdldHMKKyAgICBhY3R1YWwgbnVt
YmVyIG9mIHRhcmdldHMgaW4gdGhlIHJldHVybmVkIGFycmF5IChub3QgbW9yZSB0aGFuIG1heFRh
cmdldHMpCisgICBAcmV0dmFsIFNfT0sKKyAgIEByZXR2YWwgRV9JTlZBTElEQVJHIGlmIGJhZCBb
aW5dIHBhc3NlZCwgZS5nLiBhIG5lZ2F0aXZlIHZhbHVlCisgICovCisgIFtwcm9wZ2V0XSBIUkVT
VUxUIHRhcmdldHMKKyAgICAoCisgICAgIFtpbl0gbG9uZyBtYXhUYXJnZXRzLCAKKyAgICAgW291
dCwgc2l6ZV9pcyhtYXhUYXJnZXRzKSwgbGVuZ3RoX2lzKCpuVGFyZ2V0cyldCisgICAgICAgSVVu
a25vd24gKip0YXJnZXRzLCAKKyAgICAgW291dCwgcmV0dmFsXSBsb25nICpuVGFyZ2V0cyAKKyAg
ICApOworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUy
L0FjY2Vzc2libGVTdGF0ZXMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0lu
dGVyZmFjZXMvQWNjZXNzaWJsZTIvQWNjZXNzaWJsZVN0YXRlcy5pZGwJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0FjY2Vzc2libGUyL0FjY2Vzc2libGVTdGF0
ZXMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjA5IEBACisvKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KgorICoKKyAqICBGaWxlIE5hbWUgKEFjY2Vzc2libGVTdGF0ZXMuaWRsKQorICogCisgKiAgSUFj
Y2Vzc2libGUyIElETCBTcGVjaWZpY2F0aW9uIAorICogCisgKiAgQ29weXJpZ2h0IChjKSAyMDA3
LCAyMDEwIExpbnV4IEZvdW5kYXRpb24gCisgKiAgQ29weXJpZ2h0IChjKSAyMDA2IElCTSBDb3Jw
b3JhdGlvbiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDYgU3VuIE1pY3Jvc3lzdGVtcywg
SW5jLiAKKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiAKKyAqICAgCisgKiAgIAorICogIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dCAKKyAqICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgCisgKiAgYXJlIG1ldDogCisgKiAgIAorICogICAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dCAKKyAqICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKKyAqICAgCisgKiAgIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgCisgKiAgICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIAorICogICAgICBk
aXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgCisg
KiAgICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKgorICogICAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIHRoZSBMaW51eCBGb3VuZGF0aW9uIG5vciB0aGUgbmFtZXMgb2YgaXRz
IAorICogICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIAorICogICAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gCisgKiAgICAgIHBlcm1pc3Npb24uIAorICogICAKKyAqICBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgCisg
KiAgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgCisgKiAgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgCisgKiAgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgCisgKiAgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVCBIT0xERVIgT1IgCisgKiAgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIAorICogIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCAKKyAqICBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgCisgKiAg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
CisgKiAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIAorICogIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiAKKyAqICBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCAKKyAqICBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqICAgCisgKiAgVGhpcyBCU0QgTGljZW5z
ZSBjb25mb3JtcyB0byB0aGUgT3BlbiBTb3VyY2UgSW5pdGlhdGl2ZSAiU2ltcGxpZmllZCAKKyAq
ICBCU0QgTGljZW5zZSIgYXMgcHVibGlzaGVkIGF0OiAKKyAqICBodHRwOi8vd3d3Lm9wZW5zb3Vy
Y2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocCAKKyAqICAgCisgKiAgSUFjY2Vzc2libGUy
IGlzIGEgdHJhZGVtYXJrIG9mIHRoZSBMaW51eCBGb3VuZGF0aW9uLiBUaGUgSUFjY2Vzc2libGUy
IAorICogIG1hcmsgbWF5IGJlIHVzZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBMaW51eCBGb3Vu
ZGF0aW9uIFRyYWRlbWFyayAKKyAqICBQb2xpY3kgdG8gaW5kaWNhdGUgY29tcGxpYW5jZSB3aXRo
IHRoZSBJQWNjZXNzaWJsZTIgc3BlY2lmaWNhdGlvbi4gCisgKiAKKyAqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov
IAorCitpbXBvcnQgIm9iamlkbC5pZGwiOworCit0eXBlZGVmIGxvbmcgQWNjZXNzaWJsZVN0YXRl
czsKKworLyoqICVJQWNjZXNzaWJsZTIgc3BlY2lmaWMgc3RhdGUgYml0IGNvbnN0YW50cworCisg
IFRoaXMgZW51bSBkZWZpbmVzIHRoZSBzdGF0ZSBiaXRzIHJldHVybmVkIGJ5IElBY2Nlc3NpYmxl
Mjo6c3RhdGVzLiAgVGhlIAorICAlSUFjY2Vzc2libGUyIHN0YXRlIGJpdHMgYXJlIGluIGFkZGl0
aW9uIHRvIHRob3NlIHJldHVybmVkIGJ5IE1TQUEuCisqLworZW51bSBJQTJTdGF0ZXMgeworCisv
KiogSW5kaWNhdGVzIGEgd2luZG93IGlzIGN1cnJlbnRseSB0aGUgYWN0aXZlIHdpbmRvdywgb3Ig
aXMgYW4gYWN0aXZlIHN1YmVsZW1lbnQgCisgIHdpdGhpbiBhIGNvbnRhaW5lciBvciB0YWJsZS4K
KworIFRoaXMgc3RhdGUgY2FuIGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhlIGN1cnJlbnQgYWN0aXZl
IGl0ZW0gaW4gYSBjb250YWluZXIsIGV2ZW4gCisgIGlmIHRoZSBjb250YWluZXIgaXRzZWxmIGlz
IG5vdCBjdXJyZW50bHkgYWN0aXZlLiBJbiBvdGhlciB3b3JkcyB0aGlzIHdvdWxkIGluZGljYXRl
CisgIHRoZSBpdGVtIHRoYXQgd2lsbCBnZXQgZm9jdXMgaWYgeW91IHRhYiB0byB0aGUgY29udGFp
bmVyLgorCisgVGhpcyBpbmZvcm1hdGlvbiBpcyBpbXBvcnRhbnQgZm9yIGtub3dpbmcgd2hhdCB0
byByZXBvcnQgZm9yIHRyZWVzIGFuZCBwb3RlbnRpYWxseSAKKyAgb3RoZXIgY29udGFpbmVycyBp
biBhIHZpcnR1YWwgYnVmZmVyLgorCisgQWxzbywgc2VlIDo6SUEyX1NUQVRFX01BTkFHRVNfREVT
Q0VOREFOVFMgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisqLworSUEyX1NUQVRFX0FDVElWRSA9IDB4
MSwKKworLyoqIEluZGljYXRlcyB0aGF0IHRoZSBvYmplY3QgaXMgYXJtZWQuCisKKyBVc2VkIHRv
IGluZGljYXRlIHRoYXQgdGhlIGNvbnRyb2wgaXMgInByZXNzZWQiIGFuZCB3aWxsIGJlIGludm9r
ZWQgd2hlbiB0aGUgCisgIGFjdHVhdG9yLCBlLmcuIGEgbW91c2UgYnV0dG9uLCBpcyAicmVsZWFz
ZWQiLiAgQW4gQVQgd2hpY2ggZWl0aGVyIG1vbml0b3JzIHRoZSAKKyAgbW91c2Ugb3Igc3ludGhl
c2l6ZXMgbW91c2UgZXZlbnRzIG1pZ2h0IG5lZWQgdG8ga25vdyB0aGF0LCBhbmQgcG9zc2libHkg
YSB0YWxraW5nCisgIGludGVyZmFjZSB3b3VsZCBldmVuIGxldCB0aGUgdXNlciBrbm93IGFib3V0
IGl0LiAgSXQgY291bGQgYWxzbyBwb3RlbnRpYWxseSBiZQorICB1c2VmdWwgdG8gb24gc2NyZWVu
IGtleWJvYXJkcyBvciB0ZXN0IHRvb2xzIHNpbmNlIHRoZSBpbmZvcm1hdGlvbiBkb2VzIGluZGlj
YXRlCisgIHNvbWV0aGluZyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIGludGVyZmFjZSwgZm9yIGV4
YW1wbGUsIGNvZGUgb3BlcmF0aW5nIGFzeW5jaHJvbm91c2x5CisgIG1pZ2h0IG5lZWQgdG8gd2Fp
dCBmb3IgdGhlIGFybWVkIHN0YXRlIHRvIGNoYW5nZSBiZWZvcmUgZG9pbmcgc29tZXRoaW5nIGVs
c2UuCisKKyovCitJQTJfU1RBVEVfQVJNRUQgPSAweDIsCisKKy8qKiBJbmRpY2F0ZXMgdGhlIHVz
ZXIgaW50ZXJmYWNlIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgb2JqZWN0IG5vIGxvbmdl
ciBleGlzdHMuICovCitJQTJfU1RBVEVfREVGVU5DVCA9IDB4NCwKKworLyoqIEFuIG9iamVjdCB3
aXRoIHRoaXMgc3RhdGUgaGFzIGEgY2FyZXQgYW5kIGltcGxlbWVudHMgdGhlIElBY2Nlc3NpYmxl
VGV4dCBpbnRlcmZhY2UuCisgIAorIFN1Y2ggZmllbGRzIG1heSBiZSByZWFkLW9ubHksIHNvIFNU
QVRFX1NZU1RFTV9SRUFET05MWSBpcyB2YWxpZCBpbiBjb21iaW5hdGlvbgorICB3aXRoIElBMl9T
VEFURV9FRElUQUJMRS4KKworKi8KK0lBMl9TVEFURV9FRElUQUJMRSA9IDB4OCwKKworLyoqIElu
ZGljYXRlcyB0aGUgb3JpZW50YXRpb24gb2YgdGhpcyBvYmplY3QgaXMgaG9yaXpvbnRhbC4gKi8K
K0lBMl9TVEFURV9IT1JJWk9OVEFMID0gMHgxMCwKKworLyoqIEluZGljYXRlcyB0aGlzIG9iamVj
dCBpcyBtaW5pbWl6ZWQgYW5kIGlzIHJlcHJlc2VudGVkIG9ubHkgYnkgYW4gaWNvbi4gKi8KK0lB
Ml9TVEFURV9JQ09OSUZJRUQgPSAweDIwLAorCisvKiogSW5kaWNhdGVzIGFuIGlucHV0IHZhbGlk
YXRpb24gZmFpbHVyZS4gKi8KK0lBMl9TVEFURV9JTlZBTElEX0VOVFJZID0gMHg0MCwKKworLyoq
IEluZGljYXRlcyB0aGF0IHRoaXMgb2JqZWN0IG1hbmFnZXMgaXRzIGNoaWxkcmVuLgorCisgTm90
ZTogRHVlIHRvIHRoZSBmYWN0IHRoYXQgTVNBQSdzIFdpbkV2ZW50cyBkb24ndCBhbGxvdyB0aGUg
YWN0aXZlIGNoaWxkIGluZGV4CisgIHRvIGJlIHBhc3NlZCBvbiB0aGUgSUEyX0VWRU5UX0FDVElW
RV9ERVNDRU5EQU5UX0NIQU5HRUQgZXZlbnQsIHRoZSBtYW5hZ2VzCisgIGRlc2NlbmRhbnRzIHNj
aGVtZSBjYW4ndCBiZSB1c2VkLiAgSW5zdGVhZCB0aGUgYWN0aXZlIGNoaWxkIG9iamVjdCBoYXMg
dG8gZmlyZQorICBNU0FBJ3MgRVZFTlRfT0JKRUNUX0ZPQ1VTLiAgSW4gYSBmdXR1cmUgcmVsZWFz
ZSBhIG5ldyBldmVudCBtZWNoYW5pc20gbWF5IGJlCisgIGFkZGVkIHRvIHByb3ZpZGUgZm9yIGV2
ZW50IHNwZWNpZmljIGRhdGEgdG8gYmUgcGFzc2VkIHdpdGggdGhlIGV2ZW50LiAgQXQgdGhhdAor
ICB0aW1lIHRoZSBJQTJfRVZFTlRfQUNUSVZFX0RFQ0VOREVOVF9DSEFOR0VEIGV2ZW50IGFuZAor
ICBJQTJfU1RBVEVfTUFOQUdFU19ERVNDRU5EQU5UUyBzdGF0ZSB3b3VsZCBiZSB1c2VmdWwuCisq
LworSUEyX1NUQVRFX01BTkFHRVNfREVTQ0VOREFOVFMgPSAweDgwLAorCisvKiogSW5kaWNhdGVz
IHRoYXQgYW4gb2JqZWN0IGlzIG1vZGFsLgorCisgTW9kYWwgb2JqZWN0cyBoYXZlIHRoZSBiZWhh
dmlvciB0aGF0IHNvbWV0aGluZyBtdXN0IGJlIGRvbmUgd2l0aCB0aGUgb2JqZWN0IAorICBiZWZv
cmUgdGhlIHVzZXIgY2FuIGludGVyYWN0IHdpdGggYW4gb2JqZWN0IGluIGEgZGlmZmVyZW50IHdp
bmRvdy4KKyovCitJQTJfU1RBVEVfTU9EQUwgPSAweDEwMCwKKworLyoqIEluZGljYXRlcyB0aGlz
IHRleHQgb2JqZWN0IGNhbiBjb250YWluIG11bHRpcGxlIGxpbmVzIG9mIHRleHQuICovCitJQTJf
U1RBVEVfTVVMVElfTElORSA9IDB4MjAwLAorCisvKiogSW5kaWNhdGVzIHRoaXMgb2JqZWN0IHBh
aW50cyBldmVyeSBwaXhlbCB3aXRoaW4gaXRzIHJlY3Rhbmd1bGFyIHJlZ2lvbi4gKi8KK0lBMl9T
VEFURV9PUEFRVUUgPSAweDQwMCwKKworLyoqIEluZGljYXRlcyB0aGF0IHVzZXIgaW50ZXJhY3Rp
b24gaXMgcmVxdWlyZWQuCisKKyBBbiBleGFtcGxlIG9mIHdoZW4gdGhpcyBzdGF0ZSBpcyB1c2Vk
IGlzIHdoZW4gYSBmaWVsZCBpbiBhIGZvcm0gbXVzdCBiZSBmaWxsZWQgCisgIGJlZm9yZSBhIGZv
cm0gY2FuIGJlIHByb2Nlc3NlZC4KKyovCitJQTJfU1RBVEVfUkVRVUlSRUQgPSAweDgwMCwKKwor
LyoqIEluZGljYXRlcyBhbiBvYmplY3Qgd2hpY2ggc3VwcG9ydHMgdGV4dCBzZWxlY3Rpb24uCisK
KyBOb3RlOiBUaGlzIGlzIGRpZmZlcmVudCB0aGFuIE1TQUEgU1RBVEVfU1lTVEVNX1NFTEVDVEFC
TEUuCisqLworSUEyX1NUQVRFX1NFTEVDVEFCTEVfVEVYVCA9IDB4MTAwMCwKKworLyoqIEluZGlj
YXRlcyB0aGF0IHRoaXMgdGV4dCBvYmplY3QgY2FuIGNvbnRhaW4gb25seSBhIHNpbmdsZSBsaW5l
IG9mIHRleHQuICovCitJQTJfU1RBVEVfU0lOR0xFX0xJTkUgPSAweDIwMDAsCisKKy8qKiBJbmRp
Y2F0ZXMgdGhhdCB0aGUgYWNjZXNzaWJsZSBvYmplY3QgaXMgc3RhbGUuCisKKyBUaGlzIHN0YXRl
IGlzIHVzZWQgd2hlbiB0aGUgYWNjZXNzaWJsZSBvYmplY3Qgbm8gbG9uZ2VyIGFjY3VyYXRlbHkg
CisgIHJlcHJlc2VudHMgdGhlIHN0YXRlIG9mIHRoZSBvYmplY3Qgd2hpY2ggaXQgaXMgcmVwcmVz
ZW50aW5nIHN1Y2ggYXMgd2hlbiBhbgorICBvYmplY3QgaXMgdHJhbnNpZW50IG9yIHdoZW4gYW4g
b2JqZWN0IGhhcyBiZWVuIG9yIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nCisgIGRlc3Ryb3ll
ZCBvciB3aGVuIHRoZSBvYmplY3QncyBpbmRleCBpbiBpdHMgcGFyZW50IGhhcyBjaGFuZ2VkLgor
Ki8KK0lBMl9TVEFURV9TVEFMRSA9IDB4NDAwMCwKKworLyoqIEluZGljYXRlcyB0aGF0IHRoZSBv
YmplY3QgaW1wbGVtZW50cyBhdXRvY29tcGxldGlvbi4KKworIFRoaXMgc3RhdGUgaW5kaWNhdGVz
IHRoYXQgYSB0ZXh0IGNvbnRyb2wgd2lsbCByZXNwb25kIHRvIHRoZSBpbnB1dCBvZiAKKyBvbmUg
b3JlIG1vcmUgY2hhcmFjdGVycyBhbmQgY2F1c2UgYSBzdWItaXRlbSB0byBiZWNvbWUgc2VsZWN0
ZWQuICBUaGUgCisgc2VsZWN0aW9uIG1heSBhbHNvIHJlc3VsdCBpbiBldmVudHMgZmlyZWQgb24g
dGhlIHBhcmVudCBvYmplY3QuCisqLworSUEyX1NUQVRFX1NVUFBPUlRTX0FVVE9DT01QTEVUSU9O
ID0gMHg4MDAwLAorCisvKiogSW5kaWNhdGVzIHRoaXMgb2JqZWN0IGlzIHRyYW5zaWVudC4KKwor
IEFuIG9iamVjdCBoYXMgdGhpcyBzdGF0ZSB3aGVuIGl0cyBwYXJlbnQgb2JqZWN0IGhhcyB0aGUg
c3RhdGUgOjpJQTJfU1RBVEVfTUFOQUdFU19ERVNDRU5EQU5UUy4KKyBGb3IgZXhhbXBsZSwgYSBs
aXN0IGl0ZW0gb2JqZWN0IG1heSBiZSBtYW5hZ2VkIGJ5IGl0cyBwYXJlbnQgbGlzdCBvYmplY3Qg
YW5kIG1heSBvbmx5IAorIGV4aXN0IGFzIGxvbmcgYXMgdGhlIG9iamVjdCBpcyBhY3R1YWxseSBy
ZW5kZXJlZC4gIFNpbWlsYXJseSBhIHRhYmxlIGNlbGwncyBhY2Nlc3NpYmxlIAorIG9iamVjdCBt
YXkgZXhpc3Qgb25seSB3aGlsZSB0aGUgY2VsbCBoYXMgZm9jdXMuICBIb3dldmVyLCBmcm9tIHRo
ZSBwZXJzcGVjdGl2ZSBvZiBhbiAKKyBhc3Npc3RpdmUgdGVjaG5vbG9neSBhIHRyYW5zaWVudCBv
YmplY3QgYmVoYXZlcyBsaWtlIGEgbm9uLXRyYW5zaWVudCBvYmplY3QuICBBcyBhIAorIHJlc3Vs
dCBpdCBpcyBsaWtlbHkgdGhhdCB0aGlzIHN0YXRlIGlzIG5vdCBvZiB1c2UgdG8gYW4gYXNzaXN0
aXZlIHRlY2hub2xvZ3ksIGJ1dCBpdCAKKyBpcyBwcm92aWRlZCBpbiBjYXNlIGFuIGFzc2lzdGl2
ZSB0ZWNobm9sb2d5IGRldGVybWluZXMgdGhhdCBrbm93bGVkZ2Ugb2YgdGhlIHRyYW5zaWVudCAK
KyBuYXR1cmUgb2YgdGhlIG9iamVjdCBpcyB1c2VmdWwgYW5kIGFsc28gZm9yIGhhcm1vbnkgd2l0
aCB0aGUgTGludXggYWNjZXNzaWJpbGl0eSBBUEkuCisKKyBBbHNvLCBzZWUgOjpJQTJfU1RBVEVf
TUFOQUdFU19ERVNDRU5EQU5UUyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAqLworSUEyX1NUQVRF
X1RSQU5TSUVOVCA9IDB4MTAwMDAsCisKKy8qKiBJbmRpY2F0ZXMgdGhlIG9yaWVudGF0aW9uIG9m
IHRoaXMgb2JqZWN0IGlzIHZlcnRpY2FsLiAqLworSUEyX1NUQVRFX1ZFUlRJQ0FMID0gMHgyMDAw
MCwKKworLyoqIEluZGljYXRlcyB0aGlzIG9iamVjdCBpcyBjaGVja2FibGUuCisKKyBUaGUgc3Rh
bmRhcmQgY2hlY2thYmxlIG9iamVjdHMgYXJlIGNoZWNrIGJveGVzLCByYWRpbyBidXR0b25zLCBj
aGVjayBib3ggbWVudQorIGl0ZW1zLCByYWRpbyBtZW51IGl0ZW1zLCBhbmQgdG9nZ2xlIGJ1dHRv
bnMuICBTaW5jZSBhc3Npc3RpdmUgdGVjaG5vbG9neSB3aWxsCisgZGV0ZXJtaW5lIHRoYXQgdGhl
c2Ugb2JqZWN0cyBhcmUgY2hlY2thYmxlIHZpYSB0aGUgb2JqZWN0J3Mgcm9sZSB0aGUgY2hlY2th
YmxlCisgc3RhdGUgaXMgbm90IHJlcXVpcmVkLiAgSG93ZXZlciwgdGhpcyBzdGF0ZSBpcyBuZWNl
c3NhcnkgaW4gdGhvc2UgY2FzZXMgd2hlcmUKKyBhbiBvYmplY3QgaGFzIGEgcm9sZSB3aGljaCBp
cyBub3Qgb25lIG9mIHRoZSBwcmV2aW91c2x5IG1lbnRpb25lZCByb2xlcy4gIEFuCisgZXhhbXBs
ZSBpcyBhIHRhYmxlIGNlbGwgd2hpY2ggaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGFuIGVtYWls
IGhhcyBhbiBhdHRhY2htZW50LAorIHdoZXRoZXIgb3Igbm90IGFuIG1haWwgaXMgY29uc2lkZXJl
ZCBzcGFtLCBhbmQgd2hldGhlciBvciBub3QgYW4gZW1haWwgaGFzIGJlZW4gcmVhZC4KKyAqLwor
SUEyX1NUQVRFX0NIRUNLQUJMRSA9IDB4NDAwMDAsCisKKy8qKiBJbmRpY2F0ZXMgdGhpcyBvYmpl
Y3QgaXMgcGlubmVkLgorCisgVGhpcyBzdGF0ZSBpbmRpY2F0ZXMgdGhhdCBhbiBvYmplY3QgaXMg
Zml4ZWQgYXQgYSBjZXJ0YWluIGxvY2F0aW9uLiAgT25lIGV4YW1wbGUKKyBpcyBhIGJyb3dzZXIg
dGFiIHRoYXQgd2hlbiBwaW5uZWQgY2Fubm90IGJlIG1vdmVkIHVudGlsIHVucGlubmVkLiAgQW5v
dGhlciBleGFtcGxlCisgaXMgYSBtb3ZhYmxlIG9yIGZsb2F0aW5nIG9iamVjdCB0aGF0IHdoZW4g
cGlubmVkIHJlbWFpbnMgaW4gaXRzIHBpbm5lZCBsb2NhdGlvbgorIHVudGlsIGJlaW5nIHVucGlu
bmVkLgorICovCitJQTJfU1RBVEVfUElOTkVEID0gMHg4MDAwMAorCit9OwpJbmRleDogU291cmNl
L1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9JQTJDb21tb25UeXBlcy5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9BY2Nlc3NpYmxlMi9JQTJD
b21tb25UeXBlcy5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0FjY2Vzc2libGUyL0lBMkNvbW1vblR5cGVzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE5MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAgRmlsZSBOYW1lIChJQTJDb21t
b25UeXBlcy5pZGwpCisgKiAKKyAqICBJQWNjZXNzaWJsZTIgSURMIFNwZWNpZmljYXRpb24gCisg
KiAKKyAqICBDb3B5cmlnaHQgKGMpIDIwMDcsIDIwMTAgTGludXggRm91bmRhdGlvbiAKKyAqICBD
b3B5cmlnaHQgKGMpIDIwMDYgSUJNIENvcnBvcmF0aW9uIAorICogIENvcHlyaWdodCAoYykgMjAw
MCwgMjAwNiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIAorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IAorICogICAKKyAqICAgCisgKiAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IAorICogIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyAKKyAqICBhcmUg
bWV0OiAKKyAqICAgCisgKiAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IAorICogICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAKKyAqICAg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSAKKyAqICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgCisgKiAgICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyAKKyAqICAgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLiAKKyAqCisgKiAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIExpbnV4IEZvdW5k
YXRpb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgCisgKiAgICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgCisgKiAgICAgIGRlcml2ZWQgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiAKKyAqICAgICAg
cGVybWlzc2lvbi4gCisgKiAgIAorICogIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCAKKyAqICBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCAKKyAqICBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiAKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSAKKyAqICBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiAKKyAqICBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
CisgKiAgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIAorICogIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyAKKyAqICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSAKKyAqICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gCisgKiAgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIAorICogIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIAor
ICogIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICogICAKKyAqICBUaGlzIEJTRCBMaWNlbnNlIGNvbmZvcm1zIHRvIHRoZSBPcGVuIFNvdXJjZSBJ
bml0aWF0aXZlICJTaW1wbGlmaWVkIAorICogIEJTRCBMaWNlbnNlIiBhcyBwdWJsaXNoZWQgYXQ6
IAorICogIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhw
IAorICogICAKKyAqICBJQWNjZXNzaWJsZTIgaXMgYSB0cmFkZW1hcmsgb2YgdGhlIExpbnV4IEZv
dW5kYXRpb24uIFRoZSBJQWNjZXNzaWJsZTIgCisgKiAgbWFyayBtYXkgYmUgdXNlZCBpbiBhY2Nv
cmRhbmNlIHdpdGggdGhlIExpbnV4IEZvdW5kYXRpb24gVHJhZGVtYXJrIAorICogIFBvbGljeSB0
byBpbmRpY2F0ZSBjb21wbGlhbmNlIHdpdGggdGhlIElBY2Nlc3NpYmxlMiBzcGVjaWZpY2F0aW9u
LiAKKyAqIAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKi8gCisKKyAvKiogVGhlc2UgY29uc3RhbnRzIGNvbnRy
b2wgdGhlIHNjcm9sbGluZyBvZiBhbiBvYmplY3Qgb3Igc3Vic3RyaW5nIGludG8gYSB3aW5kb3cu
CisKKyBUaGlzIGVudW0gaXMgdXNlZCBpbiBJQWNjZXNzaWJsZTI6OnNjcm9sbFRvIGFuZCBJQWNj
ZXNzaWJsZVRleHQ6OnNjcm9sbFN1YnN0cmluZ1RvLgorKi8KK2VudW0gSUEyU2Nyb2xsVHlwZSB7
CisKKyAgLyoqIFNjcm9sbCB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBvYmplY3Qgb3Igc3Vi
c3RyaW5nIHN1Y2ggdGhhdCB0aGUgdG9wIGxlZnQKKyAgIGNvcm5lciAoYW5kIGFzIG11Y2ggYXMg
cG9zc2libGUgb2YgdGhlIHJlc3Qgb2YgdGhlIG9iamVjdCBvciBzdWJzdHJpbmcpIGlzIHdpdGhp
bgorICAgdGhlIHRvcCBsZXZlbCB3aW5kb3cuICBJbiBjYXNlcyB3aGVyZSB0aGUgZW50aXJlIG9i
amVjdCBvciBzdWJzdHJpbmcgZml0cyB3aXRoaW4gCisgICB0aGUgdG9wIGxldmVsIHdpbmRvdywg
dGhlIHBsYWNlbWVudCBvZiB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZyBpcyBkZXBlbmRlbnQgb24g
CisgICB0aGUgYXBwbGljYXRpb24uICBGb3IgZXhhbXBsZSwgdGhlIG9iamVjdCBvciBzdWJzdHJp
bmcgbWF5IGJlIHNjcm9sbGVkIHRvIHRoZSAKKyAgIGNsb3Nlc3QgZWRnZSwgdGhlIGZ1cnRoZXN0
IGVkZ2UsIG9yIG1pZHdheSBiZXR3ZWVuIHRob3NlIHR3byBlZGdlcy4gIEluIGNhc2VzCisgICB3
aGVyZSB0aGVyZSBpcyBhIGhpZXJhcmNoeSBvZiBuZXN0ZWQgc2Nyb2xsYWJsZSBjb250cm9scywg
bW9yZSB0aGFuIG9uZSBjb250cm9sCisgICBtYXkgaGF2ZSB0byBiZSBzY3JvbGxlZC4KKyAgKi8K
KyAgSUEyX1NDUk9MTF9UWVBFX1RPUF9MRUZULCAKKworICAvKiogU2Nyb2xsIHRoZSBib3R0b20g
cmlnaHQgY29ybmVyIG9mIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nIHN1Y2ggdGhhdCB0aGUgYm90
dG9tIHJpZ2h0CisgICBjb3JuZXIgKGFuZCBhcyBtdWNoIGFzIHBvc3NpYmxlIG9mIHRoZSByZXN0
IG9mIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nKSBpcyB3aXRoaW4KKyAgIHRoZSB0b3AgbGV2ZWwg
d2luZG93LiAgSW4gY2FzZXMgd2hlcmUgdGhlIGVudGlyZSBvYmplY3Qgb3Igc3Vic3RyaW5nIGZp
dHMgd2l0aGluIAorICAgdGhlIHRvcCBsZXZlbCB3aW5kb3csIHRoZSBwbGFjZW1lbnQgb2YgdGhl
IG9iamVjdCBvciBzdWJzdHJpbmcgaXMgZGVwZW5kZW50IG9uIAorICAgdGhlIGFwcGxpY2F0aW9u
LiAgRm9yIGV4YW1wbGUsIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nIG1heSBiZSBzY3JvbGxlZCB0
byB0aGUgCisgICBjbG9zZXN0IGVkZ2UsIHRoZSBmdXJ0aGVzdCBlZGdlLCBvciBtaWR3YXkgYmV0
d2VlbiB0aG9zZSB0d28gZWRnZXMuICBJbiBjYXNlcworICAgd2hlcmUgdGhlcmUgaXMgYSBoaWVy
YXJjaHkgb2YgbmVzdGVkIHNjcm9sbGFibGUgY29udHJvbHMsIG1vcmUgdGhhbiBvbmUgY29udHJv
bAorICAgbWF5IGhhdmUgdG8gYmUgc2Nyb2xsZWQuCisgICovCisgIElBMl9TQ1JPTExfVFlQRV9C
T1RUT01fUklHSFQsCisKKyAgLyoqIFNjcm9sbCB0aGUgdG9wIGVkZ2Ugb2YgdGhlIG9iamVjdCBv
ciBzdWJzdHJpbmcgc3VjaCB0aGF0IHRoZSB0b3AgZWRnZSAKKyAgIChhbmQgYXMgbXVjaCBhcyBw
b3NzaWJsZSBvZiB0aGUgcmVzdCBvZiB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZykgaXMgd2l0aGlu
IHRoZQorICAgdG9wIGxldmVsIHdpbmRvdy4gIEluIGNhc2VzIHdoZXJlIHRoZSBlbnRpcmUgb2Jq
ZWN0IG9yIHN1YnN0cmluZyBmaXRzIHdpdGhpbiAKKyAgIHRoZSB0b3AgbGV2ZWwgd2luZG93LCB0
aGUgcGxhY2VtZW50IG9mIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nIGlzIGRlcGVuZGVudCBvbiAK
KyAgIHRoZSBhcHBsaWNhdGlvbi4gIEZvciBleGFtcGxlLCB0aGUgb2JqZWN0IG9yIHN1YnN0cmlu
ZyBtYXkgYmUgc2Nyb2xsZWQgdG8gdGhlIAorICAgY2xvc2VzdCBlZGdlLCB0aGUgZnVydGhlc3Qg
ZWRnZSwgb3IgbWlkd2F5IGJldHdlZW4gdGhvc2UgdHdvIGVkZ2VzLiAgSW4gY2FzZXMKKyAgIHdo
ZXJlIHRoZXJlIGlzIGEgaGllcmFyY2h5IG9mIG5lc3RlZCBzY3JvbGxhYmxlIGNvbnRyb2xzLCBt
b3JlIHRoYW4gb25lIGNvbnRyb2wKKyAgIG1heSBoYXZlIHRvIGJlIHNjcm9sbGVkLgorICAqLwor
ICBJQTJfU0NST0xMX1RZUEVfVE9QX0VER0UsCisKKyAgLyoqIFNjcm9sbCB0aGUgYm90dG9tIGVk
Z2Ugb2YgdGhlIG9iamVjdCBvciBzdWJzdHJpbmcgc3VjaCB0aGF0IHRoZSBib3R0b20gZWRnZSAK
KyAgIChhbmQgYXMgbXVjaCBhcyBwb3NzaWJsZSBvZiB0aGUgcmVzdCBvZiB0aGUgb2JqZWN0IG9y
IHN1YnN0cmluZykgaXMgd2l0aGluIHRoZQorICAgdG9wIGxldmVsIHdpbmRvdy4gIEluIGNhc2Vz
IHdoZXJlIHRoZSBlbnRpcmUgb2JqZWN0IG9yIHN1YnN0cmluZyBmaXRzIHdpdGhpbiAKKyAgIHRo
ZSB0b3AgbGV2ZWwgd2luZG93LCB0aGUgcGxhY2VtZW50IG9mIHRoZSBvYmplY3Qgb3Igc3Vic3Ry
aW5nIGlzIGRlcGVuZGVudCBvbiAKKyAgIHRoZSBhcHBsaWNhdGlvbi4gIEZvciBleGFtcGxlLCB0
aGUgb2JqZWN0IG9yIHN1YnN0cmluZyBtYXkgYmUgc2Nyb2xsZWQgdG8gdGhlIAorICAgY2xvc2Vz
dCBlZGdlLCB0aGUgZnVydGhlc3QgZWRnZSwgb3IgbWlkd2F5IGJldHdlZW4gdGhvc2UgdHdvIGVk
Z2VzLiAgSW4gY2FzZXMKKyAgIHdoZXJlIHRoZXJlIGlzIGEgaGllcmFyY2h5IG9mIG5lc3RlZCBz
Y3JvbGxhYmxlIGNvbnRyb2xzLCBtb3JlIHRoYW4gb25lIGNvbnRyb2wKKyAgIG1heSBoYXZlIHRv
IGJlIHNjcm9sbGVkLgorICAqLworICBJQTJfU0NST0xMX1RZUEVfQk9UVE9NX0VER0UsIAorCisg
IC8qKiBTY3JvbGwgdGhlIGxlZnQgZWRnZSBvZiB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZyBzdWNo
IHRoYXQgdGhlIGxlZnQgZWRnZSAKKyAgIChhbmQgYXMgbXVjaCBhcyBwb3NzaWJsZSBvZiB0aGUg
cmVzdCBvZiB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZykgaXMgd2l0aGluIHRoZQorICAgdG9wIGxl
dmVsIHdpbmRvdy4gIEluIGNhc2VzIHdoZXJlIHRoZSBlbnRpcmUgb2JqZWN0IG9yIHN1YnN0cmlu
ZyBmaXRzIHdpdGhpbiAKKyAgIHRoZSB0b3AgbGV2ZWwgd2luZG93LCB0aGUgcGxhY2VtZW50IG9m
IHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nIGlzIGRlcGVuZGVudCBvbiAKKyAgIHRoZSBhcHBsaWNh
dGlvbi4gIEZvciBleGFtcGxlLCB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZyBtYXkgYmUgc2Nyb2xs
ZWQgdG8gdGhlIAorICAgY2xvc2VzdCBlZGdlLCB0aGUgZnVydGhlc3QgZWRnZSwgb3IgbWlkd2F5
IGJldHdlZW4gdGhvc2UgdHdvIGVkZ2VzLiAgSW4gY2FzZXMKKyAgIHdoZXJlIHRoZXJlIGlzIGEg
aGllcmFyY2h5IG9mIG5lc3RlZCBzY3JvbGxhYmxlIGNvbnRyb2xzLCBtb3JlIHRoYW4gb25lIGNv
bnRyb2wKKyAgIG1heSBoYXZlIHRvIGJlIHNjcm9sbGVkLgorICAqLworICBJQTJfU0NST0xMX1RZ
UEVfTEVGVF9FREdFLCAKKworICAvKiogU2Nyb2xsIHRoZSByaWdodCBlZGdlIG9mIHRoZSBvYmpl
Y3Qgb3Igc3Vic3RyaW5nIHN1Y2ggdGhhdCB0aGUgcmlnaHQgZWRnZSAKKyAgIChhbmQgYXMgbXVj
aCBhcyBwb3NzaWJsZSBvZiB0aGUgcmVzdCBvZiB0aGUgb2JqZWN0IG9yIHN1YnN0cmluZykgaXMg
d2l0aGluIHRoZQorICAgdG9wIGxldmVsIHdpbmRvdy4gIEluIGNhc2VzIHdoZXJlIHRoZSBlbnRp
cmUgb2JqZWN0IG9yIHN1YnN0cmluZyBmaXRzIHdpdGhpbiAKKyAgIHRoZSB0b3AgbGV2ZWwgd2lu
ZG93LCB0aGUgcGxhY2VtZW50IG9mIHRoZSBvYmplY3Qgb3Igc3Vic3RyaW5nIGlzIGRlcGVuZGVu
dCBvbiAKKyAgIHRoZSBhcHBsaWNhdGlvbi4gIEZvciBleGFtcGxlLCB0aGUgb2JqZWN0IG9yIHN1
YnN0cmluZyBtYXkgYmUgc2Nyb2xsZWQgdG8gdGhlIAorICAgY2xvc2VzdCBlZGdlLCB0aGUgZnVy
dGhlc3QgZWRnZSwgb3IgbWlkd2F5IGJldHdlZW4gdGhvc2UgdHdvIGVkZ2VzLiAgSW4gY2FzZXMK
KyAgIHdoZXJlIHRoZXJlIGlzIGEgaGllcmFyY2h5IG9mIG5lc3RlZCBzY3JvbGxhYmxlIGNvbnRy
b2xzLCBtb3JlIHRoYW4gb25lIGNvbnRyb2wKKyAgIG1heSBoYXZlIHRvIGJlIHNjcm9sbGVkLgor
ICAqLworICBJQTJfU0NST0xMX1RZUEVfUklHSFRfRURHRSwKKworICAvKiogU2Nyb2xsIHRoZSBv
YmplY3Qgb3Igc3Vic3RyaW5nIHN1Y2ggdGhhdCBhcyBtdWNoIGFzIHBvc3NpYmxlIG9mIHRoZSAK
KyAgIG9iamVjdCBvciBzdWJzdHJpbmcgaXMgd2l0aGluIHRoZSB0b3AgbGV2ZWwgd2luZG93LiAg
VGhlIHBsYWNlbWVudCBvZiAKKyAgIHRoZSBvYmplY3QgaXMgZGVwZW5kZW50IG9uIHRoZSBhcHBs
aWNhdGlvbi4gIEZvciBleGFtcGxlLCB0aGUgb2JqZWN0IG9yCisgICBzdWJzdHJpbmcgbWF5IGJl
IHNjcm9sbGVkIHRvIHRvIGNsb3Nlc3QgZWRnZSwgdGhlIGZ1cnRoZXN0IGVkZ2UsIG9yIG1pZHdh
eQorICAgYmV0d2VlbiB0aG9zZSB0d28gZWRnZXMuCisgICovCisgIElBMl9TQ1JPTExfVFlQRV9B
TllXSEVSRQorfTsKKworLyoqIFRoZXNlIGNvbnN0YW50cyBkZWZpbmUgd2hpY2ggY29vcmRpbmF0
ZSBzeXN0ZW0gYSBwb2ludCBpcyBsb2NhdGVkIGluLgorIAorIFRoaXMgZW51bSBpcyB1c2VkIGlu
IElBY2Nlc3NpYmxlMjo6c2Nyb2xsVG9Qb2ludCwgSUFjY2Vzc2libGVJbWFnZTo6aW1hZ2VQb3Np
dGlvbiwKKyBJQWNjZXNzaWJsZVRleHQ6OmNoYXJhY3RlckV4dGVudHMsIGFuZCBJQWNjZXNzaWJs
ZVRleHQ6Om9mZnNldEF0UG9pbnQsIGFuZCAKKyBJQWNjZXNzaWJsZVRleHQ6OnNjcm9sbFN1YnN0
cmluZ1RvUG9pbnQuCisqLworZW51bSBJQTJDb29yZGluYXRlVHlwZSB7CisKKyAgLy8vIFRoZSBj
b29yZGluYXRlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIHNjcmVlbi4KKyAgSUEyX0NPT1JEVFlQRV9T
Q1JFRU5fUkVMQVRJVkUsIAorCisgIC8qKiBUaGUgY29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRv
IHRoZSB1cHBlciBsZWZ0IGNvcm5lciBvZiB0aGUgYm91bmRpbmcgYm94CisgICBvZiB0aGUgaW1t
ZWRpYXRlIHBhcmVudC4KKyAgKi8KKyAgSUEyX0NPT1JEVFlQRV9QQVJFTlRfUkVMQVRJVkUgIAor
Cit9OworCisvKiogU3BlY2lhbCBvZmZzZXRzIGZvciB1c2UgaW4gSUFjY2Vzc2libGVUZXh0IGFu
ZCBJQWNjZXNzaWJsZUVkaXRhYmxlVGV4dCBtZXRob2RzCisgIAorICBSZWZlciB0byBAcmVmIF9z
cGVjaWFsT2Zmc2V0cyAKKyAgIlNwZWNpYWwgT2Zmc2V0cyBmb3IgdXNlIGluIHRoZSBJQWNjZXNz
aWJsZVRleHQgYW5kIElBY2Nlc3NpYmxlRWRpdGFibGVUZXh0IE1ldGhvZHMiIAorICBmb3IgbW9y
ZSBpbmZvcm1hdGlvbi4KKyovCitlbnVtIElBMlRleHRTcGVjaWFsT2Zmc2V0cyB7CisgIElBMl9U
RVhUX09GRlNFVF9MRU5HVEggPSAtMSwgIC8qKjwgVGhpcyBvZmZzZXQgaXMgZXF1aXZhbGVudCB0
byB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuICBJdCBlbGltaW5hdGVzCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG5lZWQgdG8gY2FsbCBJQWNjZXNzaWJsZVRleHQ6
Om5DaGFyYWN0ZXJzLiAqLworICBJQTJfVEVYVF9PRkZTRVRfQ0FSRVQgPSAtMiAgICAvKio8IFRo
aXMgb2Zmc2V0IHNpZ25pZmllcyB0aGF0IHRoZSB0ZXh0IHJlbGF0ZWQgdG8gdGhlIHBoeXNpY2Fs
IGxvY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGNh
cmV0IHNob3VsZCBiZSB1c2VkLiAqLworfTsKKworLyoqIFRoZXNlIGNvbnN0YW50cyBzcGVjaWZ5
IHRoZSBraW5kIG9mIGNoYW5nZSBtYWRlIHRvIGEgdGFibGUuCisKKyAgIFRoaXMgZW51bSBpcyB1
c2VkIGluIHRoZSBJQTJUYWJsZU1vZGVsQ2hhbmdlIHN0cnVjdCB3aGljaCBpbiB0dXJuIGlzIHVz
ZWQgYnkKKyAgIElBY2Nlc3NpYmxlVGFibGU6Om1vZGVsQ2hhbmdlIGFuZCBJQWNjZXNzaWJsZVRh
YmxlMjo6bW9kZWxDaGFuZ2UuCisqLworZW51bSBJQTJUYWJsZU1vZGVsQ2hhbmdlVHlwZSB7Cisg
IElBMl9UQUJMRV9NT0RFTF9DSEFOR0VfSU5TRVJULCAgLy8gPSAwOworICBJQTJfVEFCTEVfTU9E
RUxfQ0hBTkdFX0RFTEVURSwKKyAgSUEyX1RBQkxFX01PREVMX0NIQU5HRV9VUERBVEUKK307CisK
Ky8qKiBBIHN0cnVjdHVyZSBkZWZpbmluZyB0aGUgdHlwZSBvZiBhbmQgZXh0ZW50cyBvZiBjaGFu
Z2VzIG1hZGUgdG8gYSB0YWJsZQorIAorIElBY2Nlc3NpYmxlVGFibGU6Om1vZGVsQ2hhbmdlIGFu
ZCBJQWNjZXNzaWJsZVRhYmxlMjo6bW9kZWxDaGFuZ2UgcmV0dXJuIHRoaXMgc3RydWN0LgorIElu
IHRoZSBjYXNlIG9mIGFuIGluc2VydGlvbiBvciBjaGFuZ2UgdGhlIHJvdyBhbmQgY29sdW1uIG9m
ZnNldHMgZGVmaW5lIHRoZSBib3VuZGFyaWVzCisgb2YgdGhlIGluc2VydGVkIG9yIGNoYW5nZWQg
c3VidGFibGUgYWZ0ZXIgdGhlIG9wZXJhdGlvbi4gIEluIHRoZSBjYXNlIG9mIGEgZGVsZXRpb24K
KyB0aGUgcm93IGFuZCBjb2x1bW4gb2Zmc2V0cyBkZWZpbmUgdGhlIGJvdW5kYXJpZXMgb2YgdGhl
IHN1YnRhYmxlIGJlaW5nIHJlbW92ZWQgYmVmb3JlCisgdGhlIHJlbW92YWwuCisqLwordHlwZWRl
ZiBzdHJ1Y3QgSUEyVGFibGVNb2RlbENoYW5nZSB7CisgIGVudW0gSUEyVGFibGVNb2RlbENoYW5n
ZVR5cGUgdHlwZTsgIC8vIGluc2VydCwgZGVsZXRlLCB1cGRhdGUKKyAgbG9uZyBmaXJzdFJvdzsg
ICAgICAgICAgICAgICAgICAgICAgLy8vPCAwIGJhc2VkLCBpbmNsdXNpdmUKKyAgbG9uZyBsYXN0
Um93OyAgICAgICAgICAgICAgICAgICAgICAgLy8vPCAwIGJhc2VkLCBpbmNsdXNpdmUKKyAgbG9u
ZyBmaXJzdENvbHVtbjsgICAgICAgICAgICAgICAgICAgLy8vPCAwIGJhc2VkLCBpbmNsdXNpdmUK
KyAgbG9uZyBsYXN0Q29sdW1uOyAgICAgICAgICAgICAgICAgICAgLy8vPCAwIGJhc2VkLCBpbmNs
dXNpdmUKK30gSUEyVGFibGVNb2RlbENoYW5nZTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyV2luLmNwcAkocmV2aXNp
b24gMTUxNTIyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsMTEgQEAgc3RhdGljIENP
TVB0cjxJQWNjZXNzaWJsZUNvbXBhcmFibGU+IGNvbQogICAgIHJldHVybiBjb21wYXJhYmxlOwog
fQogCi1zdGF0aWMgY29uc3QgX2JzdHJfdCBzX0FYRFJURWxlbWVudElkQXR0cmlidXRlKEwiQVhE
UlRFbGVtZW50SWRBdHRyaWJ1dGUiKTsKK3N0YXRpYyBjb25zdCBfYnN0cl90JiBlbGVtZW50SWRB
dHRyaWJ1dGVLZXkoKQoreworICAgIHN0YXRpYyBjb25zdCBfYnN0cl90IGVsZW1lbnRJZEF0dHJp
YnV0ZUtleShMIkFYRFJURWxlbWVudElkQXR0cmlidXRlIik7CisgICAgcmV0dXJuIGVsZW1lbnRJ
ZEF0dHJpYnV0ZUtleTsKK30KIAogc3RhdGljIENPTVB0cjxJQWNjZXNzaWJsZT4gZmluZEFjY2Vz
c2libGVPYmplY3RCeUlkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgcGFyZW50T2JqZWN0LCBCU1RS
IGlkQXR0cmlidXRlKQogewpAQCAtOTUsNyArOTksNyBAQCBzdGF0aWMgQ09NUHRyPElBY2Nlc3Np
YmxlPiBmaW5kQWNjZXNzaWJsCiAgICAgVkFSSUFOVCB2YWx1ZTsKICAgICA6OlZhcmlhbnRJbml0
KCZ2YWx1ZSk7CiAKLSAgICBpZiAoU1VDQ0VFREVEKGNvbXBhcmFibGUtPmF0dHJpYnV0ZVZhbHVl
KHNfQVhEUlRFbGVtZW50SWRBdHRyaWJ1dGUsICZ2YWx1ZSkpKSB7CisgICAgaWYgKFNVQ0NFRURF
RChjb21wYXJhYmxlLT5nZXRfYXR0cmlidXRlKGVsZW1lbnRJZEF0dHJpYnV0ZUtleSgpLCAmdmFs
dWUpKSkgewogICAgICAgICBBU1NFUlQoVl9WVCgmdmFsdWUpID09IFZUX0JTVFIpOwogICAgICAg
ICBpZiAoVkFSQ01QX0VRID09IDo6VmFyQnN0ckNtcCh2YWx1ZS5ic3RyVmFsLCBpZEF0dHJpYnV0
ZSwgTE9DQUxFX1VTRVJfREVGQVVMVCwgMCkpIHsKICAgICAgICAgICAgIDo6VmFyaWFudENsZWFy
KCZ2YWx1ZSk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCShyZXZpc2lvbiAxNTE1MjIpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZERlbGVnYXRlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNT
dHJpbmdSZWYuaD4KKyNpbmNsdWRlIDxjb211dGlsLmg+CiAjaW5jbHVkZSA8dGNoYXIuaD4KICNp
bmNsdWRlIDxzdHJpbmc+CiAKQEAgLTE2Miw2ICsxNjMsMTIgQEAgSlNTdHJpbmdSZWYgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXR0cgogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOwogfQogCitzdGF0aWMgY29uc3QgX2JzdHJfdCYgdGl0bGVVSUVsZW1lbnRB
dHRyaWJ1dGVLZXkoKQoreworICAgIHN0YXRpYyBjb25zdCBfYnN0cl90IHRpdGxlVUlFbGVtZW50
QXR0cmlidXRlS2V5KEwiQVhUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZSIpOworICAgIHJldHVybiB0
aXRsZVVJRWxlbWVudEF0dHJpYnV0ZUtleTsKK30KKwogQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpCiB7CiAgICAgQ09NUHRyPElB
Y2Nlc3NpYmxlPiBwbGF0Zm9ybUVsZW1lbnQgPSBwbGF0Zm9ybVVJRWxlbWVudCgpOwpAQCAtMTcy
LDcgKzE3OSw3IEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWwKIAog
ICAgIFZBUklBTlQgdmFsdWU7CiAgICAgOjpWYXJpYW50SW5pdCgmdmFsdWUpOwotICAgIGlmIChG
QUlMRUQoY29tcGFyYWJsZS0+YXR0cmlidXRlVmFsdWUoTCJBWFRpdGxlVUlFbGVtZW50QXR0cmli
dXRlIiwgJnZhbHVlKSkpIHsKKyAgICBpZiAoRkFJTEVEKGNvbXBhcmFibGUtPmdldF9hdHRyaWJ1
dGUodGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVLZXkoKSwgJnZhbHVlKSkpIHsKICAgICAgICAgOjpW
YXJpYW50Q2xlYXIoJnZhbHVlKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQo=
</data>
<flag name="review"
          id="225936"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>