<?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>125600</bug_id>
          
          <creation_ts>2013-12-11 14:14:34 -0800</creation_ts>
          <short_desc>Need ObjC APIs for some InjectedBundle classes.</short_desc>
          <delta_ts>2013-12-12 23:19:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yongjun Zhang">yongjun_zhang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>yongjun_zhang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>958898</commentid>
    <comment_count>0</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2013-12-11 14:14:34 -0800</bug_when>
    <thetext>We will need Objective C APIs for some InjectBundle classes.  We can start with WebFrame, InjectedBundleScriptWorld, InjectedBundleHitTestResult and InjectedBundleNodeHandle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958915</commentid>
    <comment_count>1</comment_count>
      <attachid>219005</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2013-12-11 14:32:30 -0800</bug_when>
    <thetext>Created attachment 219005
Add ObjC API classes for WebFrame, InjectedBundleScriptWorld, InjectedBundleHitTestResult and InjectedBundleNodeHandle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958917</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-11 14:35:20 -0800</bug_when>
    <thetext>Attachment 219005 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Shared/Cocoa/APIObject.mm&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResultInternal.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm&apos;, u&apos;Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h:34:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h:34:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResultInternal.h:34:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResultInternal.h:34:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrameInternal.h:35:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 7 in 15 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>958982</commentid>
    <comment_count>3</comment_count>
      <attachid>219020</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2013-12-11 17:18:18 -0800</bug_when>
    <thetext>Created attachment 219020
Fix style issue, and autorelease wrapper objects before returning to caller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959020</commentid>
    <comment_count>4</comment_count>
      <attachid>219020</attachid>
    <who name="">mitz</who>
    <bug_when>2013-12-11 19:12:45 -0800</bug_when>
    <thetext>Comment on attachment 219020
Fix style issue, and autorelease wrapper objects before returning to caller.

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

Looks good! I have one substantial comment so I won’t r+, and a few style comments.

&gt; Source/WebKit2/Shared/Cocoa/APIObject.mm:157
&gt; +    case Type::BundleFrame:
&gt; +        wrapper = [WKWebProcessPlugInFrame alloc];
&gt; +        break;
&gt; +
&gt; +    case Type::BundleScriptWorld:
&gt; +        wrapper = [WKWebProcessPlugInScriptWorld alloc];
&gt; +        break;
&gt; +
&gt; +    case Type::BundleHitTestResult:
&gt; +        wrapper = [WKWebProcessPlugInHitTestResult alloc];
&gt; +        break;
&gt; +
&gt; +    case Type::BundleNodeHandle:
&gt; +        wrapper = [WKWebProcessPlugInNodeHandle alloc];
&gt; +        break;
&gt; +

We should try to keep these sorted by the API type (so BundleScriptWorld should be last in the group)

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:32
&gt; +#import &lt;Foundation/Foundation.h&gt;
&gt; +#import &lt;CoreGraphics/CoreGraphics.h&gt;
&gt; +#import &lt;JavaScriptCore/JSContextRef.h&gt;

These can also be sorted.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:41
&gt; +- (JSGlobalContextRef)jsContextForWorld:(WKWebProcessPlugInScriptWorld *)world;

I believe that we should avoid the C JavaScript API types in our Cocoa API, so this method should return a (JSContext *).

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:43
&gt; +- (JSValueRef)jsWrapperForNodeHandle:(WKWebProcessPlugInNodeHandle *)nodeHandle inWorld:(WKWebProcessPlugInScriptWorld *)world;

Similarly, this should return a (JSValue *).

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:27
&gt; +#import &quot;config.h&quot;
&gt; +#import &quot;WKWebProcessPlugInFrameInternal.h&quot;

We normally leave a blank line after the first two imports.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:34
&gt; +#if WK_API_ENABLED
&gt; +

I usually put this before the other imports (i.e. just after the blank line I mentioned). See for example WKRemoteObjectCoder.mm.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:62
&gt; +    InjectedBundleNodeHandle *injectedNodeHandle = static_cast&lt;InjectedBundleNodeHandle*&gt;(&amp;[nodeHandle _apiObject]);
&gt; +    InjectedBundleScriptWorld *injectedWorld = static_cast&lt;InjectedBundleScriptWorld*&gt;(&amp;[world _apiObject]);

We should add internal methods to WKWebProcessPlugInNodeHandle and WKWebProcessPlugInScriptWorld that return an InjectedBundleNodeHandle&amp; and an InjectedBundleScriptWorld&amp;, respectively, instead of doing the casting here.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h:37
&gt; +@property (readonly) WKWebProcessPlugInNodeHandle* nodeHandle;

The space should go on the other hand of the star.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm:30
&gt; +#import &quot;config.h&quot;
&gt; +#import &quot;WKWebProcessPlugInHitTestResultInternal.h&quot;
&gt; +#import &quot;WKWebProcessPlugInNodeHandleInternal.h&quot;
&gt; +
&gt; +#if WK_API_ENABLED

Same comments about the import block.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResultInternal.h:31
&gt; +#import &quot;WKObject.h&quot;
&gt; +#import &quot;InjectedBundleHitTestResult.h&quot;

I &lt; W

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:34
&gt; +

Probably don’t need this blank line.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h:31
&gt; +#import &quot;WKObject.h&quot;
&gt; +#import &quot;InjectedBundleNodeHandle.h&quot;

W &gt; I

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h:36
&gt; ++ (WKWebProcessPlugInScriptWorld*)world;
&gt; ++ (WKWebProcessPlugInScriptWorld*)normalWorld;

Missing spaces before the stars.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h:31
&gt; +#import &quot;WKObject.h&quot;
&gt; +#import &quot;InjectedBundleScriptWorld.h&quot;

I &lt; W</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959241</commentid>
    <comment_count>5</comment_count>
      <attachid>219020</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-12 10:53:46 -0800</bug_when>
    <thetext>Comment on attachment 219020
Fix style issue, and autorelease wrapper objects before returning to caller.

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

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:41
&gt;&gt; +- (JSGlobalContextRef)jsContextForWorld:(WKWebProcessPlugInScriptWorld *)world;
&gt; 
&gt; I believe that we should avoid the C JavaScript API types in our Cocoa API, so this method should return a (JSContext *).

Yeah, this should use the Objective-C JS API.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:42
&gt; +- (WKWebProcessPlugInHitTestResult *)hitTest:(CGPoint)point;

Can we put HitTest on the browsing controller instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959246</commentid>
    <comment_count>6</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2013-12-12 11:00:38 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 219020 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219020&amp;action=review
&gt; 
&gt; Looks good! I have one substantial comment so I won’t r+, and a few style comments.
&gt; 
&gt; &gt; Source/WebKit2/Shared/Cocoa/APIObject.mm:157
&gt; &gt; +    case Type::BundleFrame:
&gt; &gt; +        wrapper = [WKWebProcessPlugInFrame alloc];
&gt; &gt; +        break;
&gt; &gt; +
&gt; &gt; +    case Type::BundleScriptWorld:
&gt; &gt; +        wrapper = [WKWebProcessPlugInScriptWorld alloc];
&gt; &gt; +        break;
&gt; &gt; +
&gt; &gt; +    case Type::BundleHitTestResult:
&gt; &gt; +        wrapper = [WKWebProcessPlugInHitTestResult alloc];
&gt; &gt; +        break;
&gt; &gt; +
&gt; &gt; +    case Type::BundleNodeHandle:
&gt; &gt; +        wrapper = [WKWebProcessPlugInNodeHandle alloc];
&gt; &gt; +        break;
&gt; &gt; +
&gt; 
&gt; We should try to keep these sorted by the API type (so BundleScriptWorld should be last in the group)
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:32
&gt; &gt; +#import &lt;Foundation/Foundation.h&gt;
&gt; &gt; +#import &lt;CoreGraphics/CoreGraphics.h&gt;
&gt; &gt; +#import &lt;JavaScriptCore/JSContextRef.h&gt;
&gt; 
&gt; These can also be sorted.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:41
&gt; &gt; +- (JSGlobalContextRef)jsContextForWorld:(WKWebProcessPlugInScriptWorld *)world;
&gt; 
&gt; I believe that we should avoid the C JavaScript API types in our Cocoa API, so this method should return a (JSContext *).

Good point!  I will change to use JavaScript Obj C API.

Currently the caller site of jsContextForWorld still expects JavaScript C API.  For now, I will convert JSContext* to JSContextRef in there, and do the whole conversion later.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:43
&gt; &gt; +- (JSValueRef)jsWrapperForNodeHandle:(WKWebProcessPlugInNodeHandle *)nodeHandle inWorld:(WKWebProcessPlugInScriptWorld *)world;
&gt; 
&gt; Similarly, this should return a (JSValue *).
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:27
&gt; &gt; +#import &quot;config.h&quot;
&gt; &gt; +#import &quot;WKWebProcessPlugInFrameInternal.h&quot;
&gt; 
&gt; We normally leave a blank line after the first two imports.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:34
&gt; &gt; +#if WK_API_ENABLED
&gt; &gt; +
&gt; 
&gt; I usually put this before the other imports (i.e. just after the blank line I mentioned). See for example WKRemoteObjectCoder.mm.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.mm:62
&gt; &gt; +    InjectedBundleNodeHandle *injectedNodeHandle = static_cast&lt;InjectedBundleNodeHandle*&gt;(&amp;[nodeHandle _apiObject]);
&gt; &gt; +    InjectedBundleScriptWorld *injectedWorld = static_cast&lt;InjectedBundleScriptWorld*&gt;(&amp;[world _apiObject]);
&gt; 
&gt; We should add internal methods to WKWebProcessPlugInNodeHandle and WKWebProcessPlugInScriptWorld that return an InjectedBundleNodeHandle&amp; and an InjectedBundleScriptWorld&amp;, respectively, instead of doing the casting here.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.h:37
&gt; &gt; +@property (readonly) WKWebProcessPlugInNodeHandle* nodeHandle;
&gt; 
&gt; The space should go on the other hand of the star.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResult.mm:30
&gt; &gt; +#import &quot;config.h&quot;
&gt; &gt; +#import &quot;WKWebProcessPlugInHitTestResultInternal.h&quot;
&gt; &gt; +#import &quot;WKWebProcessPlugInNodeHandleInternal.h&quot;
&gt; &gt; +
&gt; &gt; +#if WK_API_ENABLED
&gt; 
&gt; Same comments about the import block.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInHitTestResultInternal.h:31
&gt; &gt; +#import &quot;WKObject.h&quot;
&gt; &gt; +#import &quot;InjectedBundleHitTestResult.h&quot;
&gt; 
&gt; I &lt; W
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:34
&gt; &gt; +
&gt; 
&gt; Probably don’t need this blank line.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandleInternal.h:31
&gt; &gt; +#import &quot;WKObject.h&quot;
&gt; &gt; +#import &quot;InjectedBundleNodeHandle.h&quot;
&gt; 
&gt; W &gt; I
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h:36
&gt; &gt; ++ (WKWebProcessPlugInScriptWorld*)world;
&gt; &gt; ++ (WKWebProcessPlugInScriptWorld*)normalWorld;
&gt; 
&gt; Missing spaces before the stars.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h:31
&gt; &gt; +#import &quot;WKObject.h&quot;
&gt; &gt; +#import &quot;InjectedBundleScriptWorld.h&quot;
&gt; 
&gt; I &lt; W</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959249</commentid>
    <comment_count>7</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2013-12-12 11:04:43 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 219020 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219020&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:41
&gt; &gt;&gt; +- (JSGlobalContextRef)jsContextForWorld:(WKWebProcessPlugInScriptWorld *)world;
&gt; &gt; 
&gt; &gt; I believe that we should avoid the C JavaScript API types in our Cocoa API, so this method should return a (JSContext *).
&gt; 
&gt; Yeah, this should use the Objective-C JS API.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFrame.h:42
&gt; &gt; +- (WKWebProcessPlugInHitTestResult *)hitTest:(CGPoint)point;
&gt; 
&gt; Can we put HitTest on the browsing controller instead?

Looks like hitTest is for a frame, not a page.  If we put in browsing controller, we will lose the ability to do hitTest on a subframe unless we change the API to something like:

[WKWebProcessPlugInBrowsingContextController hitTest:inFrame:].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959273</commentid>
    <comment_count>8</comment_count>
      <attachid>219103</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2013-12-12 11:48:16 -0800</bug_when>
    <thetext>Created attachment 219103
address review comments, using JavaScript Obj C API intend of C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959415</commentid>
    <comment_count>9</comment_count>
      <attachid>219103</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-12 17:46:14 -0800</bug_when>
    <thetext>Comment on attachment 219103
address review comments, using JavaScript Obj C API intend of C API.

Rejecting attachment 219103 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 219103, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
coa/WKWebProcessPlugInNodeHandleInternal.h
patching file Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h
patching file Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm
patching file Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorldInternal.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Dan Bernstein&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/48678025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959488</commentid>
    <comment_count>10</comment_count>
      <attachid>219159</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2013-12-12 22:42:40 -0800</bug_when>
    <thetext>Created attachment 219159
Fix a conflict in WebKit2 project file before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959497</commentid>
    <comment_count>11</comment_count>
      <attachid>219159</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-12 23:19:46 -0800</bug_when>
    <thetext>Comment on attachment 219159
Fix a conflict in WebKit2 project file before landing.

Clearing flags on attachment: 219159

Committed r160530: &lt;http://trac.webkit.org/changeset/160530&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959498</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-12 23:19:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219005</attachid>
            <date>2013-12-11 14:32:30 -0800</date>
            <delta_ts>2013-12-11 17:18:18 -0800</delta_ts>
            <desc>Add ObjC API classes for WebFrame, InjectedBundleScriptWorld, InjectedBundleHitTestResult and InjectedBundleNodeHandle.</desc>
            <filename>webkit2_injectedbundle_api.patch</filename>
            <type>text/plain</type>
            <size>47553</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDQ1MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTEyLTExICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgTmVlZCBPYmpDIEFQ
SXMgZm9yIHNvbWUgSW5qZWN0ZWRCdW5kbGUgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTYwMAorCisgICAgICAgIEFkZCBPYmpDIEFQ
SSBjbGFzc2VzIGZvciBXZWJGcmFtZSwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCwgSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0IGFuZCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvQVBJT2JqZWN0Lm1tOiBjcmVhdGVzIEFQSSB3cmFwcGVyIGZvciBXZWJGcmFtZSwgSW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZCwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0CisgICAgICAg
ICAgICAgYW5kIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS4KKyAgICAgICAgKEFQSTo6T2JqZWN0
OjpuZXdPYmplY3QpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYTogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW06IEFkZGVkLgorICAgICAg
ICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lIGpzQ29udGV4dEZvcldvcmxkOl0pOiByZXR1cm5zIHRoZSBKU0Nv
bnRleHRSZWYgZm9yIGEgU2NyaXB0V29ybGQgaW4gZnJhbWUuCisgICAgICAgICgtW1dLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lIGhpdFRlc3Q6XSk6IHJldHVybnMgaGl0VGVzdFJlc3VsdCAod2l0aCBB
UEkgdHlwZSkgZnJvbSBhIGhpdFRlc3QuCisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkZy
YW1lIGpzV3JhcHBlckZvck5vZGVIYW5kbGU6aW5Xb3JsZDpdKToKKyAgICAgICAgKC1bV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUgQVBJOjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFsLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW06IEFkZGVkLgorICAgICAgICAoLVtXS1dlYlBy
b2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCBub2RlSGFuZGxlXSk6CisgICAgICAgICgtW1dLV2ViUHJv
Y2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgQVBJOjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50
ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Q29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbTogQWRkZWQuCisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgZGVhbGxvY10pOgorICAgICAgICAoLVtXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlIEFQSTo6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVy
bmFsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRX
b3JsZC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbTogQWRkZWQuCisgICAgICAgICgr
W1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIHdvcmxkXSk6IHJldHVybnMgYSBuZXcgaXNv
bGF0ZWQgd29ybGQuCisgICAgICAgICgrW1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIG5v
cm1hbFdvcmxkXSk6IHJldHVybnMgdGhlIG1haW5UaHJlYWQgbm9ybWFsIHdvcmxkLiAKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgZGVhbGxvY10pOgorICAgICAgICAo
LVtXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCBBUEk6Ol0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorCiAyMDEz
LTEyLTExICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHBsYXRmb3JtIHNwZWNpZmljIGd1bmsgZnJvbSBXZWJVUkxSZXF1ZXN0IGFuZCBXZWJV
UkxSZXNwb25zZQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1t
CShyZXZpc2lvbiAxNjA0MzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCwxMSBAQAogI2ltcG9ydCAiV0tOYXZp
Z2F0aW9uRGF0YUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NHcm91cEludGVybmFsLmgi
CiAjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJJbnRl
cm5hbC5oIgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVJbnRlcm5hbC5oIgorI2lt
cG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCiAjaW1wb3J0
ICJXS1dlYlByb2Nlc3NQbHVnSW5JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZUludGVybmFsLmgiCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5TY3Jp
cHRXb3JsZEludGVybmFsLmgiCiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC0xMzUsNiArMTM5LDIy
IEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXAKICAgICAgICAgd3Jh
cHBlciA9IE5TQWxsb2NhdGVPYmplY3QoW1dLTlNVUkwgY2xhc3NdLCBzaXplLCBudWxscHRyKTsK
ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFR5cGU6OkJ1bmRsZUZyYW1lOgorICAgICAgICB3
cmFwcGVyID0gW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIFR5cGU6OkJ1bmRsZVNjcmlwdFdvcmxkOgorICAgICAgICB3cmFwcGVyID0g
W1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIFR5cGU6OkJ1bmRsZUhpdFRlc3RSZXN1bHQ6CisgICAgICAgIHdyYXBwZXIgPSBb
V0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCBhbGxvY107CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBUeXBlOjpCdW5kbGVOb2RlSGFuZGxlOgorICAgICAgICB3cmFwcGVyID0gW1dL
V2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgYWxsb2NdOworICAgICAgICBicmVhazsKKwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHdyYXBwZXIgPSBOU0FsbG9jYXRlT2JqZWN0KFtXS09iamVjdCBj
bGFzc10sIHNpemUsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2
MDQzNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzMyLDYgKzMzMiwxOCBAQAogCQkxQ0E4Qjk1NDEyN0M4OTE1
MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3Bl
Y3Rvck1hYy5tbSAqLzsgfTsKIAkJMUNCNzVDOTQxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdo
dC5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
Qjc1QzkzMTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRmICovOyB9OwogCQkxQ0JDOTQ1
RTE2NTE1RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkM5NDVEMTY1MTVFRDIwMEQ2OEFBRSAvKiBE
b2NrQm90dG9tLnBkZiAqLzsgfTsKKwkJMUY3NTA2QUQxODU5MTYxQzAwRUMwRkY3IC8qIFdLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUYwMTgxNkExODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJ
bkZyYW1lLm1tICovOyB9OworCQkxRjc1MDZBRTE4NTkxNjIyMDBFQzBGRjcgLyogV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFGMDE4MTZEMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5IaXRUZXN0UmVzdWx0Lm1tICovOyB9OworCQkxRjc1MDZBRjE4NTkxNjI4MDBFQzBGRjcg
LyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMDE4MTcwMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tICovOyB9OworCQkxRjc1MDZCMDE4NTkxNjJDMDBF
QzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAxODE3MzE4NThEQzE2MDBGOTI4ODQg
LyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0gKi87IH07CisJCTFGNzUwNkIxMTg1
OTE2MzcwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYwMTgxNjkxODU4REMxNTAwRjkyODg0
IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHVibGljLCApOyB9OyB9OworCQkxRjc1MDZCMjE4NTkxNjNFMDBFQzBGRjcgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUYwMTgxNkMxODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vz
c1BsdWdJbkhpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CisJCTFGNzUwNkIzMTg1OTE2NDUwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxRjAxODE2RjE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9k
ZUhhbmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
KwkJMUY3NTA2QjQxODU5MTY0QzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAx
ODE3MjE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTFGNzUwNkI1
MTg1OTE2NTQwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZEludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAxODE3
NDE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5h
bC5oICovOyB9OworCQkxRjc1MDZCNjE4NTkxNjU3MDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxRjAxODE3MTE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZUludGVybmFsLmggKi87IH07CisJCTFGNzUwNkI3MTg1OTE2NUEwMEVDMEZG
NyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMDE4MTZFMTg1OERDMTYwMEY5
Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCAqLzsgfTsK
KwkJMUY3NTA2QjgxODU5MTY1RDAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFG
MDE4MTZCMTg1OERDMTUwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFs
LmggKi87IH07CiAJCTFRUTQxN0NCMTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBs
ZXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
QzQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCAqLzsgfTsK
IAkJMVpaNDE3RUYxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQkI0MTdDOTEy
QzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcCAqLzsgfTsKIAkJMjkw
RjQyNzIxNzJBMEM3NDAwOTM5RkYwIC8qIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MEY0MjcxMTcyQTBDNzQw
MDkzOUZGMCAvKiBDaGlsZFByb2Nlc3NTdXBwbGVtZW50LmggKi87IH07CkBAIC0xODcxLDYgKzE4
ODMsMTggQEAKIAkJMUNCNzVDOTMxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdodC5wZGYgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7
IG5hbWUgPSBEb2NrUmlnaHQucGRmOyBwYXRoID0gUmVzb3VyY2VzL0RvY2tSaWdodC5wZGY7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQkM5NDVEMTY1MTVFRDIwMEQ2OEFBRSAvKiBE
b2NrQm90dG9tLnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tCb3R0b20ucGRmOyBwYXRoID0gUmVzb3VyY2Vz
L0RvY2tCb3R0b20ucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0M0MTdDOTEy
QzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxRjAxODE2OTE4NThEQzE1MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNz
UGx1Z0luRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMTgxNkEx
ODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFGMDE4MTZCMTg1OERDMTUwMEY5Mjg4NCAv
KiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMTgxNkMxODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJv
Y2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxRjAxODE2RDE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
SGl0VGVzdFJlc3VsdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFGMDE4MTZFMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5I
aXRUZXN0UmVzdWx0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFGMDE4MTZGMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUYwMTgxNzAxODU4REMxNjAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAxODE3
MTE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJbk5v
ZGVIYW5kbGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAxODE3
MjE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMTgxNzMxODU4REMxNjAwRjky
ODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFGMDE4MTc0MTg1OERDMTYwMEY5Mjg4NCAv
KiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZEludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkwRjQyNzExNzJBMEM3NDAwOTM5RkYw
IC8qIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2hpbGRQcm9jZXNzU3VwcGxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyOTNFQkVBOTE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRE9NVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyOTNFQkVBQTE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tET01UZXh0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMzY5Niw2ICszNzIwLDI1IEBACiAJCQlwYXRoID0gbWFjOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMUYwMTgxNjgxODU4REMxNTAwRjky
ODg0IC8qIENvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkxRjAxODE2OTE4NThEQzE1MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUu
aCAqLywKKwkJCQkxRjAxODE2QTE4NThEQzE1MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWUubW0gKi8sCisJCQkJMUYwMTgxNkIxODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lSW50ZXJuYWwuaCAqLywKKwkJCQkxRjAxODE2QzE4NThEQzE1MDBGOTI4ODQg
LyogV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oICovLAorCQkJCTFGMDE4MTZEMTg1
OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tICovLAor
CQkJCTFGMDE4MTZFMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0
UmVzdWx0SW50ZXJuYWwuaCAqLywKKwkJCQkxRjAxODE2RjE4NThEQzE2MDBGOTI4ODQgLyogV0tX
ZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5oICovLAorCQkJCTFGMDE4MTcwMTg1OERDMTYwMEY5
Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tICovLAorCQkJCTFGMDE4MTcx
MTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJuYWwu
aCAqLywKKwkJCQkxRjAxODE3MjE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
U2NyaXB0V29ybGQuaCAqLywKKwkJCQkxRjAxODE3MzE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0gKi8sCisJCQkJMUYwMTgxNzQxODU4REMxNjAwRjky
ODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkSW50ZXJuYWwuaCAqLywKKwkJCSk7
CisJCQlwYXRoID0gQ29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQky
OTg5QTQwRTE2N0QxODEzMDA0Rjk2RDIgLyogQ3VzdG9tUHJvdG9jb2xzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTQ4NjksNiArNDkxMiw3IEBACiAJCUJD
MjA0RUU3MTFDODNFQUQwMDhGMzM3NSAvKiBBUEkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTFGMDE4MTY4MTg1OERDMTUwMEY5Mjg4NCAvKiBDb2NvYSAq
LywKIAkJCQlCQzIwNEVFODExQzgzRUI3MDA4RjMzNzUgLyogYyAqLywKIAkJCQlCQzk4OUQ0NTE2
MTgxNjkxMDAwRDQ2RDMgLyogbWFjICovLAogCQkJKTsKQEAgLTU2MjMsMTIgKzU2NjcsMTQgQEAK
IAkJCQlCQzAzMkRBNjEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1lbnREZWNvZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1lbnRFbmNvZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkRBOTEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1l
bnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkxRjc1MDZCNTE4NTkxNjU0MDBFQzBGRjcgLyogV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxQTMxNzMyMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJGNTg5NzEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0NDVCOUYxODRENUZCNTAwNEIz
NDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTJGNTg5OTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThFOEVGOTE2QjIwOTFDMDBFOTE0MjkgLyogQXV0
aGVudGljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxRjc1MDZCNjE4NTkxNjU3
MDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJGNThBMzEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25N
YW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzA4NzcxMTZENkNGRTUwMEY5
OTIyNiAvKiBCbG9iUmVnaXN0cmF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MDg3
NkMxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmggaW4gSGVhZGVycyAqLywK
QEAgLTU3NjUsNiArNTgxMSw3IEBACiAJCQkJMUFFNDk3NjgxMUZGNjU4RTAwNDhCNDY0IC8qIE5Q
SlNPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQ3NEUyMTg0RDQ0ODAwMDUxQjYyMiAv
KiBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEODJBNTEy
N0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTFGNzUwNkI0MTg1OTE2NEMwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5TY3Jp
cHRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyRDg0M0ExMjdGNjVENTAwMUVCOTYyIC8q
IE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MkQ4MkE3MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTJEODJBOTEyN0Y0RUFCMDAxRUI5NjIgLyogTlBSZW1vdGVPYmplY3RNYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtNTgwOCw2ICs1ODU1LDcgQEAKIAkJCQkxQTJCQjZEMTE0MTE3QjREMDAw
RjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyRDkwRDIxMjgxQzk2NjAwMUVCOTYyIC8qIFBsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDNjAzMTI0QTlGMkMwMDdFRjRBNSAv
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUY3NTA2QjMxODU5
MTY0NTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMEVDNkMwMTI0QkJEOUIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDNzVFMTI0QkM3QjIwMDdFRjRBNSAvKiBQbHVn
aW5Qcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQzQjVFMTI0RDVFOUQwMEZG
QkZCNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC01
ODg2LDYgKzU5MzQsNyBAQAogCQkJCUJDNEE2MjkwMTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNjI5MjE0NzMxMkJFMDA2QzY4MUEgLyog
V2ViQ29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRkVDMUQxNjI3QjQ1
NzAwNzAwRjZEIC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUY3NTA2QjIxODU5MTYzRTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1
bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE2MkE4MTQ3NDRFQzcwMDZDNjgxQSAvKiBXZWJD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I5RTI0MzExMjBE
QUNBMDBBMTM3RTAgLyogV2ViQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBNTA1RkEx
NjgwMDI1NTAwQTkzMEVCIC8qIFdlYkNvbnRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
NTkxOCw2ICs1OTY3LDcgQEAKIAkJCQlGNkEyNUZERDEyQURDNkNDMDBEQzQwQ0MgLyogV2ViRGF0
YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjJBNzZCNzEyQjFCMjVGMDAwNUYx
QjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2
MkE3NjVEMTJCMUFCQzMwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMUY3NTA2QjExODU5MTYzNzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1Bs
dWdJbkZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUJBMzE4NEQ1RkNGMDA0QjM0MTQg
LyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUMxMTFG
MTJDOTJDMUYwMEIwOEVFRSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjYyQTc2QjkxMkIxQjI1RjAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFu
YWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTk1Niw2ICs2MDA2LDcgQEAK
IAkJCQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUIyNEE3MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29u
RGF0YWJhc2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCNDc0RUExODRENDUxMzAwNTFC
NjIyIC8qIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUY3
NTA2QjcxODU5MTY1QTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHRJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFEMDJGNkMxMzJFQzczNzAwQkVBQTk2IC8q
IFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2
QUJEMTJDOTFFRjkwMDhGOUMzNSAvKiBXZWJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4
RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCkBA
IC02MTkzLDYgKzYyNDQsNyBAQAogCQkJCUJDOEE1MDE1MTE3NjVGNTYwMDc1NzU3MyAvKiBXS1Jl
dGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYzNDQ0NUQxMkE4ODVFOTAwMDYxMkQ4IC8q
IFdLU2VjdXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA0MTI0RkYwMjcw
MDY4RjIwQSAvKiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUY3NTA2QjgxODU5MTY1RDAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2N0REN0JBMTI1RTQwRDkwMDdCRENCOCAvKiBXS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRERCMzJC
MTI0RUMyQUIwMDQ4RDEzQyAvKiBXS1NoYXJlZEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNDA3NjA2MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCkBA
IC02OTQ5LDYgKzcwMDEsNyBAQAogCQkJCUE3RDc5MkQ2MTc2N0NCNkUwMDg4MUNCRSAvKiBBY3Rp
dml0eUFzc2VydGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNjM0MDNGOTE0OTEwRDU3MDAx
MDcwQjUgLyogQVBJT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBM0Q2MTA1MTNBN0Yw
M0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxRjc1
MDZBRTE4NTkxNjIyMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFBQUYwQzRCMTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVu
dENvZGVyc0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzlGRDlGMTM0RDM4MjUwMDE1Qjg4
MyAvKiBBcmd1bWVudENvZGVyc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRTAwRDYwMTgz
MTc5MjEwMDA4N0RENyAvKiBGcmFtZUxvYWRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTcx
ODcsNiArNzI0MCw3IEBACiAJCQkJNTE1RTc3MkIxODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNl
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTY0MjBF
NDEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUMwMUEyNjAxMTI2NjJGMjEwMEM5RUQ1NSAvKiBTaGFyZWFibGVCaXRtYXBDRy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxRjc1MDZBRjE4NTkxNjI4MDBFQzBGRjcgLyogV0tXZWJQcm9jZXNz
UGx1Z0luTm9kZUhhbmRsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMjE3NDYwMTY0QzIwRTMw
MDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTI0
QkYzQTEyMDg5NkE2MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUyNzJCMjhBMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTczNDgsNiArNzQwMiw3IEBACiAJCQkJQzBDRTcyQTAxMjQ3RTcxRDAw
QkMwRUM0IC8qIFdlYlBhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkMxMTFCMEYxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlBhZ2VQcm94eS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUIzMDA1MTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMUY3NTA2QUQxODU5MTYxQzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4NTdFODcxMkI3MUVCQjAwRURF
QjJFIC8qIFdlYlBhZ2VQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQkQzOTE0MTI1
QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUEzRTczNjIxMUNDMjY1OTAwN0JENTM5IC8qIFdlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTczNjksNiArNzQyNCw3IEBACiAJCQkJMUEwNDNB
MEExMjREMTFBOTAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMDQzRjY5MTI1MTREOEIwMEZGQkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzMwNjgyNTEyNUE2Qjk0
MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkxRjc1MDZCMDE4NTkxNjJDMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2Ny
aXB0V29ybGQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3NUU3NDlFQjE4MERCQjk4MDAwODhCQTYg
LyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzMwNjVDNDEyNTkyRjg5MDBFNzEyNzggLyogV2ViUHJvY2Vzc01hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDMzA2NkJFMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNz
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJh
bWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9F
TkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8Q29y
ZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250
ZXh0UmVmLmg+CisKK0BjbGFzcyBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0OworQGNs
YXNzIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGU7CitAY2xhc3MgV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQ7CisKK1dLX0FQSV9DTEFTUworQGludGVyZmFjZSBXS1dlYlByb2Nlc3NQ
bHVnSW5GcmFtZSA6IE5TT2JqZWN0CisKKy0gKEpTR2xvYmFsQ29udGV4dFJlZilqc0NvbnRleHRG
b3JXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZDsKKy0gKFdLV2Vi
UHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgKiloaXRUZXN0OihDR1BvaW50KXBvaW50OworLSAo
SlNWYWx1ZVJlZilqc1dyYXBwZXJGb3JOb2RlSGFuZGxlOihXS1dlYlByb2Nlc3NQbHVnSW5Ob2Rl
SGFuZGxlICopbm9kZUhhbmRsZSBpbldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3Js
ZCAqKXdvcmxkOworCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0JKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFsLmgiCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVn
SW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLV2ViUHJvY2Vzc1BsdWdJbk5v
ZGVIYW5kbGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGRJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9JbnRQb2ludC5oPgorCisjaWYgV0tfQVBJ
X0VOQUJMRUQKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworQGltcGxlbWVudGF0aW9uIFdL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lIHsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViRnJhbWU+
IF9mcmFtZTsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX2ZyYW1lLT5+V2ViRnJhbWUo
KTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKEpTR2xvYmFsQ29udGV4dFJlZilqc0Nv
bnRleHRGb3JXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZAorewor
ICAgIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQgKmluamVjdGVkV29ybGQgPSBzdGF0aWNfY2Fz
dDxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKj4oJlt3b3JsZCBfYXBpT2JqZWN0XSk7CisgICAg
cmV0dXJuIF9mcmFtZS0+anNDb250ZXh0Rm9yV29ybGQoaW5qZWN0ZWRXb3JsZCk7Cit9CisKKy0g
KFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgKiloaXRUZXN0OihDR1BvaW50KXBvaW50
Cit7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3Vs
dCA9IF9mcmFtZS0+aGl0VGVzdChXZWJDb3JlOjpJbnRQb2ludChwb2ludCkpOworICAgIHJldHVy
biB3cmFwcGVyKCpoaXRUZXN0UmVzdWx0LnJlbGVhc2UoKS5sZWFrUmVmKCkpOworfQorCistIChK
U1ZhbHVlUmVmKWpzV3JhcHBlckZvck5vZGVIYW5kbGU6KFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUgKilub2RlSGFuZGxlIGluV29ybGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxk
ICopd29ybGQKK3sKKyAgICBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUgKmluamVjdGVkTm9kZUhh
bmRsZSA9IHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSo+KCZbbm9kZUhhbmRs
ZSBfYXBpT2JqZWN0XSk7CisgICAgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCAqaW5qZWN0ZWRX
b3JsZCA9IHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqPigmW3dvcmxkIF9h
cGlPYmplY3RdKTsKKyAgICByZXR1cm4gX2ZyYW1lLT5qc1dyYXBwZXJGb3JXb3JsZChpbmplY3Rl
ZE5vZGVIYW5kbGUsIGluamVjdGVkV29ybGQpOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3Qg
cHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sK
KyAgICByZXR1cm4gKl9mcmFtZTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJM
RUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nl
c3NQbHVnSW5GcmFtZUludGVybmFsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFt
ZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgIldLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmgiCisKKyNpZiBXS19BUElfRU5BQkxF
RAorCisjaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luRnJh
bWUuaCIKKyNpbXBvcnQgIldlYkZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworaW5saW5l
IFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICp3cmFwcGVyKFdlYkZyYW1lJiBmcmFtZSkgeyBBU1NF
UlQoW2ZyYW1lLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltXS1dlYlByb2Nlc3NQbHVnSW5GcmFt
ZSBjbGFzc11dKTsgcmV0dXJuIChXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lLndyYXBw
ZXIoKTsgfQorfQorCitAaW50ZXJmYWNlIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICgpIDxXS09i
amVjdD4KK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVn
SW5IaXRUZXN0UmVzdWx0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3Vs
dC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQyL1dL
Rm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisKK0BjbGFzcyBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlOwor
CitXS19BUElfQ0xBU1MKK0BpbnRlcmZhY2UgV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3Vs
dCA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIFdLV2ViUHJvY2Vzc1BsdWdJbk5v
ZGVIYW5kbGUqIG5vZGVIYW5kbGU7CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVE
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2Nv
YS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbkhpdFRlc3RSZXN1bHQubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRU
ZXN0UmVzdWx0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RS
ZXN1bHRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUlu
dGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OworCitAaW1wbGVtZW50YXRpb24gV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCB7Cisg
ICAgQVBJOjpPYmplY3RTdG9yYWdlPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gX2hpdFRl
c3RSZXN1bHQ7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9oaXRUZXN0UmVzdWx0LT5+
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQor
CistIChXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICopbm9kZUhhbmRsZQoreworICAgIFJl
ZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBfaGl0VGVzdFJlc3Vs
dC0+bm9kZUhhbmRsZSgpOworICAgIHJldHVybiB3cmFwcGVyKCpub2RlSGFuZGxlLnJlbGVhc2Uo
KS5sZWFrUmVmKCkpOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVt
ZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9o
aXRUZXN0UmVzdWx0OworfQorCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdEludGVybmFsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQ
bHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3Vs
dC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiV0tPYmplY3QuaCIKKyNpbXBv
cnQgIkluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KyAgICBpbmxpbmUgV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAqd3JhcHBlcihJbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQpIHsgQVNTRVJUKFtoaXRUZXN0
UmVzdWx0LndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0
UmVzdWx0IGNsYXNzXV0pOyByZXR1cm4gKFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQg
KiloaXRUZXN0UmVzdWx0LndyYXBwZXIoKTsgfQorfQorCitAaW50ZXJmYWNlIFdLV2ViUHJvY2Vz
c1BsdWdJbkhpdFRlc3RSZXN1bHQgKCkgPFdLT2JqZWN0PgorQGVuZAorCisjZW5kaWYgLy8gV0tf
QVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgPFdlYktpdDIvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAor
CisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworV0tfQVBJX0NMQVNTCitAaW50
ZXJmYWNlIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgOiBOU09iamVjdAorCitAZW5kCisK
KyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1dlYlByb2Nl
c3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBXS1dlYlByb2Nlc3NQbHVn
SW5Ob2RlSGFuZGxlIHsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8SW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlPiBfbm9kZUhhbmRsZTsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX25vZGVI
YW5kbGUtPn5JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107
Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCist
IChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX25vZGVIYW5kbGU7Cit9
CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxl
SW50ZXJuYWwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGVJbnRlcm5h
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAor
CisjaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworICAgIGlubGluZSBXS1dlYlByb2Nlc3NQbHVnSW5O
b2RlSGFuZGxlICp3cmFwcGVyKEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSYgbm9kZUhhbmRsZSkg
eyBBU1NFUlQoW25vZGVIYW5kbGUud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W1dLV2ViUHJvY2Vz
c1BsdWdJbk5vZGVIYW5kbGUgY2xhc3NdXSk7IHJldHVybiAoV0tXZWJQcm9jZXNzUGx1Z0luTm9k
ZUhhbmRsZSAqKW5vZGVIYW5kbGUud3JhcHBlcigpOyB9Cit9CisKK0BpbnRlcmZhY2UgV0tXZWJQ
cm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAoKSA8V0tPYmplY3Q+CitAZW5kCisKKyNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9X
S1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFC
TEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitXS19BUElfQ0xBU1MK
K0BpbnRlcmZhY2UgV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgOiBOU09iamVjdAorCisr
IChXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCopd29ybGQ7CisrIChXS1dlYlByb2Nlc3NQ
bHVnSW5TY3JpcHRXb3JsZCopbm9ybWFsV29ybGQ7CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQ
SV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dl
YlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJ
blNjcmlwdFdvcmxkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLV2ViUHJvY2Vzc1BsdWdJblNjcmlw
dFdvcmxkSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3Js
ZCB7CisgICAgQVBJOjpPYmplY3RTdG9yYWdlPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IF93
b3JsZDsKK30KKworKyAoV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZAorewor
ICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiBzY3JpcHRXb3JsZCA9IEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZSgpOworICAgIHJldHVybiB3cmFwcGVyKCpzY3Jp
cHRXb3JsZC5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KKworKyAoV0tXZWJQcm9jZXNzUGx1Z0lu
U2NyaXB0V29ybGQgKilub3JtYWxXb3JsZAoreworICAgIHJldHVybiB3cmFwcGVyKCpJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpKTsKK30KKworLSAodm9pZClkZWFsbG9j
Cit7CisgICAgX3dvcmxkLT5+SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCgpOworICAgIFtzdXBl
ciBkZWFsbG9jXTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVu
dGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfd29y
bGQ7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQ
bHVnSW5TY3JpcHRXb3JsZEludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2Ny
aXB0V29ybGRJbnRlcm5hbC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5oIgorCisjaWYgV0tfQVBJ
X0VOQUJMRUQKKworI2ltcG9ydCAiV0tPYmplY3QuaCIKKyNpbXBvcnQgIkluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisgICAgaW5saW5lIFdLV2ViUHJv
Y2Vzc1BsdWdJblNjcmlwdFdvcmxkICp3cmFwcGVyKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQm
IHdvcmxkKSB7IEFTU0VSVChbd29ybGQud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W1dLV2ViUHJv
Y2Vzc1BsdWdJblNjcmlwdFdvcmxkIGNsYXNzXV0pOyByZXR1cm4gKFdLV2ViUHJvY2Vzc1BsdWdJ
blNjcmlwdFdvcmxkICopd29ybGQud3JhcHBlcigpOyB9Cit9CisKK0BpbnRlcmZhY2UgV0tXZWJQ
cm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKCkgPFdLT2JqZWN0PgorQGVuZAorCisjZW5kaWYgLy8g
V0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219020</attachid>
            <date>2013-12-11 17:18:18 -0800</date>
            <delta_ts>2013-12-12 11:48:16 -0800</delta_ts>
            <desc>Fix style issue, and autorelease wrapper objects before returning to caller.</desc>
            <filename>webkit2_injectedbundle_api.patch</filename>
            <type>text/plain</type>
            <size>47658</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDQ1MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTEyLTExICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgTmVlZCBPYmpDIEFQ
SXMgZm9yIHNvbWUgSW5qZWN0ZWRCdW5kbGUgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTYwMAorCisgICAgICAgIEFkZCBPYmpDIEFQ
SSBjbGFzc2VzIGZvciBXZWJGcmFtZSwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCwgSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0IGFuZCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvQVBJT2JqZWN0Lm1tOiBjcmVhdGVzIEFQSSB3cmFwcGVyIGZvciBXZWJGcmFtZSwgSW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZCwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0CisgICAgICAg
ICAgICAgYW5kIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS4KKyAgICAgICAgKEFQSTo6T2JqZWN0
OjpuZXdPYmplY3QpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYTogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW06IEFkZGVkLgorICAgICAg
ICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lIGpzQ29udGV4dEZvcldvcmxkOl0pOiByZXR1cm5zIHRoZSBKU0Nv
bnRleHRSZWYgZm9yIGEgU2NyaXB0V29ybGQgaW4gZnJhbWUuCisgICAgICAgICgtW1dLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lIGhpdFRlc3Q6XSk6IHJldHVybnMgaGl0VGVzdFJlc3VsdCAod2l0aCBB
UEkgdHlwZSkgZnJvbSBhIGhpdFRlc3QuCisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkZy
YW1lIGpzV3JhcHBlckZvck5vZGVIYW5kbGU6aW5Xb3JsZDpdKToKKyAgICAgICAgKC1bV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUgQVBJOjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFsLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW06IEFkZGVkLgorICAgICAgICAoLVtXS1dlYlBy
b2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCBub2RlSGFuZGxlXSk6CisgICAgICAgICgtW1dLV2ViUHJv
Y2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgQVBJOjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50
ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Q29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbTogQWRkZWQuCisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgZGVhbGxvY10pOgorICAgICAgICAoLVtXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlIEFQSTo6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVy
bmFsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRX
b3JsZC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbTogQWRkZWQuCisgICAgICAgICgr
W1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIHdvcmxkXSk6IHJldHVybnMgYSBuZXcgaXNv
bGF0ZWQgd29ybGQuCisgICAgICAgICgrW1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIG5v
cm1hbFdvcmxkXSk6IHJldHVybnMgdGhlIG1haW5UaHJlYWQgbm9ybWFsIHdvcmxkLiAKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgZGVhbGxvY10pOgorICAgICAgICAo
LVtXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCBBUEk6Ol0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorCiAyMDEz
LTEyLTExICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHBsYXRmb3JtIHNwZWNpZmljIGd1bmsgZnJvbSBXZWJVUkxSZXF1ZXN0IGFuZCBXZWJV
UkxSZXNwb25zZQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1t
CShyZXZpc2lvbiAxNjA0MzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCwxMSBAQAogI2ltcG9ydCAiV0tOYXZp
Z2F0aW9uRGF0YUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NHcm91cEludGVybmFsLmgi
CiAjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJJbnRl
cm5hbC5oIgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVJbnRlcm5hbC5oIgorI2lt
cG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCiAjaW1wb3J0
ICJXS1dlYlByb2Nlc3NQbHVnSW5JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZUludGVybmFsLmgiCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5TY3Jp
cHRXb3JsZEludGVybmFsLmgiCiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC0xMzUsNiArMTM5LDIy
IEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXAKICAgICAgICAgd3Jh
cHBlciA9IE5TQWxsb2NhdGVPYmplY3QoW1dLTlNVUkwgY2xhc3NdLCBzaXplLCBudWxscHRyKTsK
ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFR5cGU6OkJ1bmRsZUZyYW1lOgorICAgICAgICB3
cmFwcGVyID0gW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIFR5cGU6OkJ1bmRsZVNjcmlwdFdvcmxkOgorICAgICAgICB3cmFwcGVyID0g
W1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIFR5cGU6OkJ1bmRsZUhpdFRlc3RSZXN1bHQ6CisgICAgICAgIHdyYXBwZXIgPSBb
V0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCBhbGxvY107CisgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBUeXBlOjpCdW5kbGVOb2RlSGFuZGxlOgorICAgICAgICB3cmFwcGVyID0gW1dL
V2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgYWxsb2NdOworICAgICAgICBicmVhazsKKwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHdyYXBwZXIgPSBOU0FsbG9jYXRlT2JqZWN0KFtXS09iamVjdCBj
bGFzc10sIHNpemUsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2
MDQzNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzMyLDYgKzMzMiwxOCBAQAogCQkxQ0E4Qjk1NDEyN0M4OTE1
MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3Bl
Y3Rvck1hYy5tbSAqLzsgfTsKIAkJMUNCNzVDOTQxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdo
dC5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
Qjc1QzkzMTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRmICovOyB9OwogCQkxQ0JDOTQ1
RTE2NTE1RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkM5NDVEMTY1MTVFRDIwMEQ2OEFBRSAvKiBE
b2NrQm90dG9tLnBkZiAqLzsgfTsKKwkJMUY3NTA2QUQxODU5MTYxQzAwRUMwRkY3IC8qIFdLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUYwMTgxNkExODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJ
bkZyYW1lLm1tICovOyB9OworCQkxRjc1MDZBRTE4NTkxNjIyMDBFQzBGRjcgLyogV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFGMDE4MTZEMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5IaXRUZXN0UmVzdWx0Lm1tICovOyB9OworCQkxRjc1MDZBRjE4NTkxNjI4MDBFQzBGRjcg
LyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMDE4MTcwMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tICovOyB9OworCQkxRjc1MDZCMDE4NTkxNjJDMDBF
QzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAxODE3MzE4NThEQzE2MDBGOTI4ODQg
LyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0gKi87IH07CisJCTFGNzUwNkIxMTg1
OTE2MzcwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYwMTgxNjkxODU4REMxNTAwRjkyODg0
IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHVibGljLCApOyB9OyB9OworCQkxRjc1MDZCMjE4NTkxNjNFMDBFQzBGRjcgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUYwMTgxNkMxODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vz
c1BsdWdJbkhpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CisJCTFGNzUwNkIzMTg1OTE2NDUwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxRjAxODE2RjE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9k
ZUhhbmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
KwkJMUY3NTA2QjQxODU5MTY0QzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAx
ODE3MjE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTFGNzUwNkI1
MTg1OTE2NTQwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZEludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAxODE3
NDE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5h
bC5oICovOyB9OworCQkxRjc1MDZCNjE4NTkxNjU3MDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxRjAxODE3MTE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZUludGVybmFsLmggKi87IH07CisJCTFGNzUwNkI3MTg1OTE2NUEwMEVDMEZG
NyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMDE4MTZFMTg1OERDMTYwMEY5
Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCAqLzsgfTsK
KwkJMUY3NTA2QjgxODU5MTY1RDAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFG
MDE4MTZCMTg1OERDMTUwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFs
LmggKi87IH07CiAJCTFRUTQxN0NCMTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBs
ZXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
QzQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCAqLzsgfTsK
IAkJMVpaNDE3RUYxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQkI0MTdDOTEy
QzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcCAqLzsgfTsKIAkJMjkw
RjQyNzIxNzJBMEM3NDAwOTM5RkYwIC8qIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MEY0MjcxMTcyQTBDNzQw
MDkzOUZGMCAvKiBDaGlsZFByb2Nlc3NTdXBwbGVtZW50LmggKi87IH07CkBAIC0xODcxLDYgKzE4
ODMsMTggQEAKIAkJMUNCNzVDOTMxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdodC5wZGYgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7
IG5hbWUgPSBEb2NrUmlnaHQucGRmOyBwYXRoID0gUmVzb3VyY2VzL0RvY2tSaWdodC5wZGY7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQkM5NDVEMTY1MTVFRDIwMEQ2OEFBRSAvKiBE
b2NrQm90dG9tLnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tCb3R0b20ucGRmOyBwYXRoID0gUmVzb3VyY2Vz
L0RvY2tCb3R0b20ucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0M0MTdDOTEy
QzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxRjAxODE2OTE4NThEQzE1MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNz
UGx1Z0luRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMTgxNkEx
ODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFGMDE4MTZCMTg1OERDMTUwMEY5Mjg4NCAv
KiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMTgxNkMxODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJv
Y2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxRjAxODE2RDE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
SGl0VGVzdFJlc3VsdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFGMDE4MTZFMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5I
aXRUZXN0UmVzdWx0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFGMDE4MTZGMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUYwMTgxNzAxODU4REMxNjAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAxODE3
MTE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJbk5v
ZGVIYW5kbGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAxODE3
MjE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMTgxNzMxODU4REMxNjAwRjky
ODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFGMDE4MTc0MTg1OERDMTYwMEY5Mjg4NCAv
KiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZEludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkwRjQyNzExNzJBMEM3NDAwOTM5RkYw
IC8qIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2hpbGRQcm9jZXNzU3VwcGxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyOTNFQkVBOTE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRE9NVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyOTNFQkVBQTE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tET01UZXh0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMzY5Niw2ICszNzIwLDI1IEBACiAJCQlwYXRoID0gbWFjOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMUYwMTgxNjgxODU4REMxNTAwRjky
ODg0IC8qIENvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkxRjAxODE2OTE4NThEQzE1MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUu
aCAqLywKKwkJCQkxRjAxODE2QTE4NThEQzE1MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWUubW0gKi8sCisJCQkJMUYwMTgxNkIxODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lSW50ZXJuYWwuaCAqLywKKwkJCQkxRjAxODE2QzE4NThEQzE1MDBGOTI4ODQg
LyogV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oICovLAorCQkJCTFGMDE4MTZEMTg1
OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tICovLAor
CQkJCTFGMDE4MTZFMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0
UmVzdWx0SW50ZXJuYWwuaCAqLywKKwkJCQkxRjAxODE2RjE4NThEQzE2MDBGOTI4ODQgLyogV0tX
ZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5oICovLAorCQkJCTFGMDE4MTcwMTg1OERDMTYwMEY5
Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tICovLAorCQkJCTFGMDE4MTcx
MTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJuYWwu
aCAqLywKKwkJCQkxRjAxODE3MjE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
U2NyaXB0V29ybGQuaCAqLywKKwkJCQkxRjAxODE3MzE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0gKi8sCisJCQkJMUYwMTgxNzQxODU4REMxNjAwRjky
ODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkSW50ZXJuYWwuaCAqLywKKwkJCSk7
CisJCQlwYXRoID0gQ29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQky
OTg5QTQwRTE2N0QxODEzMDA0Rjk2RDIgLyogQ3VzdG9tUHJvdG9jb2xzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTQ4NjksNiArNDkxMiw3IEBACiAJCUJD
MjA0RUU3MTFDODNFQUQwMDhGMzM3NSAvKiBBUEkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTFGMDE4MTY4MTg1OERDMTUwMEY5Mjg4NCAvKiBDb2NvYSAq
LywKIAkJCQlCQzIwNEVFODExQzgzRUI3MDA4RjMzNzUgLyogYyAqLywKIAkJCQlCQzk4OUQ0NTE2
MTgxNjkxMDAwRDQ2RDMgLyogbWFjICovLAogCQkJKTsKQEAgLTU2MjMsMTIgKzU2NjcsMTQgQEAK
IAkJCQlCQzAzMkRBNjEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1lbnREZWNvZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1lbnRFbmNvZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkRBOTEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1l
bnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkxRjc1MDZCNTE4NTkxNjU0MDBFQzBGRjcgLyogV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxQTMxNzMyMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJGNTg5NzEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0NDVCOUYxODRENUZCNTAwNEIz
NDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTJGNTg5OTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThFOEVGOTE2QjIwOTFDMDBFOTE0MjkgLyogQXV0
aGVudGljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxRjc1MDZCNjE4NTkxNjU3
MDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJGNThBMzEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25N
YW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzA4NzcxMTZENkNGRTUwMEY5
OTIyNiAvKiBCbG9iUmVnaXN0cmF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MDg3
NkMxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmggaW4gSGVhZGVycyAqLywK
QEAgLTU3NjUsNiArNTgxMSw3IEBACiAJCQkJMUFFNDk3NjgxMUZGNjU4RTAwNDhCNDY0IC8qIE5Q
SlNPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQ3NEUyMTg0RDQ0ODAwMDUxQjYyMiAv
KiBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEODJBNTEy
N0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTFGNzUwNkI0MTg1OTE2NEMwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5TY3Jp
cHRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyRDg0M0ExMjdGNjVENTAwMUVCOTYyIC8q
IE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MkQ4MkE3MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTJEODJBOTEyN0Y0RUFCMDAxRUI5NjIgLyogTlBSZW1vdGVPYmplY3RNYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtNTgwOCw2ICs1ODU1LDcgQEAKIAkJCQkxQTJCQjZEMTE0MTE3QjREMDAw
RjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyRDkwRDIxMjgxQzk2NjAwMUVCOTYyIC8qIFBsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDNjAzMTI0QTlGMkMwMDdFRjRBNSAv
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUY3NTA2QjMxODU5
MTY0NTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMEVDNkMwMTI0QkJEOUIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDNzVFMTI0QkM3QjIwMDdFRjRBNSAvKiBQbHVn
aW5Qcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQzQjVFMTI0RDVFOUQwMEZG
QkZCNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC01
ODg2LDYgKzU5MzQsNyBAQAogCQkJCUJDNEE2MjkwMTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNjI5MjE0NzMxMkJFMDA2QzY4MUEgLyog
V2ViQ29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRkVDMUQxNjI3QjQ1
NzAwNzAwRjZEIC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUY3NTA2QjIxODU5MTYzRTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1
bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE2MkE4MTQ3NDRFQzcwMDZDNjgxQSAvKiBXZWJD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I5RTI0MzExMjBE
QUNBMDBBMTM3RTAgLyogV2ViQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBNTA1RkEx
NjgwMDI1NTAwQTkzMEVCIC8qIFdlYkNvbnRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
NTkxOCw2ICs1OTY3LDcgQEAKIAkJCQlGNkEyNUZERDEyQURDNkNDMDBEQzQwQ0MgLyogV2ViRGF0
YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjJBNzZCNzEyQjFCMjVGMDAwNUYx
QjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2
MkE3NjVEMTJCMUFCQzMwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMUY3NTA2QjExODU5MTYzNzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1Bs
dWdJbkZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUJBMzE4NEQ1RkNGMDA0QjM0MTQg
LyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUMxMTFG
MTJDOTJDMUYwMEIwOEVFRSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjYyQTc2QjkxMkIxQjI1RjAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFu
YWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTk1Niw2ICs2MDA2LDcgQEAK
IAkJCQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUIyNEE3MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29u
RGF0YWJhc2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCNDc0RUExODRENDUxMzAwNTFC
NjIyIC8qIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUY3
NTA2QjcxODU5MTY1QTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHRJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFEMDJGNkMxMzJFQzczNzAwQkVBQTk2IC8q
IFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2
QUJEMTJDOTFFRjkwMDhGOUMzNSAvKiBXZWJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4
RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCkBA
IC02MTkzLDYgKzYyNDQsNyBAQAogCQkJCUJDOEE1MDE1MTE3NjVGNTYwMDc1NzU3MyAvKiBXS1Jl
dGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYzNDQ0NUQxMkE4ODVFOTAwMDYxMkQ4IC8q
IFdLU2VjdXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA0MTI0RkYwMjcw
MDY4RjIwQSAvKiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUY3NTA2QjgxODU5MTY1RDAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2N0REN0JBMTI1RTQwRDkwMDdCRENCOCAvKiBXS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRERCMzJC
MTI0RUMyQUIwMDQ4RDEzQyAvKiBXS1NoYXJlZEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNDA3NjA2MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCkBA
IC02OTQ5LDYgKzcwMDEsNyBAQAogCQkJCUE3RDc5MkQ2MTc2N0NCNkUwMDg4MUNCRSAvKiBBY3Rp
dml0eUFzc2VydGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNjM0MDNGOTE0OTEwRDU3MDAx
MDcwQjUgLyogQVBJT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBM0Q2MTA1MTNBN0Yw
M0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxRjc1
MDZBRTE4NTkxNjIyMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFBQUYwQzRCMTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVu
dENvZGVyc0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzlGRDlGMTM0RDM4MjUwMDE1Qjg4
MyAvKiBBcmd1bWVudENvZGVyc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRTAwRDYwMTgz
MTc5MjEwMDA4N0RENyAvKiBGcmFtZUxvYWRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTcx
ODcsNiArNzI0MCw3IEBACiAJCQkJNTE1RTc3MkIxODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNl
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTY0MjBF
NDEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUMwMUEyNjAxMTI2NjJGMjEwMEM5RUQ1NSAvKiBTaGFyZWFibGVCaXRtYXBDRy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxRjc1MDZBRjE4NTkxNjI4MDBFQzBGRjcgLyogV0tXZWJQcm9jZXNz
UGx1Z0luTm9kZUhhbmRsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMjE3NDYwMTY0QzIwRTMw
MDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTI0
QkYzQTEyMDg5NkE2MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUyNzJCMjhBMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTczNDgsNiArNzQwMiw3IEBACiAJCQkJQzBDRTcyQTAxMjQ3RTcxRDAw
QkMwRUM0IC8qIFdlYlBhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkMxMTFCMEYxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlBhZ2VQcm94eS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUIzMDA1MTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMUY3NTA2QUQxODU5MTYxQzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4NTdFODcxMkI3MUVCQjAwRURF
QjJFIC8qIFdlYlBhZ2VQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQkQzOTE0MTI1
QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUEzRTczNjIxMUNDMjY1OTAwN0JENTM5IC8qIFdlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTczNjksNiArNzQyNCw3IEBACiAJCQkJMUEwNDNB
MEExMjREMTFBOTAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMDQzRjY5MTI1MTREOEIwMEZGQkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzMwNjgyNTEyNUE2Qjk0
MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkxRjc1MDZCMDE4NTkxNjJDMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2Ny
aXB0V29ybGQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3NUU3NDlFQjE4MERCQjk4MDAwODhCQTYg
LyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzMwNjVDNDEyNTkyRjg5MDBFNzEyNzggLyogV2ViUHJvY2Vzc01hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDMzA2NkJFMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNz
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJh
bWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9F
TkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8Q29y
ZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250
ZXh0UmVmLmg+CisKK0BjbGFzcyBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0OworQGNs
YXNzIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGU7CitAY2xhc3MgV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQ7CisKK1dLX0FQSV9DTEFTUworQGludGVyZmFjZSBXS1dlYlByb2Nlc3NQ
bHVnSW5GcmFtZSA6IE5TT2JqZWN0CisKKy0gKEpTR2xvYmFsQ29udGV4dFJlZilqc0NvbnRleHRG
b3JXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZDsKKy0gKFdLV2Vi
UHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgKiloaXRUZXN0OihDR1BvaW50KXBvaW50OworLSAo
SlNWYWx1ZVJlZilqc1dyYXBwZXJGb3JOb2RlSGFuZGxlOihXS1dlYlByb2Nlc3NQbHVnSW5Ob2Rl
SGFuZGxlICopbm9kZUhhbmRsZSBpbldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3Js
ZCAqKXdvcmxkOworCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0JKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFsLmgiCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVn
SW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLV2ViUHJvY2Vzc1BsdWdJbk5v
ZGVIYW5kbGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGRJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9JbnRQb2ludC5oPgorCisjaWYgV0tfQVBJ
X0VOQUJMRUQKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworQGltcGxlbWVudGF0aW9uIFdL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lIHsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViRnJhbWU+
IF9mcmFtZTsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX2ZyYW1lLT5+V2ViRnJhbWUo
KTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKEpTR2xvYmFsQ29udGV4dFJlZilqc0Nv
bnRleHRGb3JXb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZAorewor
ICAgIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQgKmluamVjdGVkV29ybGQgPSBzdGF0aWNfY2Fz
dDxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKj4oJlt3b3JsZCBfYXBpT2JqZWN0XSk7CisgICAg
cmV0dXJuIF9mcmFtZS0+anNDb250ZXh0Rm9yV29ybGQoaW5qZWN0ZWRXb3JsZCk7Cit9CisKKy0g
KFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgKiloaXRUZXN0OihDR1BvaW50KXBvaW50
Cit7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gaGl0VGVzdFJlc3Vs
dCA9IF9mcmFtZS0+aGl0VGVzdChXZWJDb3JlOjpJbnRQb2ludChwb2ludCkpOworICAgIHJldHVy
biBbd3JhcHBlcigqaGl0VGVzdFJlc3VsdC5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFz
ZV07Cit9CisKKy0gKEpTVmFsdWVSZWYpanNXcmFwcGVyRm9yTm9kZUhhbmRsZTooV0tXZWJQcm9j
ZXNzUGx1Z0luTm9kZUhhbmRsZSAqKW5vZGVIYW5kbGUgaW5Xb3JsZDooV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQgKil3b3JsZAoreworICAgIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSAq
aW5qZWN0ZWROb2RlSGFuZGxlID0gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
Kj4oJltub2RlSGFuZGxlIF9hcGlPYmplY3RdKTsKKyAgICBJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkICppbmplY3RlZFdvcmxkID0gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZCo+KCZbd29ybGQgX2FwaU9iamVjdF0pOworICAgIHJldHVybiBfZnJhbWUtPmpzV3JhcHBlckZv
cldvcmxkKGluamVjdGVkTm9kZUhhbmRsZSwgaW5qZWN0ZWRXb3JsZCk7Cit9CisKKyNwcmFnbWEg
bWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYp
X2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2ZyYW1lOworfQorCitAZW5kCisKKyNlbmRpZiAv
LyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVJbnRlcm5hbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50ZXJuYWwuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaCIKKworI2lm
IFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJXS1dlYlBy
b2Nlc3NQbHVnSW5GcmFtZS5oIgorI2ltcG9ydCAiV2ViRnJhbWUuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2lubGluZSBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqd3JhcHBlcihXZWJGcmFt
ZSYgZnJhbWUpCit7CisgICAgQVNTRVJUKFtmcmFtZS53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpb
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgY2xhc3NdXSk7CisgICAgcmV0dXJuIChXS1dlYlByb2Nl
c3NQbHVnSW5GcmFtZSAqKWZyYW1lLndyYXBwZXIoKTsgfQorfQorCitAaW50ZXJmYWNlIFdLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lICgpIDxXS09iamVjdD4KK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQ
SV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1
Z0luSGl0VGVzdFJlc3VsdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VO
QUJMRUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK0BjbGFzcyBXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlOworCitXS19BUElfQ0xBU1MKK0BpbnRlcmZhY2UgV0tX
ZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eSAocmVh
ZG9ubHkpIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUqIG5vZGVIYW5kbGU7CisKK0BlbmQK
KworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVz
dWx0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW0JKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IldLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tX
ZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5BQkxF
RAorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW1wbGVtZW50YXRpb24gV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCB7CisgICAgQVBJOjpPYmplY3RTdG9yYWdlPEluamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdD4gX2hpdFRlc3RSZXN1bHQ7Cit9CisKKy0gKHZvaWQpZGVhbGxv
YworeworICAgIF9oaXRUZXN0UmVzdWx0LT5+SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KCk7
CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFu
ZGxlICopbm9kZUhhbmRsZQoreworICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+
IG5vZGVIYW5kbGUgPSBfaGl0VGVzdFJlc3VsdC0+bm9kZUhhbmRsZSgpOworICAgIHJldHVybiBb
d3JhcHBlcigqbm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07Cit9
CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChB
UEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2hpdFRlc3RSZXN1bHQ7Cit9
CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5I
aXRUZXN0UmVzdWx0SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0
UmVzdWx0SW50ZXJuYWwuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1
bHRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0LmgiCisKKyNpZiBXS19B
UElfRU5BQkxFRAorCisjaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCAiSW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgV0tXZWJQ
cm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAqd3JhcHBlcihJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQmIGhpdFRlc3RSZXN1bHQpCit7CisgICAgQVNTRVJUKFtoaXRUZXN0UmVzdWx0LndyYXBw
ZXIoKSBpc0tpbmRPZkNsYXNzOltXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0IGNsYXNz
XV0pOworICAgIHJldHVybiAoV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAqKWhpdFRl
c3RSZXN1bHQud3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgV0tXZWJQcm9jZXNzUGx1
Z0luSGl0VGVzdFJlc3VsdCAoKSA8V0tPYmplY3Q+CitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElf
RU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJv
Y2Vzc1BsdWdJbk5vZGVIYW5kbGUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNp
bXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitXS19BUElfQ0xBU1MKK0BpbnRlcmZh
Y2UgV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSA6IE5TT2JqZWN0CisKK0BlbmQKKworI2Vu
ZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0JKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLV2ViUHJvY2Vzc1Bs
dWdJbk5vZGVIYW5kbGVJbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKworQGltcGxlbWVudGF0aW9uIFdLV2ViUHJvY2Vzc1BsdWdJbk5v
ZGVIYW5kbGUgeworICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxJbmplY3RlZEJ1bmRsZU5vZGVIYW5k
bGU+IF9ub2RlSGFuZGxlOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfbm9kZUhhbmRs
ZS0+fkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSgpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30K
KworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQ
STo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfbm9kZUhhbmRsZTsKK30KKwor
QGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGVJbnRl
cm5hbC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVybmFsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldL
V2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNp
bXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFu
ZGxlICp3cmFwcGVyKEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSYgbm9kZUhhbmRsZSkKK3sKKyAg
ICBBU1NFUlQoW25vZGVIYW5kbGUud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W1dLV2ViUHJvY2Vz
c1BsdWdJbk5vZGVIYW5kbGUgY2xhc3NdXSk7CisgICAgcmV0dXJuIChXS1dlYlByb2Nlc3NQbHVn
SW5Ob2RlSGFuZGxlICopbm9kZUhhbmRsZS53cmFwcGVyKCk7Cit9CisKK30KKworQGludGVyZmFj
ZSBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICgpIDxXS09iamVjdD4KK0BlbmQKKworI2Vu
ZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlBy
b2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQyL1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tf
QVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK1dLX0FQ
SV9DTEFTUworQGludGVyZmFjZSBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCA6IE5TT2Jq
ZWN0CisKKysgKFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkKil3b3JsZDsKKysgKFdLV2Vi
UHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkKilub3JtYWxXb3JsZDsKKworQGVuZAorCisjZW5kaWYg
Ly8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luU2NyaXB0V29ybGQubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKwordXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKKworQGltcGxlbWVudGF0aW9uIFdLV2ViUHJvY2Vzc1BsdWdJblNj
cmlwdFdvcmxkIHsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8SW5qZWN0ZWRCdW5kbGVTY3JpcHRX
b3JsZD4gX3dvcmxkOworfQorCisrIChXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdv
cmxkCit7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+IHNjcmlwdFdvcmxk
ID0gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIFt3cmFw
cGVyKCpzY3JpcHRXb3JsZC5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07Cit9CisK
KysgKFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopbm9ybWFsV29ybGQKK3sKKyAgICBy
ZXR1cm4gW3dyYXBwZXIoKkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCkp
IGF1dG9yZWxlYXNlXTsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX3dvcmxkLT5+SW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCgpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworI3By
YWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2Jq
ZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfd29ybGQ7Cit9CisKK0BlbmQKKworI2Vu
ZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZEludGVy
bmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS1dlYlByb2Nl
c3NQbHVnSW5TY3JpcHRXb3JsZC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAi
V0tPYmplY3QuaCIKKyNpbXBvcnQgIkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAq
d3JhcHBlcihJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCkKK3sKKyAgICBBU1NFUlQo
W3dvcmxkLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRX
b3JsZCBjbGFzc11dKTsKKyAgICByZXR1cm4gKFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxk
ICopd29ybGQud3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQgKCkgPFdLT2JqZWN0PgorQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQK
</data>
<flag name="review"
          id="242611"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219103</attachid>
            <date>2013-12-12 11:48:16 -0800</date>
            <delta_ts>2013-12-12 22:42:40 -0800</delta_ts>
            <desc>address review comments, using JavaScript Obj C API intend of C API.</desc>
            <filename>webkit2_injectedbundle_api.patch</filename>
            <type>text/plain</type>
            <size>48061</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDQ1MykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTEyLTExICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgTmVlZCBPYmpDIEFQ
SXMgZm9yIHNvbWUgSW5qZWN0ZWRCdW5kbGUgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTYwMAorCisgICAgICAgIEFkZCBPYmpDIEFQ
SSBjbGFzc2VzIGZvciBXZWJGcmFtZSwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCwgSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0IGFuZCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvQ29j
b2EvQVBJT2JqZWN0Lm1tOiBjcmVhdGVzIEFQSSB3cmFwcGVyIGZvciBXZWJGcmFtZSwgSW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZCwgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0CisgICAgICAg
ICAgICAgYW5kIEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS4KKyAgICAgICAgKEFQSTo6T2JqZWN0
OjpuZXdPYmplY3QpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYTogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW06IEFkZGVkLgorICAgICAg
ICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lIGpzQ29udGV4dEZvcldvcmxkOl0pOiByZXR1cm5zIHRoZSBKU0Nv
bnRleHRSZWYgZm9yIGEgU2NyaXB0V29ybGQgaW4gZnJhbWUuCisgICAgICAgICgtW1dLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lIGhpdFRlc3Q6XSk6IHJldHVybnMgaGl0VGVzdFJlc3VsdCAod2l0aCBB
UEkgdHlwZSkgZnJvbSBhIGhpdFRlc3QuCisgICAgICAgICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkZy
YW1lIGpzV3JhcHBlckZvck5vZGVIYW5kbGU6aW5Xb3JsZDpdKToKKyAgICAgICAgKC1bV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUgQVBJOjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFsLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lmg6IEFk
ZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW06IEFkZGVkLgorICAgICAgICAoLVtXS1dlYlBy
b2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCBub2RlSGFuZGxlXSk6CisgICAgICAgICgtW1dLV2ViUHJv
Y2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgQVBJOjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50
ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Q29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbTogQWRkZWQuCisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgZGVhbGxvY10pOgorICAgICAgICAoLVtXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlIEFQSTo6XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVy
bmFsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRX
b3JsZC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbTogQWRkZWQuCisgICAgICAgICgr
W1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIHdvcmxkXSk6IHJldHVybnMgYSBuZXcgaXNv
bGF0ZWQgd29ybGQuCisgICAgICAgICgrW1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIG5v
cm1hbFdvcmxkXSk6IHJldHVybnMgdGhlIG1haW5UaHJlYWQgbm9ybWFsIHdvcmxkLiAKKyAgICAg
ICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgZGVhbGxvY10pOgorICAgICAgICAo
LVtXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCBBUEk6Ol0pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorCiAyMDEz
LTEyLTExICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHBsYXRmb3JtIHNwZWNpZmljIGd1bmsgZnJvbSBXZWJVUkxSZXF1ZXN0IGFuZCBXZWJV
UkxSZXNwb25zZQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1t
CShyZXZpc2lvbiAxNjA0MzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCwxMSBAQAogI2ltcG9ydCAiV0tOYXZp
Z2F0aW9uRGF0YUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NHcm91cEludGVybmFsLmgi
CiAjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJJbnRl
cm5hbC5oIgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVJbnRlcm5hbC5oIgorI2lt
cG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCiAjaW1wb3J0
ICJXS1dlYlByb2Nlc3NQbHVnSW5JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZUludGVybmFsLmgiCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5TY3Jp
cHRXb3JsZEludGVybmFsLmgiCiAKIG5hbWVzcGFjZSBBUEkgewogCkBAIC0xMzUsNiArMTM5LDIy
IEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXAKICAgICAgICAgd3Jh
cHBlciA9IE5TQWxsb2NhdGVPYmplY3QoW1dLTlNVUkwgY2xhc3NdLCBzaXplLCBudWxscHRyKTsK
ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFR5cGU6OkJ1bmRsZUZyYW1lOgorICAgICAgICB3
cmFwcGVyID0gW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIFR5cGU6OkJ1bmRsZUhpdFRlc3RSZXN1bHQ6CisgICAgICAgIHdyYXBwZXIg
PSBbV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCBhbGxvY107CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBUeXBlOjpCdW5kbGVOb2RlSGFuZGxlOgorICAgICAgICB3cmFwcGVyID0g
W1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgYWxsb2NdOworICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgVHlwZTo6QnVuZGxlU2NyaXB0V29ybGQ6CisgICAgICAgIHdyYXBwZXIgPSBbV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgYWxsb2NdOworICAgICAgICBicmVhazsKKwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHdyYXBwZXIgPSBOU0FsbG9jYXRlT2JqZWN0KFtXS09iamVjdCBj
bGFzc10sIHNpemUsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2
MDQzNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMzMyLDYgKzMzMiwxOCBAQAogCQkxQ0E4Qjk1NDEyN0M4OTE1
MDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4RTJEQUQxMjc4QzVCMjAwQkM3QkQwIC8qIFdlYkluc3Bl
Y3Rvck1hYy5tbSAqLzsgfTsKIAkJMUNCNzVDOTQxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdo
dC5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
Qjc1QzkzMTcwMUU4ODAwMDlGODA5RiAvKiBEb2NrUmlnaHQucGRmICovOyB9OwogCQkxQ0JDOTQ1
RTE2NTE1RUQyMDBENjhBQUUgLyogRG9ja0JvdHRvbS5wZGYgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQkM5NDVEMTY1MTVFRDIwMEQ2OEFBRSAvKiBE
b2NrQm90dG9tLnBkZiAqLzsgfTsKKwkJMUY3NTA2QUQxODU5MTYxQzAwRUMwRkY3IC8qIFdLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUYwMTgxNkExODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJ
bkZyYW1lLm1tICovOyB9OworCQkxRjc1MDZBRTE4NTkxNjIyMDBFQzBGRjcgLyogV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFGMDE4MTZEMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5IaXRUZXN0UmVzdWx0Lm1tICovOyB9OworCQkxRjc1MDZBRjE4NTkxNjI4MDBFQzBGRjcg
LyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMDE4MTcwMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tICovOyB9OworCQkxRjc1MDZCMDE4NTkxNjJDMDBF
QzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAxODE3MzE4NThEQzE2MDBGOTI4ODQg
LyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0gKi87IH07CisJCTFGNzUwNkIxMTg1
OTE2MzcwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYwMTgxNjkxODU4REMxNTAwRjkyODg0
IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHVibGljLCApOyB9OyB9OworCQkxRjc1MDZCMjE4NTkxNjNFMDBFQzBGRjcgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUYwMTgxNkMxODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vz
c1BsdWdJbkhpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJs
aWMsICk7IH07IH07CisJCTFGNzUwNkIzMTg1OTE2NDUwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxRjAxODE2RjE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9k
ZUhhbmRsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
KwkJMUY3NTA2QjQxODU5MTY0QzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAx
ODE3MjE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTFGNzUwNkI1
MTg1OTE2NTQwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZEludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAxODE3
NDE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5h
bC5oICovOyB9OworCQkxRjc1MDZCNjE4NTkxNjU3MDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxRjAxODE3MTE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZUludGVybmFsLmggKi87IH07CisJCTFGNzUwNkI3MTg1OTE2NUEwMEVDMEZG
NyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMDE4MTZFMTg1OERDMTYwMEY5
Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCAqLzsgfTsK
KwkJMUY3NTA2QjgxODU5MTY1RDAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFG
MDE4MTZCMTg1OERDMTUwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFs
LmggKi87IH07CiAJCTFRUTQxN0NCMTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBs
ZXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFD
QzQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCAqLzsgfTsK
IAkJMVpaNDE3RUYxMkMwMEQ4NzAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQkI0MTdDOTEy
QzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmNwcCAqLzsgfTsKIAkJMjkw
RjQyNzIxNzJBMEM3NDAwOTM5RkYwIC8qIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5MEY0MjcxMTcyQTBDNzQw
MDkzOUZGMCAvKiBDaGlsZFByb2Nlc3NTdXBwbGVtZW50LmggKi87IH07CkBAIC0xODcxLDYgKzE4
ODMsMTggQEAKIAkJMUNCNzVDOTMxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdodC5wZGYgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wZGY7
IG5hbWUgPSBEb2NrUmlnaHQucGRmOyBwYXRoID0gUmVzb3VyY2VzL0RvY2tSaWdodC5wZGY7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQkM5NDVEMTY1MTVFRDIwMEQ2OEFBRSAvKiBE
b2NrQm90dG9tLnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGltYWdlLnBkZjsgbmFtZSA9IERvY2tCb3R0b20ucGRmOyBwYXRoID0gUmVzb3VyY2Vz
L0RvY2tCb3R0b20ucGRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0M0MTdDOTEy
QzAwQ0NBMDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21wbGV0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2VyQ29tcGxldGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxRjAxODE2OTE4NThEQzE1MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNz
UGx1Z0luRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMTgxNkEx
ODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFGMDE4MTZCMTg1OERDMTUwMEY5Mjg4NCAv
KiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50ZXJuYWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMTgxNkMxODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJv
Y2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxRjAxODE2RDE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
SGl0VGVzdFJlc3VsdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTFGMDE4MTZFMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5I
aXRUZXN0UmVzdWx0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTFGMDE4MTZGMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUYwMTgxNzAxODU4REMxNjAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlByb2Nlc3NQ
bHVnSW5Ob2RlSGFuZGxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAxODE3
MTE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJbk5v
ZGVIYW5kbGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAxODE3
MjE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMTgxNzMxODU4REMxNjAwRjky
ODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFGMDE4MTc0MTg1OERDMTYwMEY5Mjg4NCAv
KiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZEludGVybmFsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkSW50ZXJuYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjkwRjQyNzExNzJBMEM3NDAwOTM5RkYw
IC8qIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2hpbGRQcm9jZXNzU3VwcGxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyOTNFQkVBOTE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRE9NVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyOTNFQkVBQTE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0Lm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tET01UZXh0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMzY5Niw2ICszNzIwLDI1IEBACiAJCQlwYXRoID0gbWFjOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMUYwMTgxNjgxODU4REMxNTAwRjky
ODg0IC8qIENvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkxRjAxODE2OTE4NThEQzE1MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUu
aCAqLywKKwkJCQkxRjAxODE2QTE4NThEQzE1MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWUubW0gKi8sCisJCQkJMUYwMTgxNkIxODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lSW50ZXJuYWwuaCAqLywKKwkJCQkxRjAxODE2QzE4NThEQzE1MDBGOTI4ODQg
LyogV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oICovLAorCQkJCTFGMDE4MTZEMTg1
OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tICovLAor
CQkJCTFGMDE4MTZFMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0
UmVzdWx0SW50ZXJuYWwuaCAqLywKKwkJCQkxRjAxODE2RjE4NThEQzE2MDBGOTI4ODQgLyogV0tX
ZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5oICovLAorCQkJCTFGMDE4MTcwMTg1OERDMTYwMEY5
Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tICovLAorCQkJCTFGMDE4MTcx
MTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJuYWwu
aCAqLywKKwkJCQkxRjAxODE3MjE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
U2NyaXB0V29ybGQuaCAqLywKKwkJCQkxRjAxODE3MzE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0gKi8sCisJCQkJMUYwMTgxNzQxODU4REMxNjAwRjky
ODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkSW50ZXJuYWwuaCAqLywKKwkJCSk7
CisJCQlwYXRoID0gQ29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQky
OTg5QTQwRTE2N0QxODEzMDA0Rjk2RDIgLyogQ3VzdG9tUHJvdG9jb2xzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTQ4NjksNiArNDkxMiw3IEBACiAJCUJD
MjA0RUU3MTFDODNFQUQwMDhGMzM3NSAvKiBBUEkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTFGMDE4MTY4MTg1OERDMTUwMEY5Mjg4NCAvKiBDb2NvYSAq
LywKIAkJCQlCQzIwNEVFODExQzgzRUI3MDA4RjMzNzUgLyogYyAqLywKIAkJCQlCQzk4OUQ0NTE2
MTgxNjkxMDAwRDQ2RDMgLyogbWFjICovLAogCQkJKTsKQEAgLTU2MjMsMTIgKzU2NjcsMTQgQEAK
IAkJCQlCQzAzMkRBNjEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1lbnREZWNvZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1lbnRFbmNvZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkRBOTEwRjQzN0QxMDA1OEMxNUEgLyogQXJndW1l
bnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkxRjc1MDZCNTE4NTkxNjU0MDBFQzBGRjcgLyogV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNFRTk2NkQxMTJGQUY1NzAwNkJDQzI0IC8qIEF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxQTMxNzMyMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJGNTg5NzEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0NDVCOUYxODRENUZCNTAwNEIz
NDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTJGNTg5OTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThFOEVGOTE2QjIwOTFDMDBFOTE0MjkgLyogQXV0
aGVudGljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxRjc1MDZCNjE4NTkxNjU3
MDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTJGNThBMzEyQTg4M0FEMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25N
YW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzA4NzcxMTZENkNGRTUwMEY5
OTIyNiAvKiBCbG9iUmVnaXN0cmF0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3MDg3
NkMxNkQ2Q0E2OTAwRjk5MjI2IC8qIEJsb2JSZWdpc3RyeVByb3h5LmggaW4gSGVhZGVycyAqLywK
QEAgLTU3NjUsNiArNTgxMSw3IEBACiAJCQkJMUFFNDk3NjgxMUZGNjU4RTAwNDhCNDY0IC8qIE5Q
SlNPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQ3NEUyMTg0RDQ0ODAwMDUxQjYyMiAv
KiBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEODJBNTEy
N0Y0RUFCMDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTFGNzUwNkI0MTg1OTE2NEMwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5TY3Jp
cHRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyRDg0M0ExMjdGNjVENTAwMUVCOTYyIC8q
IE5QT2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MkQ4MkE3MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTJEODJBOTEyN0Y0RUFCMDAxRUI5NjIgLyogTlBSZW1vdGVPYmplY3RNYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtNTgwOCw2ICs1ODU1LDcgQEAKIAkJCQkxQTJCQjZEMTE0MTE3QjREMDAw
RjM1RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUEyRDkwRDIxMjgxQzk2NjAwMUVCOTYyIC8qIFBsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDNjAzMTI0QTlGMkMwMDdFRjRBNSAv
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUY3NTA2QjMxODU5
MTY0NTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBMEVDNkMwMTI0QkJEOUIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDNzVFMTI0QkM3QjIwMDdFRjRBNSAvKiBQbHVn
aW5Qcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQzQjVFMTI0RDVFOUQwMEZG
QkZCNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC01
ODg2LDYgKzU5MzQsNyBAQAogCQkJCUJDNEE2MjkwMTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJDb25u
ZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNjI5MjE0NzMxMkJFMDA2QzY4MUEgLyog
V2ViQ29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRkVDMUQxNjI3QjQ1
NzAwNzAwRjZEIC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUY3NTA2QjIxODU5MTYzRTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1
bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE2MkE4MTQ3NDRFQzcwMDZDNjgxQSAvKiBXZWJD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I5RTI0MzExMjBE
QUNBMDBBMTM3RTAgLyogV2ViQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBNTA1RkEx
NjgwMDI1NTAwQTkzMEVCIC8qIFdlYkNvbnRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
NTkxOCw2ICs1OTY3LDcgQEAKIAkJCQlGNkEyNUZERDEyQURDNkNDMDBEQzQwQ0MgLyogV2ViRGF0
YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjJBNzZCNzEyQjFCMjVGMDAwNUYx
QjYgLyogV2ViRGF0YWJhc2VNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2
MkE3NjVEMTJCMUFCQzMwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMUY3NTA2QjExODU5MTYzNzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1Bs
dWdJbkZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUJBMzE4NEQ1RkNGMDA0QjM0MTQg
LyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUMxMTFG
MTJDOTJDMUYwMEIwOEVFRSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRjYyQTc2QjkxMkIxQjI1RjAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFu
YWdlclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTk1Niw2ICs2MDA2LDcgQEAK
IAkJCQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUIyNEE3MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29u
RGF0YWJhc2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCNDc0RUExODRENDUxMzAwNTFC
NjIyIC8qIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUY3
NTA2QjcxODU5MTY1QTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHRJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFEMDJGNkMxMzJFQzczNzAwQkVBQTk2IC8q
IFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2
QUJEMTJDOTFFRjkwMDhGOUMzNSAvKiBXZWJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4
RTI4MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCkBA
IC02MTkzLDYgKzYyNDQsNyBAQAogCQkJCUJDOEE1MDE1MTE3NjVGNTYwMDc1NzU3MyAvKiBXS1Jl
dGFpblB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYzNDQ0NUQxMkE4ODVFOTAwMDYxMkQ4IC8q
IFdLU2VjdXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA0MTI0RkYwMjcw
MDY4RjIwQSAvKiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUY3NTA2QjgxODU5MTY1RDAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2N0REN0JBMTI1RTQwRDkwMDdCRENCOCAvKiBXS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRERCMzJC
MTI0RUMyQUIwMDQ4RDEzQyAvKiBXS1NoYXJlZEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNDA3NjA2MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCkBA
IC02OTQ5LDYgKzcwMDEsNyBAQAogCQkJCUE3RDc5MkQ2MTc2N0NCNkUwMDg4MUNCRSAvKiBBY3Rp
dml0eUFzc2VydGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNjM0MDNGOTE0OTEwRDU3MDAx
MDcwQjUgLyogQVBJT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBM0Q2MTA1MTNBN0Yw
M0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxRjc1
MDZBRTE4NTkxNjIyMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFBQUYwQzRCMTJCMTYzMzQwMDhFNDlFMiAvKiBBcmd1bWVu
dENvZGVyc0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzlGRDlGMTM0RDM4MjUwMDE1Qjg4
MyAvKiBBcmd1bWVudENvZGVyc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBRTAwRDYwMTgz
MTc5MjEwMDA4N0RENyAvKiBGcmFtZUxvYWRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTcx
ODcsNiArNzI0MCw3IEBACiAJCQkJNTE1RTc3MkIxODQwMDhCOTAwMDcyMDNGIC8qIERhdGFiYXNl
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTY0MjBF
NDEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUMwMUEyNjAxMTI2NjJGMjEwMEM5RUQ1NSAvKiBTaGFyZWFibGVCaXRtYXBDRy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxRjc1MDZBRjE4NTkxNjI4MDBFQzBGRjcgLyogV0tXZWJQcm9jZXNz
UGx1Z0luTm9kZUhhbmRsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMjE3NDYwMTY0QzIwRTMw
MDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTI0
QkYzQTEyMDg5NkE2MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFjLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUyNzJCMjhBMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0YS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTczNDgsNiArNzQwMiw3IEBACiAJCQkJQzBDRTcyQTAxMjQ3RTcxRDAw
QkMwRUM0IC8qIFdlYlBhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkMxMTFCMEYxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlBhZ2VQcm94eS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUIzMDA1MTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5Q0YuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMUY3NTA2QUQxODU5MTYxQzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4NTdFODcxMkI3MUVCQjAwRURF
QjJFIC8qIFdlYlBhZ2VQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQkQzOTE0MTI1
QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUEzRTczNjIxMUNDMjY1OTAwN0JENTM5IC8qIFdlYlBsYXRmb3JtU3RyYXRl
Z2llcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTczNjksNiArNzQyNCw3IEBACiAJCQkJMUEwNDNB
MEExMjREMTFBOTAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBMDQzRjY5MTI1MTREOEIwMEZGQkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzMwNjgyNTEyNUE2Qjk0
MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkxRjc1MDZCMDE4NTkxNjJDMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2Ny
aXB0V29ybGQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3NUU3NDlFQjE4MERCQjk4MDAwODhCQTYg
LyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzMwNjVDNDEyNTkyRjg5MDBFNzEyNzggLyogV2ViUHJvY2Vzc01hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDMzA2NkJFMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNz
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJh
bWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9F
TkFCTEVECisKKyNpbXBvcnQgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250
ZXh0Lmg+CisKK0BjbGFzcyBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0OworQGNsYXNz
IFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGU7CitAY2xhc3MgV0tXZWJQcm9jZXNzUGx1Z0lu
U2NyaXB0V29ybGQ7CisKK1dLX0FQSV9DTEFTUworQGludGVyZmFjZSBXS1dlYlByb2Nlc3NQbHVn
SW5GcmFtZSA6IE5TT2JqZWN0CisKKy0gKEpTQ29udGV4dCAqKWpzQ29udGV4dEZvcldvcmxkOihX
S1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxkOworLSAoV0tXZWJQcm9jZXNzUGx1
Z0luSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQ7CistIChKU1ZhbHVlICop
anNOb2RlRm9yTm9kZUhhbmRsZTooV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSAqKW5vZGVI
YW5kbGUgaW5Xb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3b3JsZDsKKwor
QGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1l
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWVJbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiV0tXZWJQ
cm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJXS1dlYlByb2Nl
c3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLV2ViUHJvY2Vzc1BsdWdJ
blNjcmlwdFdvcmxkSW50ZXJuYWwuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWUu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvSW50UG9pbnQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworQGltcGxlbWVudGF0aW9uIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIHsKKyAgICBBUEk6
Ok9iamVjdFN0b3JhZ2U8V2ViRnJhbWU+IF9mcmFtZTsKK30KKworLSAodm9pZClkZWFsbG9jCit7
CisgICAgX2ZyYW1lLT5+V2ViRnJhbWUoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0g
KEpTQ29udGV4dCAqKWpzQ29udGV4dEZvcldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRX
b3JsZCAqKXdvcmxkCit7CisgICAgcmV0dXJuIFtKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2Jh
bENvbnRleHRSZWY6X2ZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCgmW3dvcmxkIF9zY3JpcHRXb3Js
ZF0pXTsKK30KKworLSAoV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3Q6
KENHUG9pbnQpcG9pbnQKK3sKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0
PiBoaXRUZXN0UmVzdWx0ID0gX2ZyYW1lLT5oaXRUZXN0KFdlYkNvcmU6OkludFBvaW50KHBvaW50
KSk7CisgICAgcmV0dXJuIFt3cmFwcGVyKCpoaXRUZXN0UmVzdWx0LnJlbGVhc2UoKS5sZWFrUmVm
KCkpIGF1dG9yZWxlYXNlXTsKK30KKworLSAoSlNWYWx1ZSAqKWpzTm9kZUZvck5vZGVIYW5kbGU6
KFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKilub2RlSGFuZGxlIGluV29ybGQ6KFdLV2Vi
UHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQKK3sKKyAgICBKU1ZhbHVlUmVmIHZhbHVl
UmVmID0gX2ZyYW1lLT5qc1dyYXBwZXJGb3JXb3JsZCgmW25vZGVIYW5kbGUgX25vZGVIYW5kbGVd
LCAmW3dvcmxkIF9zY3JpcHRXb3JsZF0pOworICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhK
U1ZhbHVlUmVmOnZhbHVlUmVmIGluQ29udGV4dDpbc2VsZiBqc0NvbnRleHRGb3JXb3JsZDp3b3Js
ZF1dOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24K
KworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9mcmFtZTsKK30K
KworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZy
YW1lSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFsLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldLV2ViUHJvY2Vzc1Bs
dWdJbkZyYW1lLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJXS09iamVjdC5o
IgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaCIKKyNpbXBvcnQgIldlYkZyYW1l
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgV0tXZWJQcm9jZXNzUGx1Z0luRnJh
bWUgKndyYXBwZXIoV2ViRnJhbWUmIGZyYW1lKQoreworICAgIEFTU0VSVChbZnJhbWUud3JhcHBl
cigpIGlzS2luZE9mQ2xhc3M6W1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGNsYXNzXV0pOworICAg
IHJldHVybiAoV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZS53cmFwcGVyKCk7IH0KK30K
KworQGludGVyZmFjZSBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAoKSA8V0tPYmplY3Q+CitAZW5k
CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJl
c3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRpb24u
aD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgorCitAY2xhc3MgV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZTsKKworV0tfQVBJX0NM
QVNTCitAaW50ZXJmYWNlIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgOiBOU09iamVj
dAorCitAcHJvcGVydHkgKHJlYWRvbmx5KSBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICpu
b2RlSGFuZGxlOworCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRU
ZXN0UmVzdWx0Lm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJu
YWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIldLV2ViUHJvY2Vzc1BsdWdJ
bk5vZGVIYW5kbGVJbnRlcm5hbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW1w
bGVtZW50YXRpb24gV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCB7CisgICAgQVBJOjpP
YmplY3RTdG9yYWdlPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gX2hpdFRlc3RSZXN1bHQ7
Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9oaXRUZXN0UmVzdWx0LT5+SW5qZWN0ZWRC
dW5kbGVIaXRUZXN0UmVzdWx0KCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICopbm9kZUhhbmRsZQoreworICAgIFJlZlB0cjxJbmpl
Y3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBfaGl0VGVzdFJlc3VsdC0+bm9kZUhh
bmRsZSgpOworICAgIHJldHVybiBbd3JhcHBlcigqbm9kZUhhbmRsZS5yZWxlYXNlKCkubGVha1Jl
ZigpKSBhdXRvcmVsZWFzZV07Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBp
bXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVy
biAqX2hpdFRlc3RSZXN1bHQ7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVE
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2Nv
YS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dl
YlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJv
Y2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0
UmVzdWx0LmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJXS09iamVjdC5oIgor
I2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitpbmxpbmUgV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAqd3JhcHBlcihJ
bmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQpCit7CisgICAgQVNTRVJU
KFtoaXRUZXN0UmVzdWx0LndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltXS1dlYlByb2Nlc3NQbHVn
SW5IaXRUZXN0UmVzdWx0IGNsYXNzXV0pOworICAgIHJldHVybiAoV0tXZWJQcm9jZXNzUGx1Z0lu
SGl0VGVzdFJlc3VsdCAqKWhpdFRlc3RSZXN1bHQud3JhcHBlcigpOworfQorCit9CisKK0BpbnRl
cmZhY2UgV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAoKSA8V0tPYmplY3Q+CitAZW5k
CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRpb24uaD4KKworI2lm
IFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitX
S19BUElfQ0xBU1MKK0BpbnRlcmZhY2UgV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSA6IE5T
T2JqZWN0CitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1
Z0luTm9kZUhhbmRsZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1t
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQ
SV9FTkFCTEVECisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBX
S1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlIHsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8SW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBfbm9kZUhhbmRsZTsKK30KKworLSAodm9pZClkZWFsbG9j
Cit7CisgICAgX25vZGVIYW5kbGUtPn5JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUoKTsKKyAgICBb
c3VwZXIgZGVhbGxvY107Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBs
ZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAq
X25vZGVIYW5kbGU7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLV2ViUHJvY2Vzc1Bs
dWdJbk5vZGVIYW5kbGUgKEludGVybmFsKQorCistIChJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUm
KV9ub2RlSGFuZGxlCit7CisgICAgcmV0dXJuICpfbm9kZUhhbmRsZTsKK30KKworQGVuZAorCisj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGVJbnRl
cm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGVJbnRlcm5hbC5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldLV2ViUHJvY2Vz
c1BsdWdJbk5vZGVIYW5kbGUuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIklu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2lubGluZSBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICp3cmFw
cGVyKEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSYgbm9kZUhhbmRsZSkKK3sKKyAgICBBU1NFUlQo
W25vZGVIYW5kbGUud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W1dLV2ViUHJvY2Vzc1BsdWdJbk5v
ZGVIYW5kbGUgY2xhc3NdXSk7CisgICAgcmV0dXJuIChXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFu
ZGxlICopbm9kZUhhbmRsZS53cmFwcGVyKCk7Cit9CisKK30KKworQGludGVyZmFjZSBXS1dlYlBy
b2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICgpIDxXS09iamVjdD4KK0BlbmQKKworQGludGVyZmFjZSBX
S1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlIChJbnRlcm5hbCkKKworQHByb3BlcnR5IChyZWFk
b25seSkgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUmIF9ub2RlSGFuZGxlOworCitA
ZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0
V29ybGQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29j
b2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRpb24uaD4K
KworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgorCitXS19BUElfQ0xBU1MKK0BpbnRlcmZhY2UgV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGQgOiBOU09iamVjdAorCisrIChXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxk
OworKyAoV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKilub3JtYWxXb3JsZDsKKworQGVu
ZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29j
b2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJM
RUQKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworQGltcGxlbWVudGF0aW9uIFdLV2ViUHJv
Y2Vzc1BsdWdJblNjcmlwdFdvcmxkIHsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8SW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZD4gX3dvcmxkOworfQorCisrIChXS1dlYlByb2Nlc3NQbHVnSW5TY3Jp
cHRXb3JsZCAqKXdvcmxkCit7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+
IHNjcmlwdFdvcmxkID0gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y3JlYXRlKCk7CisgICAg
cmV0dXJuIFt3cmFwcGVyKCpzY3JpcHRXb3JsZC5yZWxlYXNlKCkubGVha1JlZigpKSBhdXRvcmVs
ZWFzZV07Cit9CisKKysgKFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopbm9ybWFsV29y
bGQKK3sKKyAgICByZXR1cm4gW3dyYXBwZXIoKkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5v
cm1hbFdvcmxkKCkpIGF1dG9yZWxlYXNlXTsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAg
X3dvcmxkLT5+SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCgpOworICAgIFtzdXBlciBkZWFsbG9j
XTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisK
Ky0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfd29ybGQ7Cit9CisK
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIChJ
bnRlcm5hbCkKKworLSAoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpX3NjcmlwdFdvcmxkCit7
CisgICAgcmV0dXJuICpfd29ybGQ7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFC
TEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZEludGVybmFsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9j
ZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3Js
ZC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZC5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2lubGluZSBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqd3JhcHBlcihJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCkKK3sKKyAgICBBU1NFUlQoW3dvcmxkLndyYXBwZXIoKSBp
c0tpbmRPZkNsYXNzOltXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCBjbGFzc11dKTsKKyAg
ICByZXR1cm4gKFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQud3JhcHBlcigp
OworfQorCit9CisKK0BpbnRlcmZhY2UgV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKCkg
PFdLT2JqZWN0PgorQGVuZAorCitAaW50ZXJmYWNlIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkIChJbnRlcm5hbCkKKworQHByb3BlcnR5IChyZWFkb25seSkgV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkJiBfc2NyaXB0V29ybGQ7CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQ
SV9FTkFCTEVECg==
</data>
<flag name="review"
          id="242693"
          type_id="1"
          status="+"
          setter="mitz"
    />
    <flag name="commit-queue"
          id="242726"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219159</attachid>
            <date>2013-12-12 22:42:40 -0800</date>
            <delta_ts>2013-12-12 23:19:46 -0800</delta_ts>
            <desc>Fix a conflict in WebKit2 project file before landing.</desc>
            <filename>webkit2_injectedbundle_api.patch</filename>
            <type>text/plain</type>
            <size>47671</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDUyNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTEyLTEyICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgTmVlZCBPYmpDIEFQ
SXMgZm9yIHNvbWUgSW5qZWN0ZWRCdW5kbGUgY2xhc3Nlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTYwMAorCisgICAgICAgIEFkZCBPYmpDIEFQ
SSBjbGFzc2VzIGZvciBXZWJGcmFtZSwgSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCwgSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0IGFuZCBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KKworICAgICAgICAqIFNoYXJlZC9Db2Nv
YS9BUElPYmplY3QubW06IGNyZWF0ZXMgQVBJIHdyYXBwZXIgZm9yIFdlYkZyYW1lLCBJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkLCBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQKKyAgICAgICAg
ICAgICBhbmQgSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLgorICAgICAgICAoQVBJOjpPYmplY3Q6
Om5ld09iamVjdCk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hOiBBZGRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nl
c3NQbHVnSW5GcmFtZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5tbTogQWRkZWQuCisgICAgICAg
ICgtW1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUganNDb250ZXh0Rm9yV29ybGQ6XSk6IHJldHVybnMgdGhlIEpTQ29u
dGV4dFJlZiBmb3IgYSBTY3JpcHRXb3JsZCBpbiBmcmFtZS4KKyAgICAgICAgKC1bV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWUgaGl0VGVzdDpdKTogcmV0dXJucyBoaXRUZXN0UmVzdWx0ICh3aXRoIEFQ
SSB0eXBlKSBmcm9tIGEgaGl0VGVzdC4KKyAgICAgICAgKC1bV0tXZWJQcm9jZXNzUGx1Z0luRnJh
bWUganNXcmFwcGVyRm9yTm9kZUhhbmRsZTppbldvcmxkOl0pOgorICAgICAgICAoLVtXS1dlYlBy
b2Nlc3NQbHVnSW5GcmFtZSBBUEk6Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50ZXJuYWwuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQuaDogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViUHJv
Y2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQgZGVhbGxvY10pOgorICAgICAgICAoLVtXS1dlYlByb2Nl
c3NQbHVnSW5IaXRUZXN0UmVzdWx0IG5vZGVIYW5kbGVdKToKKyAgICAgICAgKC1bV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCBBUEk6Ol0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHRJbnRl
cm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6d3JhcHBlcik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhh
bmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1b
V0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSBkZWFsbG9jXSk6CisgICAgICAgICgtW1dLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgQVBJOjpdKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJu
YWwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1tOiBBZGRlZC4KKyAgICAgICAgKCtb
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgd29ybGRdKTogcmV0dXJucyBhIG5ldyBpc29s
YXRlZCB3b3JsZC4KKyAgICAgICAgKCtbV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgbm9y
bWFsV29ybGRdKTogcmV0dXJucyB0aGUgbWFpblRocmVhZCBub3JtYWwgd29ybGQuIAorICAgICAg
ICAoLVtXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCBkZWFsbG9jXSk6CisgICAgICAgICgt
W1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIEFQSTo6XSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGRJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6d3JhcHBlcik6CisKIDIwMTMt
MTItMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
QnVpbGQgZml4IGZvciAzMi1iaXQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9B
UElPYmplY3QubW0JKHJldmlzaW9uIDE2MDUyNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b2NvYS9BUElPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDExIEBACiAjaW1w
b3J0ICJXS05hdmlnYXRpb25EYXRhSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLUHJvY2Vzc0dyb3Vw
SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlckludGVybmFsLmgiCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVy
bmFsLmgiCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLV2ViUHJvY2Vzc1BsdWdJbkludGVybmFsLmgiCisjaW1wb3J0ICJXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLV2ViUHJvY2Vz
c1BsdWdJblNjcmlwdFdvcmxkSW50ZXJuYWwuaCIKIAogbmFtZXNwYWNlIEFQSSB7CiAKQEAgLTEz
NSw2ICsxMzksMjIgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cAog
ICAgICAgICB3cmFwcGVyID0gTlNBbGxvY2F0ZU9iamVjdChbV0tOU1VSTCBjbGFzc10sIHNpemUs
IG51bGxwdHIpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6QnVuZGxlRnJhbWU6
CisgICAgICAgIHdyYXBwZXIgPSBbV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgYWxsb2NdOworICAg
ICAgICBicmVhazsKKworICAgIGNhc2UgVHlwZTo6QnVuZGxlSGl0VGVzdFJlc3VsdDoKKyAgICAg
ICAgd3JhcHBlciA9IFtXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0IGFsbG9jXTsKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFR5cGU6OkJ1bmRsZU5vZGVIYW5kbGU6CisgICAgICAg
IHdyYXBwZXIgPSBbV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSBhbGxvY107CisgICAgICAg
IGJyZWFrOworCisgICAgY2FzZSBUeXBlOjpCdW5kbGVTY3JpcHRXb3JsZDoKKyAgICAgICAgd3Jh
cHBlciA9IFtXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCBhbGxvY107CisgICAgICAgIGJy
ZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgd3JhcHBlciA9IE5TQWxsb2NhdGVPYmplY3Qo
W1dLT2JqZWN0IGNsYXNzXSwgc2l6ZSwgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTYwNTI3KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNiArMzMyLDE4IEBACiAJCTFDQThC
OTU0MTI3Qzg5MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzhFMkRBRDEyNzhDNUIyMDBCQzdCRDAg
LyogV2ViSW5zcGVjdG9yTWFjLm1tICovOyB9OwogCQkxQ0I3NUM5NDE3MDFFODgwMDA5RjgwOUYg
LyogRG9ja1JpZ2h0LnBkZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNCNzVDOTMxNzAxRTg4MDAwOUY4MDlGIC8qIERvY2tSaWdodC5wZGYgKi87IH07
CiAJCTFDQkM5NDVFMTY1MTVFRDIwMEQ2OEFBRSAvKiBEb2NrQm90dG9tLnBkZiBpbiBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCQzk0NUQxNjUxNUVEMjAw
RDY4QUFFIC8qIERvY2tCb3R0b20ucGRmICovOyB9OworCQkxRjc1MDZBRDE4NTkxNjFDMDBFQzBG
RjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAxODE2QTE4NThEQzE1MDBGOTI4ODQgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luRnJhbWUubW0gKi87IH07CisJCTFGNzUwNkFFMTg1OTE2MjIwMEVDMEZGNyAv
KiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYwMTgxNkQxODU4REMxNjAwRjkyODg0IC8qIFdL
V2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQubW0gKi87IH07CisJCTFGNzUwNkFGMTg1OTE2
MjgwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYwMTgxNzAxODU4REMxNjAwRjky
ODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0gKi87IH07CisJCTFGNzUwNkIw
MTg1OTE2MkMwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMDE4MTczMTg1OERD
MTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbSAqLzsgfTsKKwkJ
MUY3NTA2QjExODU5MTYzNzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAxODE2OTE4NThE
QzE1MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTFGNzUwNkIyMTg1OTE2M0UwMEVDMEZG
NyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjAxODE2QzE4NThEQzE1MDBGOTI4ODQgLyog
V0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJMUY3NTA2QjMxODU5MTY0NTAwRUMwRkY3IC8qIFdL
V2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFGMDE4MTZGMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nl
c3NQbHVnSW5Ob2RlSGFuZGxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OworCQkxRjc1MDZCNDE4NTkxNjRDMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFGMDE4MTcyMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5TY3Jp
cHRXb3JsZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
KwkJMUY3NTA2QjUxODU5MTY1NDAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdv
cmxkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFGMDE4MTc0MTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRX
b3JsZEludGVybmFsLmggKi87IH07CisJCTFGNzUwNkI2MTg1OTE2NTcwMEVDMEZGNyAvKiBXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGMDE4MTcxMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dl
YlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJuYWwuaCAqLzsgfTsKKwkJMUY3NTA2QjcxODU5
MTY1QTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHRJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUYwMTgxNkUx
ODU4REMxNjAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHRJbnRlcm5h
bC5oICovOyB9OworCQkxRjc1MDZCODE4NTkxNjVEMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1
Z0luRnJhbWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUYwMTgxNkIxODU4REMxNTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZy
YW1lSW50ZXJuYWwuaCAqLzsgfTsKIAkJMVFRNDE3Q0IxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRD
aGVja2VyQ29tcGxldGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNDNDE3QzkxMkMwMENDQTAwMkJFNjdCIC8qIFRleHRDaGVja2VyQ29tcGxldGlv
bi5oICovOyB9OwogCQkxWlo0MTdFRjEyQzAwRDg3MDAyQkU2N0IgLyogVGV4dENoZWNrZXJDb21w
bGV0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFCQjQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uY3BwICov
OyB9OwogCQkyOTBGNDI3MjE3MkEwQzc0MDA5MzlGRjAgLyogQ2hpbGRQcm9jZXNzU3VwcGxlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjkwRjQy
NzExNzJBMEM3NDAwOTM5RkYwIC8qIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQuaCAqLzsgfTsKQEAg
LTE4NzgsNiArMTg5MCwxOCBAQAogCQkxQ0I3NUM5MzE3MDFFODgwMDA5RjgwOUYgLyogRG9ja1Jp
Z2h0LnBkZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGltYWdlLnBkZjsgbmFtZSA9IERvY2tSaWdodC5wZGY7IHBhdGggPSBSZXNvdXJjZXMvRG9ja1Jp
Z2h0LnBkZjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNCQzk0NUQxNjUxNUVEMjAw
RDY4QUFFIC8qIERvY2tCb3R0b20ucGRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucGRmOyBuYW1lID0gRG9ja0JvdHRvbS5wZGY7IHBhdGgg
PSBSZXNvdXJjZXMvRG9ja0JvdHRvbS5wZGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFDQzQxN0M5MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlckNvbXBsZXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dENoZWNrZXJDb21wbGV0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFGMDE4MTY5MTg1OERDMTUwMEY5Mjg4NCAvKiBX
S1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxRjAxODE2QTE4NThEQzE1MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlByb2Nlc3NQbHVn
SW5GcmFtZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMTgxNkIxODU4REMx
NTAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAxODE2QzE4NThEQzE1MDBGOTI4ODQg
LyogV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFGMDE4MTZEMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlBy
b2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMTgxNkUxODU4REMxNjAwRjkyODg0IC8qIFdLV2ViUHJv
Y2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMTgxNkYxODU4REMxNjAwRjkyODg0IC8qIFdL
V2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxRjAxODE3MDE4NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
Tm9kZUhhbmRsZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdL
V2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFGMDE4MTcxMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFu
ZGxlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9j
ZXNzUGx1Z0luTm9kZUhhbmRsZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFGMDE4MTcyMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRX
b3JsZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlByb2Nlc3NQbHVn
SW5TY3JpcHRXb3JsZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRjAxODE3MzE4
NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlByb2Nlc3NQbHVnSW5TY3Jp
cHRXb3JsZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUYwMTgxNzQxODU4REMx
NjAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkSW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29y
bGRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOTBGNDI3MTE3MkEw
Qzc0MDA5MzlGRjAgLyogQ2hpbGRQcm9jZXNzU3VwcGxlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDaGlsZFByb2Nlc3NTdXBwbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5M0VCRUE5MTYyN0Q5QzkwMDVGODlGMSAvKiBXS0RPTVRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tET01UZXh0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTI5M0VCRUFBMTYyN0Q5QzkwMDVGODlGMSAvKiBXS0RPTVRleHQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0RPTVRleHQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNzE0LDYgKzM3MzgsMjUgQEAKIAkJCXBh
dGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkxRjAxODE2ODE4
NThEQzE1MDBGOTI4ODQgLyogQ29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTFGMDE4MTY5MTg1OERDMTUwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5GcmFtZS5oICovLAorCQkJCTFGMDE4MTZBMTg1OERDMTUwMEY5Mjg4NCAvKiBXS1dlYlBy
b2Nlc3NQbHVnSW5GcmFtZS5tbSAqLywKKwkJCQkxRjAxODE2QjE4NThEQzE1MDBGOTI4ODQgLyog
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVJbnRlcm5hbC5oICovLAorCQkJCTFGMDE4MTZDMTg1OERD
MTUwMEY5Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0LmggKi8sCisJCQkJ
MUYwMTgxNkQxODU4REMxNjAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1
bHQubW0gKi8sCisJCQkJMUYwMTgxNkUxODU4REMxNjAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1Bs
dWdJbkhpdFRlc3RSZXN1bHRJbnRlcm5hbC5oICovLAorCQkJCTFGMDE4MTZGMTg1OERDMTYwMEY5
Mjg4NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLmggKi8sCisJCQkJMUYwMTgxNzAx
ODU4REMxNjAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW0gKi8sCisJ
CQkJMUYwMTgxNzExODU4REMxNjAwRjkyODg0IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5k
bGVJbnRlcm5hbC5oICovLAorCQkJCTFGMDE4MTcyMTg1OERDMTYwMEY5Mjg4NCAvKiBXS1dlYlBy
b2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5oICovLAorCQkJCTFGMDE4MTczMTg1OERDMTYwMEY5Mjg4
NCAvKiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5tbSAqLywKKwkJCQkxRjAxODE3NDE4
NThEQzE2MDBGOTI4ODQgLyogV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5o
ICovLAorCQkJKTsKKwkJCXBhdGggPSBDb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CiAJCTI5ODlBNDBFMTY3RDE4MTMwMDRGOTZEMiAvKiBDdXN0b21Qcm90b2NvbHMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNDg5NSw2ICs0OTM4
LDcgQEAKIAkJQkMyMDRFRTcxMUM4M0VBRDAwOEYzMzc1IC8qIEFQSSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUYwMTgxNjgxODU4REMxNTAwRjkyODg0
IC8qIENvY29hICovLAogCQkJCUJDMjA0RUU4MTFDODNFQjcwMDhGMzM3NSAvKiBjICovLAogCQkJ
CUJDOTg5RDQ1MTYxODE2OTEwMDBENDZEMyAvKiBtYWMgKi8sCiAJCQkpOwpAQCAtNTc5OSw2ICs1
ODQzLDcgQEAKIAkJCQk1MTYzMTE4NzE4NTg0NDY2MDA1MzQ2NDcgLyogV2ViQ3Jvc3NUaHJlYWRD
b3BpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjQ3NEUyMTg0RDQ0ODAwMDUxQjYyMiAvKiBX
S0J1bmRsZVBhZ2VGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTJEODJBNTEyN0Y0
RUFCMDAxRUI5NjIgLyogTlBPYmplY3RNZXNzYWdlUmVjZWl2ZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTFGNzUwNkI0MTg1OTE2NEMwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRX
b3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyRDg0M0ExMjdGNjVENTAwMUVCOTYyIC8qIE5Q
T2JqZWN0TWVzc2FnZVJlY2VpdmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ4
MkE3MTI3RjRFQUIwMDFFQjk2MiAvKiBOUE9iamVjdFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTJEODJBOTEyN0Y0RUFCMDAxRUI5NjIgLyogTlBSZW1vdGVPYmplY3RNYXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtNTg0MSw2ICs1ODg2LDcgQEAKIAkJCQkxQTJCQjZEMTE0MTE3QjREMDAwRjM1
RDQgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEyRDkwRDIxMjgxQzk2NjAwMUVCOTYyIC8qIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDNjAzMTI0QTlGMkMwMDdFRjRBNSAvKiBQ
bHVnaW5Qcm9jZXNzTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUY3NTA2QjMxODU5MTY0
NTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBMEVDNkMwMTI0QkJEOUIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDNzVFMTI0QkM3QjIwMDdFRjRBNSAvKiBQbHVnaW5Q
cm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQzQjVFMTI0RDVFOUQwMEZGQkZC
NSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC01OTIw
LDYgKzU5NjYsNyBAQAogCQkJCUJDNEE2MjkwMTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJDb25uZWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzRBNjI5MjE0NzMxMkJFMDA2QzY4MUEgLyogV2Vi
Q29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExRkVDMUQxNjI3QjQ1NzAw
NzAwRjZEIC8qIFdlYkNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUY3
NTA2QjIxODU5MTYzRTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNEE2MkE4MTQ3NDRFQzcwMDZDNjgxQSAvKiBXZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I5RTI0MzExMjBEQUNB
MDBBMTM3RTAgLyogV2ViQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBNTA1RkExNjgw
MDI1NTAwQTkzMEVCIC8qIFdlYkNvbnRleHRDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNTk1
Miw2ICs1OTk5LDcgQEAKIAkJCQlGNkEyNUZERDEyQURDNkNDMDBEQzQwQ0MgLyogV2ViRGF0YWJh
c2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNjJBNzZCNzEyQjFCMjVGMDAwNUYxQjYg
LyogV2ViRGF0YWJhc2VNYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MkE3
NjVEMTJCMUFCQzMwMDA1RjFCNiAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMUY3NTA2QjExODU5MTYzNzAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJ
bkZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUJBMzE4NEQ1RkNGMDA0QjM0MTQgLyog
V0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUMxMTFGMTJD
OTJDMUYwMEIwOEVFRSAvKiBXZWJEYXRhYmFzZU1hbmFnZXJQcm94eUNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjYyQTc2QjkxMkIxQjI1RjAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdl
clByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtNTk5MSw2ICs2MDM5LDcgQEAKIAkJ
CQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMUIyNEE3MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29uRGF0
YWJhc2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCNDc0RUExODRENDUxMzAwNTFCNjIy
IC8qIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUY3NTA2
QjcxODU5MTY1QTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFEMDJGNkMxMzJFQzczNzAwQkVBQTk2IC8qIFdl
Ykljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QUJE
MTJDOTFFRjkwMDhGOUMzNSAvKiBXZWJJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4
MjAxMjc1RDE1NDAwQkM3QkQwIC8qIFdlYkluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC02
MjI5LDYgKzYyNzgsNyBAQAogCQkJCUJDOEE1MDE1MTE3NjVGNTYwMDc1NzU3MyAvKiBXS1JldGFp
blB0ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjYzNDQ0NUQxMkE4ODVFOTAwMDYxMkQ4IC8qIFdL
U2VjdXJpdHlPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjA0MTI0RkYwMjcwMDY4
RjIwQSAvKiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUY3
NTA2QjgxODU5MTY1RDAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCUY2N0REN0JBMTI1RTQwRDkwMDdCRENCOCAvKiBXS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRERCMzJCMTI0
RUMyQUIwMDQ4RDEzQyAvKiBXS1NoYXJlZEFQSUNhc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NDA3NjA2MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1N0cmluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC02
MjU5LDYgKzYzMDksOCBAQAogCQkJCUJDOEYyRjJCMTYyNzNBMkMwMDVGQUNCNSAvKiBXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDOEYyRjJFMTYyNzNBQ0MwMDVGQUNCNSAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk1MDE3MjQxNjJB
NDUwNDAwNEE5RDcxIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
clByaXZhdGUuaCBpbiBIZWFkZXJzICovLAorIAkJCQkxRjc1MDZCNjE4NTkxNjU3MDBFQzBGRjcg
LyogV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
KyAJCQkJMUY3NTA2QjUxODU5MTY1NDAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlw
dFdvcmxkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3M0NFQUQ2MTg1NDE3QUUwMDhD
MzYzRCAvKiBXS05TRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCOEExRjAxODQwMEIwMDAw
RTlBRTY5IC8qIFdLUGFnZUZvcm1DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTg5RDg1
MTYxQTk4OTAwMDBENDZEMyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5JbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCkBAIC02OTg2LDYgKzcwMzgsNyBAQAogCQkJCUE3RDc5MkQ2MTc2N0NCNkUwMDg4MUNC
RSAvKiBBY3Rpdml0eUFzc2VydGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNjM0MDNGOTE0
OTEwRDU3MDAxMDcwQjUgLyogQVBJT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBM0Q2
MTA1MTNBN0YwM0EwMEY5NUQ0RSAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkxRjc1MDZBRTE4NTkxNjIyMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVz
dFJlc3VsdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQUYwQzRCMTJCMTYzMzQwMDhFNDlFMiAv
KiBBcmd1bWVudENvZGVyc0NGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzlGRDlGMTM0RDM4
MjUwMDE1Qjg4MyAvKiBBcmd1bWVudENvZGVyc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFB
RTAwRDYwMTgzMTc5MjEwMDA4N0RENyAvKiBGcmFtZUxvYWRTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTcyMjMsNiArNzI3Niw3IEBACiAJCQkJNTE1RTc3MkIxODQwMDhCOTAwMDcyMDNGIC8q
IERhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTY0MjBFNDEyRENFMkZGMDBDQUFFMkMgLyogU2hhcmVhYmxlQml0bWFwLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUMwMUEyNjAxMTI2NjJGMjEwMEM5RUQ1NSAvKiBTaGFyZWFibGVCaXRtYXBD
Ry5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxRjc1MDZBRjE4NTkxNjI4MDBFQzBGRjcgLyogV0tX
ZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxMjE3NDYw
MTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFibGVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTI0QkYzQTEyMDg5NkE2MDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5TWFjLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUyNzJCMjhBMTQwNjk4NUQwMDk2QTVEMCAvKiBTdGF0aXN0aWNzRGF0
YS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTczODYsNiArNzQ0MCw3IEBACiAJCQkJQzBDRTcyQTAx
MjQ3RTcxRDAwQkMwRUM0IC8qIFdlYlBhZ2VNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkMxMTFCMEYxMTJGNUU0RjAwMzM3QkFCIC8qIFdlYlBhZ2VQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MUIzMDA1MTEyNTI5RDBFMDAwQjVDQTAgLyogV2ViUGFnZVByb3h5
Q0YuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUY3NTA2QUQxODU5MTYxQzAwRUMwRkY3IC8qIFdL
V2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4NTdFODcxMkI3
MUVCQjAwRURFQjJFIC8qIFdlYlBhZ2VQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJD
QkQzOTE0MTI1QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzRTczNjIxMUNDMjY1OTAwN0JENTM5IC8qIFdlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc0MDcsNiArNzQ2Miw3IEBACiAJ
CQkJMUEwNDNBMEExMjREMTFBOTAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBMDQzRjY5MTI1MTREOEIwMEZGQkZCNSAvKiBXZWJQcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzMwNjgy
NTEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxRjc1MDZCMDE4NTkxNjJDMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNz
UGx1Z0luU2NyaXB0V29ybGQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3NUU3NDlFQjE4MERCQjk4
MDAwODhCQTYgLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzMwNjVDNDEyNTkyRjg5MDBFNzEyNzggLyogV2ViUHJvY2Vz
c01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMzA2NkJFMTI1QTQ0MjEwMEU3MTI3OCAvKiBX
ZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29j
b2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRpb24uaD4KKworI2lm
IFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4K
KyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSlNDb250ZXh0Lmg+CisKK0BjbGFzcyBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0
OworQGNsYXNzIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGU7CitAY2xhc3MgV0tXZWJQcm9j
ZXNzUGx1Z0luU2NyaXB0V29ybGQ7CisKK1dLX0FQSV9DTEFTUworQGludGVyZmFjZSBXS1dlYlBy
b2Nlc3NQbHVnSW5GcmFtZSA6IE5TT2JqZWN0CisKKy0gKEpTQ29udGV4dCAqKWpzQ29udGV4dEZv
cldvcmxkOihXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxkOworLSAoV0tXZWJQ
cm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQ7CistIChK
U1ZhbHVlICopanNOb2RlRm9yTm9kZUhhbmRsZTooV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRs
ZSAqKW5vZGVIYW5kbGUgaW5Xb3JsZDooV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKil3
b3JsZDsKKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1Bs
dWdJbkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lLm1tCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29j
b2EvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tXZWJQcm9j
ZXNzUGx1Z0luRnJhbWVJbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9y
dCAiV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJX
S1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLV2ViUHJv
Y2Vzc1BsdWdJblNjcmlwdFdvcmxkSW50ZXJuYWwuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0pTVmFsdWUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSW50UG9pbnQuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworQGltcGxlbWVudGF0aW9uIFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIHsK
KyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViRnJhbWU+IF9mcmFtZTsKK30KKworLSAodm9pZClk
ZWFsbG9jCit7CisgICAgX2ZyYW1lLT5+V2ViRnJhbWUoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107
Cit9CisKKy0gKEpTQ29udGV4dCAqKWpzQ29udGV4dEZvcldvcmxkOihXS1dlYlByb2Nlc3NQbHVn
SW5TY3JpcHRXb3JsZCAqKXdvcmxkCit7CisgICAgcmV0dXJuIFtKU0NvbnRleHQgY29udGV4dFdp
dGhKU0dsb2JhbENvbnRleHRSZWY6X2ZyYW1lLT5qc0NvbnRleHRGb3JXb3JsZCgmW3dvcmxkIF9z
Y3JpcHRXb3JsZF0pXTsKK30KKworLSAoV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAq
KWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQKK3sKKyAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGVIaXRU
ZXN0UmVzdWx0PiBoaXRUZXN0UmVzdWx0ID0gX2ZyYW1lLT5oaXRUZXN0KFdlYkNvcmU6OkludFBv
aW50KHBvaW50KSk7CisgICAgcmV0dXJuIFt3cmFwcGVyKCpoaXRUZXN0UmVzdWx0LnJlbGVhc2Uo
KS5sZWFrUmVmKCkpIGF1dG9yZWxlYXNlXTsKK30KKworLSAoSlNWYWx1ZSAqKWpzTm9kZUZvck5v
ZGVIYW5kbGU6KFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKilub2RlSGFuZGxlIGluV29y
bGQ6KFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQKK3sKKyAgICBKU1ZhbHVl
UmVmIHZhbHVlUmVmID0gX2ZyYW1lLT5qc1dyYXBwZXJGb3JXb3JsZCgmW25vZGVIYW5kbGUgX25v
ZGVIYW5kbGVdLCAmW3dvcmxkIF9zY3JpcHRXb3JsZF0pOworICAgIHJldHVybiBbSlNWYWx1ZSB2
YWx1ZVdpdGhKU1ZhbHVlUmVmOnZhbHVlUmVmIGluQ29udGV4dDpbc2VsZiBqc0NvbnRleHRGb3JX
b3JsZDp3b3JsZF1dOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVt
ZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9m
cmFtZTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vz
c1BsdWdJbkZyYW1lSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUlu
dGVybmFsLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5GcmFtZUludGVybmFsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJX
S09iamVjdC5oIgorI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUuaCIKKyNpbXBvcnQg
IldlYkZyYW1lLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgV0tXZWJQcm9jZXNz
UGx1Z0luRnJhbWUgKndyYXBwZXIoV2ViRnJhbWUmIGZyYW1lKQoreworICAgIEFTU0VSVChbZnJh
bWUud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W1dLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lIGNsYXNz
XV0pOworICAgIHJldHVybiAoV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZS53cmFwcGVy
KCk7IH0KK30KKworQGludGVyZmFjZSBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAoKSA8V0tPYmpl
Y3Q+CitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
SGl0VGVzdFJlc3VsdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0Zv
dW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgorCitAY2xhc3MgV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZTsKKwor
V0tfQVBJX0NMQVNTCitAaW50ZXJmYWNlIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQg
OiBOU09iamVjdAorCitAcHJvcGVydHkgKHJlYWRvbmx5KSBXS1dlYlByb2Nlc3NQbHVnSW5Ob2Rl
SGFuZGxlICpub2RlSGFuZGxlOworCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2Ev
V0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQ
bHVnSW5IaXRUZXN0UmVzdWx0Lm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVz
dFJlc3VsdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVz
dWx0SW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIldLV2ViUHJv
Y2Vzc1BsdWdJbk5vZGVIYW5kbGVJbnRlcm5hbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OworCitAaW1wbGVtZW50YXRpb24gV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCB7Cisg
ICAgQVBJOjpPYmplY3RTdG9yYWdlPEluamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdD4gX2hpdFRl
c3RSZXN1bHQ7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9oaXRUZXN0UmVzdWx0LT5+
SW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0KCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQor
CistIChXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICopbm9kZUhhbmRsZQoreworICAgIFJl
ZlB0cjxJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU+IG5vZGVIYW5kbGUgPSBfaGl0VGVzdFJlc3Vs
dC0+bm9kZUhhbmRsZSgpOworICAgIHJldHVybiBbd3JhcHBlcigqbm9kZUhhbmRsZS5yZWxlYXNl
KCkubGVha1JlZigpKSBhdXRvcmVsZWFzZV07Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBw
cm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAorewor
ICAgIHJldHVybiAqX2hpdFRlc3RSZXN1bHQ7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQ
SV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9D
b2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJuYWwuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29h
L1dLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVn
SW5IaXRUZXN0UmVzdWx0LmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJXS09i
amVjdC5oIgorI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitpbmxpbmUgV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAq
d3JhcHBlcihJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQmIGhpdFRlc3RSZXN1bHQpCit7Cisg
ICAgQVNTRVJUKFtoaXRUZXN0UmVzdWx0LndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltXS1dlYlBy
b2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0IGNsYXNzXV0pOworICAgIHJldHVybiAoV0tXZWJQcm9j
ZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAqKWhpdFRlc3RSZXN1bHQud3JhcHBlcigpOworfQorCit9
CisKK0BpbnRlcmZhY2UgV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdCAoKSA8V0tPYmpl
Y3Q+CitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0lu
Tm9kZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5kYXRpb24u
aD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgorCitXS19BUElfQ0xBU1MKK0BpbnRlcmZhY2UgV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhh
bmRsZSA6IE5TT2JqZWN0CitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQ
cm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2Rl
SGFuZGxlLm1tCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbQkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlSW50ZXJuYWwuaCIKKwor
I2lmIFdLX0FQSV9FTkFCTEVECisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbXBsZW1l
bnRhdGlvbiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlIHsKKyAgICBBUEk6Ok9iamVjdFN0
b3JhZ2U8SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlPiBfbm9kZUhhbmRsZTsKK30KKworLSAodm9p
ZClkZWFsbG9jCit7CisgICAgX25vZGVIYW5kbGUtPn5JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUo
KTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90
b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAg
IHJldHVybiAqX25vZGVIYW5kbGU7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLV2Vi
UHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgKEludGVybmFsKQorCistIChJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGUmKV9ub2RlSGFuZGxlCit7CisgICAgcmV0dXJuICpfbm9kZUhhbmRsZTsKK30KKwor
QGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGVJbnRl
cm5hbC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZUludGVybmFsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldL
V2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNp
bXBvcnQgIkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFu
ZGxlICp3cmFwcGVyKEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZSYgbm9kZUhhbmRsZSkKK3sKKyAg
ICBBU1NFUlQoW25vZGVIYW5kbGUud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W1dLV2ViUHJvY2Vz
c1BsdWdJbk5vZGVIYW5kbGUgY2xhc3NdXSk7CisgICAgcmV0dXJuIChXS1dlYlByb2Nlc3NQbHVn
SW5Ob2RlSGFuZGxlICopbm9kZUhhbmRsZS53cmFwcGVyKCk7Cit9CisKK30KKworQGludGVyZmFj
ZSBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlICgpIDxXS09iamVjdD4KK0BlbmQKKworQGlu
dGVyZmFjZSBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlIChJbnRlcm5hbCkKKworQHByb3Bl
cnR5IChyZWFkb25seSkgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUmIF9ub2RlSGFu
ZGxlOworCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1
Z0luU2NyaXB0V29ybGQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0Mi9XS0ZvdW5k
YXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgorCitXS19BUElfQ0xBU1MKK0BpbnRlcmZhY2UgV0tXZWJQcm9jZXNzUGx1Z0lu
U2NyaXB0V29ybGQgOiBOU09iamVjdAorCisrIChXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3Js
ZCAqKXdvcmxkOworKyAoV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgKilub3JtYWxXb3Js
ZDsKKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJ
blNjcmlwdFdvcmxkLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLm1t
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5oIgorCisjaWYgV0tf
QVBJX0VOQUJMRUQKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworQGltcGxlbWVudGF0aW9u
IFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIHsKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4gX3dvcmxkOworfQorCisrIChXS1dlYlByb2Nlc3NQ
bHVnSW5TY3JpcHRXb3JsZCAqKXdvcmxkCit7CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ+IHNjcmlwdFdvcmxkID0gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y3JlYXRl
KCk7CisgICAgcmV0dXJuIFt3cmFwcGVyKCpzY3JpcHRXb3JsZC5yZWxlYXNlKCkubGVha1JlZigp
KSBhdXRvcmVsZWFzZV07Cit9CisKKysgKFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICop
bm9ybWFsV29ybGQKK3sKKyAgICByZXR1cm4gW3dyYXBwZXIoKkluamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQ6Om5vcm1hbFdvcmxkKCkpIGF1dG9yZWxlYXNlXTsKK30KKworLSAodm9pZClkZWFsbG9j
Cit7CisgICAgX3dvcmxkLT5+SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCgpOworICAgIFtzdXBl
ciBkZWFsbG9jXTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVu
dGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfd29y
bGQ7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlw
dFdvcmxkIChJbnRlcm5hbCkKKworLSAoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCYpX3Njcmlw
dFdvcmxkCit7CisgICAgcmV0dXJuICpfd29ybGQ7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdL
X0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZEludGVybmFsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Q29jb2EvV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2Ev
V0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGRJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVnSW5T
Y3JpcHRXb3JsZC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiSW5qZWN0ZWRC
dW5kbGVTY3JpcHRXb3JsZC5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2lubGluZSBXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCAqd3JhcHBlcihJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiB3b3JsZCkKK3sKKyAgICBBU1NFUlQoW3dvcmxkLndy
YXBwZXIoKSBpc0tpbmRPZkNsYXNzOltXS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZCBjbGFz
c11dKTsKKyAgICByZXR1cm4gKFdLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkICopd29ybGQu
d3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgV0tXZWJQcm9jZXNzUGx1Z0luU2NyaXB0
V29ybGQgKCkgPFdLT2JqZWN0PgorQGVuZAorCitAaW50ZXJmYWNlIFdLV2ViUHJvY2Vzc1BsdWdJ
blNjcmlwdFdvcmxkIChJbnRlcm5hbCkKKworQHByb3BlcnR5IChyZWFkb25seSkgV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkJiBfc2NyaXB0V29ybGQ7CisKK0BlbmQKKworI2VuZGlm
IC8vIFdLX0FQSV9FTkFCTEVECg==
</data>

          </attachment>
      

    </bug>

</bugzilla>