<?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>108098</bug_id>
          
          <creation_ts>2013-01-28 11:51:23 -0800</creation_ts>
          <short_desc>Plug-ins should initialize their sandbox at creation time</short_desc>
          <delta_ts>2013-01-29 05:21:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>108182</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>mithro</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>817934</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-28 11:51:23 -0800</bug_when>
    <thetext>Plug-ins should initialize their sandbox at creation time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817941</commentid>
    <comment_count>1</comment_count>
      <attachid>185028</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-28 11:58:35 -0800</bug_when>
    <thetext>Created attachment 185028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817958</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 12:10:28 -0800</bug_when>
    <thetext>Attachment 185028 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/NetworkProcess/EntryPoint/mac/XPCService/NetworkService.Development/NetworkServiceMain.Development.mm&apos;, u&apos;Source/WebKit2/NetworkProcess/EntryPoint/mac/XPCService/NetworkService/NetworkServiceMain.mm&apos;, u&apos;Source/WebKit2/NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm&apos;, u&apos;Source/WebKit2/PluginProcess/EntryPoint/mac/LegacyProcess/PluginProcessMain.mm&apos;, u&apos;Source/WebKit2/PluginProcess/EntryPoint/mac/XPCService/PluginService.32/PluginService.32.Main.mm&apos;, u&apos;Source/WebKit2/PluginProcess/EntryPoint/mac/XPCService/PluginService.64/PluginService.64.Main.mm&apos;, u&apos;Source/WebKit2/PluginProcess/EntryPoint/mac/XPCService/PluginService.Development/PluginService.Development.Main.mm&apos;, u&apos;Source/WebKit2/PluginProcess/EntryPoint/mac/XPCService/PluginServiceEntryPoint.mm&apos;, u&apos;Source/WebKit2/PluginProcess/PluginProcess.cpp&apos;, u&apos;Source/WebKit2/PluginProcess/PluginProcess.h&apos;, u&apos;Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm&apos;, u&apos;Source/WebKit2/Shared/ChildProcess.h&apos;, u&apos;Source/WebKit2/Shared/EntryPointUtilities/mac/LegacyProcess/ChildProcessMain.h&apos;, u&apos;Source/WebKit2/Shared/EntryPointUtilities/mac/LegacyProcess/ChildProcessMain.mm&apos;, u&apos;Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceBootstrapper.Development.h&apos;, u&apos;Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceBootstrapper.h&apos;, u&apos;Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h&apos;, u&apos;Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm&apos;, u&apos;Source/WebKit2/Shared/Plugins/PluginProcessCreationParameters.cpp&apos;, u&apos;Source/WebKit2/Shared/Plugins/PluginProcessCreationParameters.h&apos;, u&apos;Source/WebKit2/UIProcess/Launcher/ProcessLauncher.h&apos;, u&apos;Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm&apos;, u&apos;Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp&apos;, u&apos;Source/WebKit2/UIProcess/Plugins/mac/PluginProcessProxyMac.mm&apos;, u&apos;Source/WebKit2/WebKit2.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/WebProcess/EntryPoint/mac/XPCService/WebContentService.Development/WebContentServiceMain.Development.mm&apos;, u&apos;Source/WebKit2/WebProcess/EntryPoint/mac/XPCService/WebContentService/WebContentServiceMain.mm&apos;, u&apos;Source/WebKit2/WebProcess/EntryPoint/mac/XPCService/WebContentServiceEntryPoint.mm&apos;]&quot; exit_code: 1
Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:47:  The parameter name &quot;identifier&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 26 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>817961</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-28 12:13:41 -0800</bug_when>
    <thetext>@mithro: I&apos;m not sure we want to be showing the whole command.  (See previous comment for context.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818122</commentid>
    <comment_count>4</comment_count>
      <attachid>185028</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-01-28 14:37:01 -0800</bug_when>
    <thetext>Comment on attachment 185028
Patch

I think you should use the name &quot;extraInitializationData&quot; instead of &quot;extraData&quot;. Looks great otherwise!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818347</commentid>
    <comment_count>5</comment_count>
      <attachid>185028</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-28 18:16:31 -0800</bug_when>
    <thetext>Comment on attachment 185028
Patch

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

Very nice!

&gt; Source/WebKit2/PluginProcess/mac/PluginProcessMac.mm:348
&gt; +    NSDictionary *defaults = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithBool:YES], @&quot;AppleMagnifiedMode&quot;, nil];

This is moved code, but a RetainPtr would be nice.

&gt; Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm:270
&gt; +        connectToService(launchOptions, true, that, didFinishLaunchingProcessFunction, instanceUUID.get());

&quot;true that&quot;!

&gt; Source/WebKit2/UIProcess/Plugins/mac/PluginProcessProxyMac.mm:142
&gt; +    // FIXME: We should rip this out once we have a good place to install plug-in
&gt; +    // sandbox profiles.

No need to wrap this short line.

&gt; Source/WebKit2/UIProcess/Plugins/mac/PluginProcessProxyMac.mm:143
&gt; +    NSString* sandboxProfileDirectoryPath = [[NSUserDefaults standardUserDefaults] stringForKey:WebKit2PlugInSandboxProfileDirectoryPathKey];

Misplaced star.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818510</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-28 21:59:39 -0800</bug_when>
    <thetext>Committed r141051: &lt;http://trac.webkit.org/changeset/141051&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185028</attachid>
            <date>2013-01-28 11:58:35 -0800</date>
            <delta_ts>2013-01-28 18:16:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108098-20130128115521.patch</filename>
            <type>text/plain</type>
            <size>60881</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MDk4NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDEzLTAxLTI4ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGx1Zy1pbnMgc2hvdWxkIGluaXRpYWxp
emUgdGhlaXIgc2FuZGJveCBhdCBjcmVhdGlvbiB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgwOTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIGFiaWxpdHkgdG8gYWRkIHN0cmluZyBr
ZXkvdmFsdWUgcGFpcnMgdG8gcHJvY2VzcyBjcmVhdGlvbiBwYXJhbWV0ZXJzCisgICAgICAgIHRv
IGFsbG93IHRoZSBwbHVnaW4gcHJvY2VzcyB0byBnZXQgcGFzc2VkIHRoZSBwbHVnaW4gcGF0aCB3
aGljaCBpbiB0dXJuIGFsbG93cworICAgICAgICB0aGUgcGx1Z2luIHRvIGluaXRpYWxpemUgaXRz
IHNhbmRib3ggYXQgdGhlIGNvcnJlY3QgdGltZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2UuRGV2ZWxvcG1lbnQvTmV0
d29ya1NlcnZpY2VNYWluLkRldmVsb3BtZW50Lm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2UvTmV0d29ya1NlcnZpY2VN
YWluLm1tOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZp
Y2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tOgorICAgICAgICAoTmV0d29ya1NlcnZpY2VJ
bml0aWFsaXplcik6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9MZWdh
Y3lQcm9jZXNzL1BsdWdpblByb2Nlc3NNYWluLm1tOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Q
cm9jZXNzTWFpbkRlbGVnYXRlOjpnZXRFeHRyYURhdGEpOgorICAgICAgICAoUGx1Z2luUHJvY2Vz
c01haW5EZWxlZ2F0ZSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9Y
UENTZXJ2aWNlL1BsdWdpblNlcnZpY2UuMzIvUGx1Z2luU2VydmljZS4zMi5NYWluLm1tOgorICAg
ICAgICAqIFBsdWdpblByb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9QbHVnaW5TZXJ2
aWNlLjY0L1BsdWdpblNlcnZpY2UuNjQuTWFpbi5tbToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNz
L0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvUGx1Z2luU2VydmljZS5EZXZlbG9wbWVudC9QbHVn
aW5TZXJ2aWNlLkRldmVsb3BtZW50Lk1haW4ubW06CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9F
bnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL1BsdWdpblNlcnZpY2VFbnRyeVBvaW50Lm1tOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBsdWdpblNlcnZpY2VJbml0aWFsaXplckRlbGVnYXRl
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OlBs
dWdpblNlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
U2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldEV4dHJhRGF0YSk6CisgICAgICAgIChQbHVn
aW5TZXJ2aWNlSW5pdGlhbGl6ZXIpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmluaXRpYWxpemVQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVBsdWdpblBy
b2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplUHJvY2Vz
c05hbWUpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplU2FuZGJv
eCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmg6CisgICAgICAgICog
UGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplUHJvY2Vzc05hbWUpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplU2FuZGJveCk6CisgICAgICAg
ICogU2hhcmVkL0NoaWxkUHJvY2Vzcy5oOgorICAgICAgICAoQ2hpbGRQcm9jZXNzSW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9t
YWMvTGVnYWN5UHJvY2Vzcy9DaGlsZFByb2Nlc3NNYWluLmg6CisgICAgICAgIChDaGlsZFByb2Nl
c3NNYWluRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NNYWluKToKKyAg
ICAgICAgKiBTaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvTGVnYWN5UHJvY2Vzcy9DaGls
ZFByb2Nlc3NNYWluLm1tOgorICAgICAgICAoV2ViS2l0OjpDaGlsZFByb2Nlc3NNYWluRGVsZWdh
dGU6OmdldEV4dHJhRGF0YSk6CisgICAgICAgICogU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMv
bWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUJvb3RzdHJhcHBlci5EZXZlbG9wbWVudC5oOgorICAg
ICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBTaGFyZWQv
RW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlQm9vdHN0cmFwcGVy
Lmg6CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VFdmVudEhhbmRsZXIpOgorICAgICAgICAq
IFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRy
eVBvaW50Lmg6IEFkZGVkLgorICAgICAgICAoWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGUp
OgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6WFBDU2Vy
dmljZUluaXRpYWxpemVyRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5p
dGlhbGl6ZXIpOgorICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6On5YUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxl
Z2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpn
ZXRDb25uZWN0aW9uSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OlhQQ1NlcnZpY2VJbml0
aWFsaXplckRlbGVnYXRlOjpnZXRDbGllbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6
WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldENsaWVudFByb2Nlc3NOYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGU6OmdldEV4dHJhRGF0
YSk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oOgor
ICAgICAgICAoTGF1bmNoT3B0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL21h
Yy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmNvbm5lY3RUb1NlcnZp
Y2UpOgorICAgICAgICAoV2ViS2l0Ojpjb25uZWN0VG9SZUV4ZWNTZXJ2aWNlKToKKyAgICAgICAg
KFdlYktpdDo6Y3JlYXRlU2VydmljZSk6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVByb2Nlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3JtSW5pdGlhbGl6ZUxhdW5j
aE9wdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1Nl
cnZpY2UvV2ViQ29udGVudFNlcnZpY2UuRGV2ZWxvcG1lbnQvV2ViQ29udGVudFNlcnZpY2VNYWlu
LkRldmVsb3BtZW50Lm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBD
U2VydmljZS9XZWJDb250ZW50U2VydmljZS9XZWJDb250ZW50U2VydmljZU1haW4ubW06CisgICAg
ICAgICogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2
aWNlRW50cnlQb2ludC5tbToKKyAgICAgICAgKFdlYkNvbnRlbnRTZXJ2aWNlSW5pdGlhbGl6ZXIp
OgorCiAyMDEzLTAxLTI4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIHdlYmtpdE5vdGlmaWNhdGlvbnMuY3JlYXRlSFRNTE5vdGlmaWNhdGlvbgpJbmRl
eDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2Vydmlj
ZS9OZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3JrU2Vydmlj
ZUVudHJ5UG9pbnQubW0JKHJldmlzaW9uIDE0MDk4NykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBv
aW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwzMyArMjgsMjEgQEAKICNpZiBIQVZFKFhQQykK
IAogI2ltcG9ydCAiRW52aXJvbm1lbnRVdGlsaXRpZXMuaCIKLSNpbXBvcnQgIldLQmFzZS5oIgot
I2ltcG9ydCAiV2ViS2l0MkluaXRpYWxpemUuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgi
Ci0jaW1wb3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KLSNpbXBvcnQgPHN0ZGlvLmg+Ci0jaW1wb3J0
IDxzdGRsaWIuaD4KLSNpbXBvcnQgPHhwYy94cGMuaD4KKyNpbXBvcnQgIldLQmFzZS5oIgorI2lt
cG9ydCAiWFBDU2VydmljZUVudHJ5UG9pbnQuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1leHRlcm4gIkMiIFdLX0VYUE9SVCB2b2lkIGlu
aXRpYWxpemVOZXR3b3JrU2VydmljZShjb25zdCBjaGFyKiBjbGllbnRJZGVudGlmaWVyLCB4cGNf
Y29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIG1hY2hfcG9ydF90IHNlcnZlclBvcnQsIGNvbnN0IGNo
YXIqIHVpUHJvY2Vzc05hbWUpOworZXh0ZXJuICJDIiBXS19FWFBPUlQgdm9pZCBOZXR3b3JrU2Vy
dmljZUluaXRpYWxpemVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHBjX29iamVjdF90
IGluaXRpYWxpemVyTWVzc2FnZSk7CiAKLXZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtTZXJ2aWNlKGNv
bnN0IGNoYXIqIGNsaWVudElkZW50aWZpZXIsIHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwg
bWFjaF9wb3J0X3Qgc2VydmVyUG9ydCwgY29uc3QgY2hhciogdWlQcm9jZXNzTmFtZSkKK3ZvaWQg
TmV0d29ya1NlcnZpY2VJbml0aWFsaXplcih4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIHhw
Y19vYmplY3RfdCBpbml0aWFsaXplck1lc3NhZ2UpCiB7Ci0gICAgLy8gUmVtb3ZlIHRoZSBTZWNJ
dGVtU2hpbSBzaGltIGZyb20gdGhlIERZTERfSU5TRVJUX0xJQlJBUklFUyBlbnZpcm9ubWVudCB2
YXJpYWJsZSBzbyBhbnkgcHJvY2Vzc2VzIHNwYXduZWQgYnkKKyAgICAvLyBSZW1vdmUgdGhlIFNl
Y0l0ZW1TaGltIGZyb20gdGhlIERZTERfSU5TRVJUX0xJQlJBUklFUyBlbnZpcm9ubWVudCB2YXJp
YWJsZSBzbyBhbnkgcHJvY2Vzc2VzIHNwYXduZWQgYnkKICAgICAvLyB0aGUgdGhpcyBwcm9jZXNz
IGRvbid0IHRyeSB0byBpbnNlcnQgdGhlIHNoaW0gYW5kIGNyYXNoLgogICAgIEVudmlyb25tZW50
VXRpbGl0aWVzOjpzdHJpcFZhbHVlc0VuZGluZ1dpdGhTdHJpbmcoIkRZTERfSU5TRVJUX0xJQlJB
UklFUyIsICIvU2VjSXRlbVNoaW0uZHlsaWIiKTsKIAotICAgIEluaXRpYWxpemVXZWJLaXQyKCk7
Ci0KLSAgICBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsK
LSAgICBwYXJhbWV0ZXJzLnVpUHJvY2Vzc05hbWUgPSB1aVByb2Nlc3NOYW1lOwotICAgIHBhcmFt
ZXRlcnMuY2xpZW50SWRlbnRpZmllciA9IGNsaWVudElkZW50aWZpZXI7Ci0gICAgcGFyYW1ldGVy
cy5jb25uZWN0aW9uSWRlbnRpZmllciA9IENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIo
c2VydmVyUG9ydCwgY29ubmVjdGlvbik7Ci0KLSAgICBOZXR3b3JrUHJvY2Vzczo6c2hhcmVkKCku
aW5pdGlhbGl6ZShwYXJhbWV0ZXJzKTsKKyAgICBYUENTZXJ2aWNlSW5pdGlhbGl6ZXI8TmV0d29y
a1Byb2Nlc3MsIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlPihjb25uZWN0aW9uLCBpbml0
aWFsaXplck1lc3NhZ2UpOwogfQogCiAjZW5kaWYgLy8gSEFWRShYUEMpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtT
ZXJ2aWNlLkRldmVsb3BtZW50L05ldHdvcmtTZXJ2aWNlTWFpbi5EZXZlbG9wbWVudC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9Y
UENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlLkRldmVsb3BtZW50L05ldHdvcmtTZXJ2aWNlTWFpbi5E
ZXZlbG9wbWVudC5tbQkocmV2aXNpb24gMTQwOTg3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZS5EZXZlbG9w
bWVudC9OZXR3b3JrU2VydmljZU1haW4uRGV2ZWxvcG1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci0jZGVmaW5lIFdFQktJVF9YUENfU0VSVklDRV9JTklUSUFMSVpFUiBpbml0aWFsaXplTmV0d29y
a1NlcnZpY2UKKyNkZWZpbmUgV0VCS0lUX1hQQ19TRVJWSUNFX0lOSVRJQUxJWkVSIE5ldHdvcmtT
ZXJ2aWNlSW5pdGlhbGl6ZXIKICNpbmNsdWRlICJYUENTZXJ2aWNlQm9vdHN0cmFwcGVyLkRldmVs
b3BtZW50LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNl
L05ldHdvcmtTZXJ2aWNlTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlL05ldHdv
cmtTZXJ2aWNlTWFpbi5tbQkocmV2aXNpb24gMTQwOTg3KQorKysgU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZS9OZXR3
b3JrU2VydmljZU1haW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jZGVmaW5lIFdFQktJVF9YUENf
U0VSVklDRV9JTklUSUFMSVpFUiBpbml0aWFsaXplTmV0d29ya1NlcnZpY2UKKyNkZWZpbmUgV0VC
S0lUX1hQQ19TRVJWSUNFX0lOSVRJQUxJWkVSIE5ldHdvcmtTZXJ2aWNlSW5pdGlhbGl6ZXIKICNp
bmNsdWRlICJYUENTZXJ2aWNlQm9vdHN0cmFwcGVyLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vz
cy5jcHAJKHJldmlzaW9uIDE0MDk4NykKKysrIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3LDE1ICs4NywxMCBAQCBQbHVn
aW5Qcm9jZXNzOjp+UGx1Z2luUHJvY2VzcygpCiAKIHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlh
bGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQogeworICAgIG1fcGx1Z2luUGF0aCA9IHBhcmFtZXRlcnMuZXh0cmFEYXRhLmdl
dCgicGx1Z2luLXBhdGgiKTsKICAgICBwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNzKHBhcmFtZXRl
cnMpOwogfQogCi0jaWYgIVBMQVRGT1JNKE1BQykKLXZvaWQgUGx1Z2luUHJvY2Vzczo6ZW50ZXJT
YW5kYm94KGNvbnN0IFN0cmluZyYpCi17Ci19Ci0jZW5kaWYKLQogdm9pZCBQbHVnaW5Qcm9jZXNz
OjpyZW1vdmVXZWJQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzQ29ubmVjdGlvbiogd2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24pCiB7CiAgICAgc2l6ZV90IHZlY3RvckluZGV4ID0gbV93ZWJQcm9jZXNz
Q29ubmVjdGlvbnMuZmluZCh3ZWJQcm9jZXNzQ29ubmVjdGlvbik7CkBAIC0xNTUsNyArMTUwLDYg
QEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjppbml0aWFsaXplUGx1Z2luUHJvYwogewogICAgIEFTU0VS
VCghbV9wbHVnaW5Nb2R1bGUpOwogCi0gICAgbV9wbHVnaW5QYXRoID0gcGFyYW1ldGVycy5wbHVn
aW5QYXRoOwogICAgIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbiA9
IHBhcmFtZXRlcnMuc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsKICAg
ICBzZXRNaW5pbXVtTGlmZXRpbWUocGFyYW1ldGVycy5taW5pbXVtTGlmZXRpbWUpOwogICAgIHNl
dFRlcm1pbmF0aW9uVGltZW91dChwYXJhbWV0ZXJzLnRlcm1pbmF0aW9uVGltZW91dCk7CkBAIC0y
NjQsNiArMjU4LDE2IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6bWluaW11bUxpZmV0aW1lVGltZXIK
ICAgICBlbmFibGVUZXJtaW5hdGlvbigpOwogfQogCisjaWYgIVBMQVRGT1JNKE1BQykKK3ZvaWQg
UGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lKGNvbnN0IENoaWxkUHJvY2Vzc0lu
aXRpYWxpemF0aW9uUGFyYW1ldGVycyYpCit7Cit9CisKK3ZvaWQgUGx1Z2luUHJvY2Vzczo6aW5p
dGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
JiwgU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpCit7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaAkocmV2
aXNpb24gMTQwOTg3KQorKysgU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9j
ZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgUnVuTG9vcDsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IE5ldHNjYXBlUGx1Z2luTW9kdWxlOwpAQCAtNzIsMTYgKzY4LDExIEBAIHByaXZhdGU6CiAgICAg
UGx1Z2luUHJvY2VzcygpOwogICAgIH5QbHVnaW5Qcm9jZXNzKCk7CiAKLSAgICB2b2lkIGVudGVy
U2FuZGJveChjb25zdCBTdHJpbmcmIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aCk7Ci0KICAg
ICAvLyBDaGlsZFByb2Nlc3MKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVByb2Nlc3MoY29u
c3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nlc3NJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlh
bGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiwg
U2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRUZXJtaW5hdGUoKSBPVkVSUklERTsKLQotICAgIC8vIFByZXZlbnQgZW50ZXJp
bmcgdGhlIHNhbmRib3ggZHVyaW5nIGZpcnN0IHN0YWdlIG9mIHByb2Nlc3MgaW5pdGlhbGl6YXRp
b24uIFdlIGNhbid0IGRvIGVudGVyIHRoZSBzYW5kYm94IGJlZm9yZSByZWNlaXZpbmcKLSAgICAv
LyBzYW5kYm94IHByb2ZpbGUgZGlyZWN0b3J5IGluIGluaXRpYWxpemF0aW9uIG1lc3NhZ2UuCi0g
ICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRp
YWxpemF0aW9uUGFyYW1ldGVycyYsIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBP
VkVSUklERSB7IH0KLQogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBD
aGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKTsKIAogICAgIC8vIENvcmVJUEM6
OkNvbm5lY3Rpb246OkNsaWVudApAQCAtMTAwLDEwICs5MSw2IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgdm9pZCBzZXRNaW5pbXVtTGlmZXRpbWUoZG91YmxlKTsKICAgICB2b2lkIG1pbmltdW1MaWZl
dGltZVRpbWVyRmlyZWQoKTsKLQotICAgIC8vIFN0b3JlZCBmb3IgZGVsYXllZCBzYW5kYm94IGlu
aXRpYWxpemF0aW9uLgotICAgIENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyBt
X2NoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVyczsKLQogICAgIC8vIE91ciB3ZWIg
cHJvY2VzcyBjb25uZWN0aW9ucy4KICAgICBWZWN0b3I8UmVmUHRyPFdlYlByb2Nlc3NDb25uZWN0
aW9uPiA+IG1fd2ViUHJvY2Vzc0Nvbm5lY3Rpb25zOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2FjeVByb2Nlc3MvUGx1Z2luUHJvY2Vzc01h
aW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9FbnRyeVBv
aW50L21hYy9MZWdhY3lQcm9jZXNzL1BsdWdpblByb2Nlc3NNYWluLm1tCShyZXZpc2lvbiAxNDA5
ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvbWFjL0xlZ2Fj
eVByb2Nlc3MvUGx1Z2luUHJvY2Vzc01haW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgw
LDIyIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBnZXRF
eHRyYURhdGEoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dHJhRGF0YSkKKyAgICB7CisgICAg
ICAgIFN0cmluZyBwbHVnaW5QYXRoID0gbV9jb21tYW5kTGluZVsicGx1Z2luLXBhdGgiXTsKKyAg
ICAgICAgaWYgKHBsdWdpblBhdGguaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBleHRyYURhdGEuYWRkKCJwbHVnaW4tcGF0aCIsIHBsdWdpblBhdGgpOworCisg
ICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3RvcCBwYXNzaW5nIHRoaXMgYW5kIGhhdmUgaXQg
aW4gYSBoYXJkIGNvZGVkIHBsYWNlLiBGb3Igbm93CisgICAgICAgIC8vIHRob3VnaCwgbGV0IHRo
ZSBhYnNlbmNlIG9mIGEgc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoIGluZGljYXRlIG5vIHBs
dWdpbgorICAgICAgICAvLyBzYW5kYm94aW5nIHNob3VsZCB0YWtlIHBsYWNlLgorICAgICAgICBT
dHJpbmcgc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoID0gbV9jb21tYW5kTGluZVsic2FuZGJv
eC1wcm9maWxlLWRpcmVjdG9yeS1wYXRoIl07CisgICAgICAgIGV4dHJhRGF0YS5hZGQoInNhbmRi
b3gtcHJvZmlsZS1kaXJlY3RvcnktcGF0aCIsIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aCk7
CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCiAgICAgdmlydHVhbCB2b2lkIGRvUG9z
dFJ1bldvcmsoKQogICAgIHsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwODAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvRW50cnlQb2ludC9tYWMv
WFBDU2VydmljZS9QbHVnaW5TZXJ2aWNlRW50cnlQb2ludC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvUGx1Z2lu
U2VydmljZUVudHJ5UG9pbnQubW0JKHJldmlzaW9uIDE0MDk4NykKKysrIFNvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9QbHVnaW5TZXJ2aWNlRW50
cnlQb2ludC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsMzQgKzI4LDU0IEBACiAjaWYgSEFWRShY
UEMpCiAKICNpbXBvcnQgIkVudmlyb25tZW50VXRpbGl0aWVzLmgiCi0jaW1wb3J0ICJXS0Jhc2Uu
aCIKLSNpbXBvcnQgIldlYktpdDJJbml0aWFsaXplLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNz
LmgiCisjaW1wb3J0ICJXS0Jhc2UuaCIKKyNpbXBvcnQgIlhQQ1NlcnZpY2VFbnRyeVBvaW50Lmgi
CiAjaW1wb3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KLSNpbXBvcnQgPHhwYy94cGMuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBsdWdpblNlcnZpY2VJbml0aWFsaXplckRlbGVnYXRl
IDogcHVibGljIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBQ
bHVnaW5TZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZSh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rp
b24sIHhwY19vYmplY3RfdCBpbml0aWFsaXplck1lc3NhZ2UpCisgICAgICAgIDogWFBDU2Vydmlj
ZUluaXRpYWxpemVyRGVsZWdhdGUoY29ubmVjdGlvbiwgaW5pdGlhbGl6ZXJNZXNzYWdlKQorICAg
IHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXh0cmFEYXRhKEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+JiBleHRyYURhdGEpCisgICAgeworICAgICAgICBTdHJpbmcgcGx1Z2luUGF0aCA9
IHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJwbHVnaW4t
cGF0aCIpOworICAgICAgICBpZiAocGx1Z2luUGF0aC5pc0VtcHR5KCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGV4dHJhRGF0YS5hZGQoInBsdWdpbi1wYXRoIiwgcGx1Z2lu
UGF0aCk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzdG9wIHBhc3NpbmcgdGhpcyBh
bmQgaGF2ZSBpdCBpbiBhIGhhcmQgY29kZWQgcGxhY2UuIEZvciBub3cKKyAgICAgICAgLy8gdGhv
dWdoLCBsZXQgdGhlIGFic2VuY2Ugb2YgYSBzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGggaW5k
aWNhdGUgbm8gcGx1Z2luCisgICAgICAgIC8vIHNhbmRib3hpbmcgc2hvdWxkIHRha2UgcGxhY2Uu
CisgICAgICAgIFN0cmluZyBzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGggPSB4cGNfZGljdGlv
bmFyeV9nZXRfc3RyaW5nKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAic2FuZGJveC1wcm9maWxlLWRp
cmVjdG9yeS1wYXRoIik7CisgICAgICAgIGV4dHJhRGF0YS5hZGQoInNhbmRib3gtcHJvZmlsZS1k
aXJlY3RvcnktcGF0aCIsIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aCk7CisKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotZXh0ZXJuICJD
IiBXS19FWFBPUlQgdm9pZCBpbml0aWFsaXplUGx1Z2luU2VydmljZShjb25zdCBjaGFyKiBjbGll
bnRJZGVudGlmaWVyLCB4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIG1hY2hfcG9ydF90IHNl
cnZlclBvcnQsIGNvbnN0IGNoYXIqIHVpUHJvY2Vzc05hbWUpOworZXh0ZXJuICJDIiBXS19FWFBP
UlQgdm9pZCBQbHVnaW5TZXJ2aWNlSW5pdGlhbGl6ZXIoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0
aW9uLCB4cGNfb2JqZWN0X3QgaW5pdGlhbGl6ZXJNZXNzYWdlKTsKIAotdm9pZCBpbml0aWFsaXpl
UGx1Z2luU2VydmljZShjb25zdCBjaGFyKiBjbGllbnRJZGVudGlmaWVyLCB4cGNfY29ubmVjdGlv
bl90IGNvbm5lY3Rpb24sIG1hY2hfcG9ydF90IHNlcnZlclBvcnQsIGNvbnN0IGNoYXIqIHVpUHJv
Y2Vzc05hbWUpCit2b2lkIFBsdWdpblNlcnZpY2VJbml0aWFsaXplcih4cGNfY29ubmVjdGlvbl90
IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfdCBpbml0aWFsaXplck1lc3NhZ2UpCiB7CisgICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciB0ZWFyZG93biBmcm9tIFBsdWdpblByb2Nlc3NNYWluLm1t
CisKICAgICAvLyBSZW1vdmUgdGhlIFBsdWdpblByb2Nlc3Mgc2hpbSBmcm9tIHRoZSBEWUxEX0lO
U0VSVF9MSUJSQVJJRVMgZW52aXJvbm1lbnQgdmFyaWFibGUgc28gYW55IHByb2Nlc3NlcwogICAg
IC8vIHNwYXduZWQgYnkgdGhlIFBsdWdpblByb2Nlc3MgZG9uJ3QgdHJ5IHRvIGluc2VydCB0aGUg
c2hpbSBhbmQgY3Jhc2guCiAgICAgRW52aXJvbm1lbnRVdGlsaXRpZXM6OnN0cmlwVmFsdWVzRW5k
aW5nV2l0aFN0cmluZygiRFlMRF9JTlNFUlRfTElCUkFSSUVTIiwgIi9QbHVnaW5Qcm9jZXNzU2hp
bS5keWxpYiIpOwotCiAgICAgUnVuTG9vcDo6c2V0VXNlQXBwbGljYXRpb25SdW5Mb29wT25NYWlu
UnVuTG9vcCgpOwotICAgIEluaXRpYWxpemVXZWJLaXQyKCk7Ci0KLSAgICBDaGlsZFByb2Nlc3NJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0ZXJzLnVpUHJv
Y2Vzc05hbWUgPSB1aVByb2Nlc3NOYW1lOwotICAgIHBhcmFtZXRlcnMuY2xpZW50SWRlbnRpZmll
ciA9IGNsaWVudElkZW50aWZpZXI7Ci0gICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmll
ciA9IENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoc2VydmVyUG9ydCwgY29ubmVjdGlv
bik7CiAKLSAgICBQbHVnaW5Qcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKHBhcmFtZXRlcnMp
OwotCi0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB0ZWFyZG93biBmcm9tIFBsdWdpblBy
b2Nlc3NNYWluLm1tCisgICAgWFBDU2VydmljZUluaXRpYWxpemVyPFBsdWdpblByb2Nlc3MsIFBs
dWdpblNlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlPihjb25uZWN0aW9uLCBpbml0aWFsaXplck1l
c3NhZ2UpOwogfQogCiAjZW5kaWYgLy8gSEFWRShYUEMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvUGx1Z2luU2VydmljZS4zMi9Q
bHVnaW5TZXJ2aWNlLjMyLk1haW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL1BsdWdpblNlcnZpY2UuMzIvUGx1
Z2luU2VydmljZS4zMi5NYWluLm1tCShyZXZpc2lvbiAxNDA5ODcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvUGx1Z2luU2VydmljZS4z
Mi9QbHVnaW5TZXJ2aWNlLjMyLk1haW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jZGVmaW5lIFdF
QktJVF9YUENfU0VSVklDRV9JTklUSUFMSVpFUiBpbml0aWFsaXplUGx1Z2luU2VydmljZQorI2Rl
ZmluZSBXRUJLSVRfWFBDX1NFUlZJQ0VfSU5JVElBTElaRVIgUGx1Z2luU2VydmljZUluaXRpYWxp
emVyCiAjaW5jbHVkZSAiWFBDU2VydmljZUJvb3RzdHJhcHBlci5oIgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwpJbmRleDogU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50
L21hYy9YUENTZXJ2aWNlL1BsdWdpblNlcnZpY2UuNjQvUGx1Z2luU2VydmljZS42NC5NYWluLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvRW50cnlQb2ludC9t
YWMvWFBDU2VydmljZS9QbHVnaW5TZXJ2aWNlLjY0L1BsdWdpblNlcnZpY2UuNjQuTWFpbi5tbQko
cmV2aXNpb24gMTQwOTg3KQorKysgU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9FbnRyeVBv
aW50L21hYy9YUENTZXJ2aWNlL1BsdWdpblNlcnZpY2UuNjQvUGx1Z2luU2VydmljZS42NC5NYWlu
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2RlZmluZSBXRUJLSVRfWFBDX1NFUlZJQ0VfSU5JVElB
TElaRVIgaW5pdGlhbGl6ZVBsdWdpblNlcnZpY2UKKyNkZWZpbmUgV0VCS0lUX1hQQ19TRVJWSUNF
X0lOSVRJQUxJWkVSIFBsdWdpblNlcnZpY2VJbml0aWFsaXplcgogI2luY2x1ZGUgIlhQQ1NlcnZp
Y2VCb290c3RyYXBwZXIuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9QbHVnaW5T
ZXJ2aWNlLkRldmVsb3BtZW50L1BsdWdpblNlcnZpY2UuRGV2ZWxvcG1lbnQuTWFpbi5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQ
Q1NlcnZpY2UvUGx1Z2luU2VydmljZS5EZXZlbG9wbWVudC9QbHVnaW5TZXJ2aWNlLkRldmVsb3Bt
ZW50Lk1haW4ubW0JKHJldmlzaW9uIDE0MDk4NykKKysrIFNvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9QbHVnaW5TZXJ2aWNlLkRldmVsb3BtZW50
L1BsdWdpblNlcnZpY2UuRGV2ZWxvcG1lbnQuTWFpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMs
NyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNk
ZWZpbmUgV0VCS0lUX1hQQ19TRVJWSUNFX0lOSVRJQUxJWkVSIGluaXRpYWxpemVQbHVnaW5TZXJ2
aWNlCisjZGVmaW5lIFdFQktJVF9YUENfU0VSVklDRV9JTklUSUFMSVpFUiBQbHVnaW5TZXJ2aWNl
SW5pdGlhbGl6ZXIKICNpbmNsdWRlICJYUENTZXJ2aWNlQm9vdHN0cmFwcGVyLkRldmVsb3BtZW50
LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0JKHJldmlzaW9uIDE0
MDk4NykKKysrIFNvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3MCwzMSArMjcwLDYgQEAgc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZUNvY29hT3ZlcnJpZGVzKCkKICAgICBDRlJldGFpbihvcmRlck9mZlNjcmVlbk9ic2Vy
dmVyKTsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVQcm9jZXNz
KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykK
LXsKLSAgICBtX2NoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyA9IHBhcmFtZXRl
cnM7Ci0KLSAgICBSdW5Mb29wOjpzZXRVc2VBcHBsaWNhdGlvblJ1bkxvb3BPbk1haW5SdW5Mb29w
KCk7Ci0KLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQotICAgIC8vIEluaXRpYWxpemUgdGhlIHNoaW0u
Ci0gICAgaW5pdGlhbGl6ZVNoaW0oKTsKLSNlbmRpZgotCi0gICAgLy8gSW5pdGlhbGl6ZSBDb2Nv
YSBvdmVycmlkZXMuCi0gICAgaW5pdGlhbGl6ZUNvY29hT3ZlcnJpZGVzKCk7Ci0KLSAgICAvLyBG
SVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIHByb3h5IFNldEN1cnNvciBjYWxscyBvdmVyIHRv
IHRoZSBVSSBwcm9jZXNzIGluc3RlYWQgb2YKLSAgICAvLyBhbGxvd2luZyBwbHVnLWlucyB0byBj
aGFuZ2UgdGhlIG1vdXNlIGN1cnNvciBhdCBhbnkgdGltZS4KLSAgICBXS0VuYWJsZVNldHRpbmdD
dXJzb3JXaGVuSW5CYWNrZ3JvdW5kKCk7Ci0KLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQotICAgIE5T
RGljdGlvbmFyeSAqZGVmYXVsdHMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmpl
Y3RzQW5kS2V5czpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgQCJBcHBsZU1hZ25pZmll
ZE1vZGUiLCBuaWxdOwotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
IHJlZ2lzdGVyRGVmYXVsdHM6ZGVmYXVsdHNdOwotICAgIFtkZWZhdWx0cyByZWxlYXNlXTsKLSNl
bmRpZgotfQotCiB2b2lkIFBsdWdpblByb2Nlc3M6OnNldE1vZGFsV2luZG93SXNTaG93aW5nKGJv
b2wgbW9kYWxXaW5kb3dJc1Nob3dpbmcpCiB7CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpTZXRNb2RhbFdpbmRvd0lzU2hv
d2luZyhtb2RhbFdpbmRvd0lzU2hvd2luZyksIDApOwpAQCAtMzUxLDI4ICszMjYsNDAgQEAgc3Rh
dGljIHZvaWQgbXV0ZUF1ZGlvKHZvaWQpCiB2b2lkIFBsdWdpblByb2Nlc3M6OnBsYXRmb3JtSW5p
dGlhbGl6ZVBsdWdpblByb2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKICAgICBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCA9IHBh
cmFtZXRlcnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQucG9ydCgpOworICAgIGlmIChwYXJh
bWV0ZXJzLnByb2Nlc3NUeXBlID09IFR5cGVTbmFwc2hvdFByb2Nlc3MpCisgICAgICAgIG11dGVB
dWRpbygpOworfQogCi0gICAgTlNTdHJpbmcgKmFwcGxpY2F0aW9uTmFtZSA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIiVAICglQCBJbnRlcm5ldCBwbHVnLWluKSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAidmlzaWJsZSBuYW1lIG9mIHRoZSBwbHVnLWluIGhvc3QgcHJvY2Vzcy4g
VGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBwbHVnLWluIG5hbWUgIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFu
ZCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBhcHBsaWNhdGlvbiBuYW1lLiIpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW1soTlNTdHJpbmcgKilwYXJhbWV0ZXJzLnBsdWdp
blBhdGggbGFzdFBhdGhDb21wb25lbnRdIHN0cmluZ0J5RGVsZXRpbmdQYXRoRXh0ZW5zaW9uXSwg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTlNTdHJpbmcgKilwYXJhbWV0ZXJz
LnBhcmVudFByb2Nlc3NOYW1lXTsKLSAgICAKLSAgICBXS1NldFZpc2libGVBcHBsaWNhdGlvbk5h
bWUoKENGU3RyaW5nUmVmKWFwcGxpY2F0aW9uTmFtZSk7Cit2b2lkIFBsdWdpblByb2Nlc3M6OnBs
YXRmb3JtSW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQoreworI2lmIGRlZmluZWQoX19pMzg2X18pCisgICAgLy8g
SW5pdGlhbGl6ZSB0aGUgc2hpbS4KKyAgICBpbml0aWFsaXplU2hpbSgpOworI2VuZGlmCiAKLSAg
ICAvLyBGSVhNRTogUGx1Z2luUHJvY2VzcyBpbml0aWFsaXplcyBzYW5kYm94IGxhdGVyIHRoYW4g
bm9ybWFsIGZvciBDaGlsZFByb2Nlc3NlcywgYmVjYXVzZSBpdCBuZWVkcwotICAgIC8vIHRvIGtu
b3cgcHJvZmlsZSBkaXJlY3RvcnkgcGF0aC4gU3dpdGNoIHRvIG5vcm1hbCBpbml0aWFsaXphdGlv
biBzY2hlbWUgb25jZSB0aGUgcGF0aCBjYW4gYmUgZGV0ZXJtaW5lZCBlYXJsaWVyLgotICAgIGVu
dGVyU2FuZGJveChwYXJhbWV0ZXJzLnNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aCk7CisgICAg
Ly8gSW5pdGlhbGl6ZSBDb2NvYSBvdmVycmlkZXMuCisgICAgaW5pdGlhbGl6ZUNvY29hT3ZlcnJp
ZGVzKCk7CiAKLSAgICBpZiAocGFyYW1ldGVycy5wcm9jZXNzVHlwZSA9PSBUeXBlU25hcHNob3RQ
cm9jZXNzKQotICAgICAgICBtdXRlQXVkaW8oKTsKKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUg
YmV0dGVyIHRvIHByb3h5IFNldEN1cnNvciBjYWxscyBvdmVyIHRvIHRoZSBVSSBwcm9jZXNzIGlu
c3RlYWQgb2YKKyAgICAvLyBhbGxvd2luZyBwbHVnLWlucyB0byBjaGFuZ2UgdGhlIG1vdXNlIGN1
cnNvciBhdCBhbnkgdGltZS4KKyAgICBXS0VuYWJsZVNldHRpbmdDdXJzb3JXaGVuSW5CYWNrZ3Jv
dW5kKCk7CisKKyNpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgIE5TRGljdGlvbmFyeSAqZGVmYXVs
dHMgPSBbW05TRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgQCJBcHBsZU1hZ25pZmllZE1vZGUiLCBuaWxdOworICAg
IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlZ2lzdGVyRGVmYXVsdHM6
ZGVmYXVsdHNdOworICAgIFtkZWZhdWx0cyByZWxlYXNlXTsKKyNlbmRpZgogfQogCi12b2lkIFBs
dWdpblByb2Nlc3M6OmVudGVyU2FuZGJveChjb25zdCBTdHJpbmcmIHNhbmRib3hQcm9maWxlRGly
ZWN0b3J5UGF0aCkKK3ZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVByb2Nlc3NOYW1lKGNv
bnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsK
LSAgICBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzIHNhbmRib3hQYXJhbWV0ZXJzOwor
ICAgIE5TU3RyaW5nICphcHBsaWNhdGlvbk5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpXRUJfVUlfU1RSSU5HKCIlQCAoJUAgSW50ZXJuZXQgcGx1Zy1pbikiLCAidmlzaWJsZSBuYW1l
IG9mIHRoZSBwbHVnLWluIGhvc3QgcHJvY2Vzcy4gVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBw
bHVnLWluIG5hbWUgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5h
bWUuIiksIFtbKE5TU3RyaW5nICopbV9wbHVnaW5QYXRoIGxhc3RQYXRoQ29tcG9uZW50XSBzdHJp
bmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbl0sIChOU1N0cmluZyAqKXBhcmFtZXRlcnMudWlQcm9j
ZXNzTmFtZV07CisgICAgV0tTZXRWaXNpYmxlQXBwbGljYXRpb25OYW1lKChDRlN0cmluZ1JlZilh
cHBsaWNhdGlvbk5hbWUpOworfQogCi0gICAgU3RyaW5nIHNhbmRib3hQcm9maWxlID0gbG9hZFNh
bmRib3hQcm9maWxlKG1fcGx1Z2luUGF0aCwgc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoKTsK
K3ZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9jZXNz
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBTYW5kYm94SW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzJiBzYW5kYm94UGFyYW1ldGVycykKK3sKKyAgICBTdHJpbmcgc2FuZGJveFBy
b2ZpbGUgPSBsb2FkU2FuZGJveFByb2ZpbGUobV9wbHVnaW5QYXRoLCBwYXJhbWV0ZXJzLmV4dHJh
RGF0YS5nZXQoInNhbmRib3gtcHJvZmlsZS1kaXJlY3RvcnktcGF0aCIpKTsKICAgICBpZiAoc2Fu
ZGJveFByb2ZpbGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTQwMyw3ICszOTAs
NyBAQCB2b2lkIFBsdWdpblByb2Nlc3M6OmVudGVyU2FuZGJveChjb25zdCBTCiAgICAgUmV0YWlu
UHRyPE5TRGljdGlvbmFyeT4gZGVmYXVsdHMgPSBhZG9wdE5TKFtbTlNEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOltOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCBA
Ik5TVXNlUmVtb3RlU2F2ZVBhbmVsIiwgbmlsXSk7CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFu
ZGFyZFVzZXJEZWZhdWx0c10gcmVnaXN0ZXJEZWZhdWx0czpkZWZhdWx0cy5nZXQoKV07CiAKLSAg
ICBDaGlsZFByb2Nlc3M6OmluaXRpYWxpemVTYW5kYm94KG1fY2hpbGRQcm9jZXNzSW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzLCBzYW5kYm94UGFyYW1ldGVycyk7CisgICAgQ2hpbGRQcm9jZXNzOjpp
bml0aWFsaXplU2FuZGJveChwYXJhbWV0ZXJzLCBzYW5kYm94UGFyYW1ldGVycyk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJv
Y2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9DaGlsZFByb2Nlc3Mu
aAkocmV2aXNpb24gMTQwOTg3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vz
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJl
Y2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00MSw2ICs0Myw3
IEBAIHN0cnVjdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXQKICAgICBTdHJpbmcg
dWlQcm9jZXNzTmFtZTsKICAgICBTdHJpbmcgY2xpZW50SWRlbnRpZmllcjsKICAgICBDb3JlSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyOworICAgIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IGV4dHJhRGF0YTsKIH07CiAKIGNsYXNzIENoaWxkUHJvY2VzcyA6
IHByb3RlY3RlZCBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQsIHB1YmxpYyBDb3JlSVBDOjpN
ZXNzYWdlU2VuZGVyPENoaWxkUHJvY2Vzcz4gewpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL0xlZ2FjeVByb2Nlc3MvQ2hpbGRQcm9jZXNzTWFpbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L21hYy9MZWdhY3lQcm9jZXNzL0NoaWxkUHJvY2Vzc01haW4uaAkocmV2aXNpb24gMTQwOTg3KQor
KysgU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL0xlZ2FjeVBy
b2Nlc3MvQ2hpbGRQcm9jZXNzTWFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZ2V0Q29ubmVjdGlvbklkZW50aWZpZXIoQ29yZUlQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciYgaWRlbnRpZmllcik7CiAgICAgdmlydHVhbCBib29s
IGdldENsaWVudElkZW50aWZpZXIoU3RyaW5nJiBjbGllbnRJZGVudGlmaWVyKTsKICAgICB2aXJ0
dWFsIGJvb2wgZ2V0Q2xpZW50UHJvY2Vzc05hbWUoU3RyaW5nJiBjbGllbnRQcm9jZXNzTmFtZSk7
CisgICAgdmlydHVhbCBib29sIGdldEV4dHJhRGF0YShIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYg
ZXh0cmFEYXRhKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkb1Bvc3RSdW5Xb3JrKCk7CiAKQEAgLTgy
LDYgKzgzLDkgQEAgaW50IENoaWxkUHJvY2Vzc01haW4oaW50IGFyZ2MsIGNoYXIqKiBhcgogICAg
ICAgICBpZiAoIWRlbGVnYXRlLmdldENsaWVudFByb2Nlc3NOYW1lKHBhcmFtZXRlcnMudWlQcm9j
ZXNzTmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogCisgICAgICAgIGlm
ICghZGVsZWdhdGUuZ2V0RXh0cmFEYXRhKHBhcmFtZXRlcnMuZXh0cmFEYXRhKSkKKyAgICAgICAg
ICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGJlIG1vdmVkIHRvIENoaWxkUHJvY2Vzc01hYyBpZiBpdCBpcyBzdGlsbCBuZWNlc3NhcnkuCiAg
ICAgICAgIFN0cmluZyBsb2NhbGl6YXRpb24gPSBjb21tYW5kTGluZVsibG9jYWxpemF0aW9uIl07
CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZMb2NhbGl6YXRpb24oQWRvcHRDRiwg
Q0ZTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVu
aUNoYXIqPihsb2NhbGl6YXRpb24uY2hhcmFjdGVycygpKSwgbG9jYWxpemF0aW9uLmxlbmd0aCgp
KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMv
TGVnYWN5UHJvY2Vzcy9DaGlsZFByb2Nlc3NNYWluLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9MZWdhY3lQcm9jZXNzL0NoaWxk
UHJvY2Vzc01haW4ubW0JKHJldmlzaW9uIDE0MDk4NykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9MZWdhY3lQcm9jZXNzL0NoaWxkUHJvY2Vzc01haW4u
bW0JKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDExIEBAIGJvb2wgQ2hpbGRQcm9jZXNzTWFp
bkRlbGVnYXRlOjpnZXRDbGllbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBDaGlsZFBy
b2Nlc3NNYWluRGVsZWdhdGU6OmdldEV4dHJhRGF0YShIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYp
Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQ2hpbGRQcm9jZXNzTWFpbkRlbGVnYXRl
Ojpkb1Bvc3RSdW5Xb3JrKCkKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRy
eVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VCb290c3RyYXBwZXIuRGV2
ZWxvcG1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2lu
dFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlQm9vdHN0cmFwcGVyLkRldmVsb3Bt
ZW50LmgJKHJldmlzaW9uIDE0MDk4NykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VCb290c3RyYXBwZXIuRGV2ZWxv
cG1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2Vycm9yIFdFQktJVF9Y
UENfU0VSVklDRV9JTklUSUFMSVpFUiBtdXN0IGJlIGRlZmluZWQuCiAjZW5kaWYKIAotI2ltcG9y
dCA8QXZhaWxhYmlsaXR5TWFjcm9zLmg+CiAjaW1wb3J0IDxjcnRfZXh0ZXJucy5oPgogI2ltcG9y
dCA8ZGxmY24uaD4KICNpbXBvcnQgPG1hY2gtby9keWxkLmg+CkBAIC0zOSw4ICszOCw2IEBACiAj
aW1wb3J0IDxzdGRsaWIuaD4KICNpbXBvcnQgPHhwYy94cGMuaD4KIAotZXh0ZXJuICJDIiBtYWNo
X3BvcnRfdCB4cGNfZGljdGlvbmFyeV9jb3B5X21hY2hfc2VuZCh4cGNfb2JqZWN0X3QsIGNvbnN0
IGNoYXIqKTsKLQogI2RlZmluZSBTVFJJTkdJWkUoZXhwKSAjZXhwCiAjZGVmaW5lIFNUUklOR0la
RV9WQUxVRV9PRihleHApIFNUUklOR0laRShleHApCiAKQEAgLTExNyw3ICsxMTQsNyBAQCBzdGF0
aWMgdm9pZCBYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKHhwY19jCiAgICAgICAgICAgICAgICAgICAg
IGV4aXQoRVhJVF9GQUlMVVJFKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICB0eXBlZGVmIHZvaWQgKCpJbml0aWFsaXplckZ1bmN0aW9uKShjb25zdCBjaGFyKiBjbGllbnRJ
ZGVudGlmZXIsIHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgbWFjaF9wb3J0X3Qgc2VydmVy
UG9ydCwgY29uc3QgY2hhciogdWlQcm9jZXNzTmFtZSk7CisgICAgICAgICAgICAgICAgdHlwZWRl
ZiB2b2lkICgqSW5pdGlhbGl6ZXJGdW5jdGlvbikoeHBjX2Nvbm5lY3Rpb25fdCwgeHBjX29iamVj
dF90KTsKICAgICAgICAgICAgICAgICBJbml0aWFsaXplckZ1bmN0aW9uIGluaXRpYWxpemVyRnVu
Y3Rpb25QdHIgPSByZWludGVycHJldF9jYXN0PEluaXRpYWxpemVyRnVuY3Rpb24+KGRsc3ltKGZy
YW1ld29ya0xpYnJhcnksIFNUUklOR0laRV9WQUxVRV9PRihXRUJLSVRfWFBDX1NFUlZJQ0VfSU5J
VElBTElaRVIpKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpbml0aWFsaXplckZ1bmN0aW9uUHRy
KSB7CiAgICAgICAgICAgICAgICAgICAgIE5TTG9nKEAiVW5hYmxlIHRvIGZpbmQgZW50cnkgcG9p
bnQgaW4gV2ViS2l0Mi5mcmFtZXdvcmsgbG9hZGVkIGZyb20gcGF0aDogJXMgKEVycm9yOiAlcyki
LCB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAiZnJhbWV3b3JrLWV4ZWN1dGFibGUt
cGF0aCIpLCBkbGVycm9yKCkpOwpAQCAtMTMyLDEyICsxMjksNyBAQCBzdGF0aWMgdm9pZCBYUENT
ZXJ2aWNlRXZlbnRIYW5kbGVyKHhwY19jCiAgICAgICAgICAgICAgICAgZHVwMih4cGNfZGljdGlv
bmFyeV9kdXBfZmQoZXZlbnQsICJzdGRvdXQiKSwgU1RET1VUX0ZJTEVOTyk7CiAgICAgICAgICAg
ICAgICAgZHVwMih4cGNfZGljdGlvbmFyeV9kdXBfZmQoZXZlbnQsICJzdGRlcnIiKSwgU1RERVJS
X0ZJTEVOTyk7CiAKLSAgICAgICAgICAgICAgICBpbml0aWFsaXplckZ1bmN0aW9uUHRyKAotICAg
ICAgICAgICAgICAgICAgICB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAiY2xpZW50
LWlkZW50aWZpZXIiKSwKLSAgICAgICAgICAgICAgICAgICAgcGVlciwKLSAgICAgICAgICAgICAg
ICAgICAgeHBjX2RpY3Rpb25hcnlfY29weV9tYWNoX3NlbmQoZXZlbnQsICJzZXJ2ZXItcG9ydCIp
LAotICAgICAgICAgICAgICAgICAgICB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAi
dWktcHJvY2Vzcy1uYW1lIikKLSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGlu
aXRpYWxpemVyRnVuY3Rpb25QdHIocGVlciwgZXZlbnQpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxp
dGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlQm9vdHN0cmFwcGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZp
Y2UvWFBDU2VydmljZUJvb3RzdHJhcHBlci5oCShyZXZpc2lvbiAxNDA5ODcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2
aWNlQm9vdHN0cmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSw5IEBACiAjZW5k
aWYKIAogI2ltcG9ydCA8eHBjL3hwYy5oPgotZXh0ZXJuICJDIiBtYWNoX3BvcnRfdCB4cGNfZGlj
dGlvbmFyeV9jb3B5X21hY2hfc2VuZCh4cGNfb2JqZWN0X3QsIGNvbnN0IGNoYXIqKTsKIAogLy8g
Rm9yd2FyZCBkZWNsYXJlIHRoZSBzcGVjaWZpZWQgaW5pdGlhbGl6ZXIuCi1leHRlcm4gIkMiIHZv
aWQgV0VCS0lUX1hQQ19TRVJWSUNFX0lOSVRJQUxJWkVSKGNvbnN0IGNoYXIqIGNsaWVudElkZW50
aWZpZXIsIHhwY19jb25uZWN0aW9uX3QsIG1hY2hfcG9ydF90IHNlcnZlclBvcnQsIGNvbnN0IGNo
YXIqIHVpUHJvY2Vzc05hbWUpOworZXh0ZXJuICJDIiB2b2lkIFdFQktJVF9YUENfU0VSVklDRV9J
TklUSUFMSVpFUih4cGNfY29ubmVjdGlvbl90LCB4cGNfb2JqZWN0X3QpOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtNTcsMTIgKzU2LDcgQEAgc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50
SGFuZGxlcih4cGNfYwogICAgICAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2Fn
ZSh4cGNfZGljdGlvbmFyeV9nZXRfcmVtb3RlX2Nvbm5lY3Rpb24oZXZlbnQpLCByZXBseSk7CiAg
ICAgICAgICAgICAgICAgeHBjX3JlbGVhc2UocmVwbHkpOwogCi0gICAgICAgICAgICAgICAgV0VC
S0lUX1hQQ19TRVJWSUNFX0lOSVRJQUxJWkVSKAotICAgICAgICAgICAgICAgICAgICB4cGNfZGlj
dGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAiY2xpZW50LWlkZW50aWZpZXIiKSwKLSAgICAgICAg
ICAgICAgICAgICAgcGVlciwKLSAgICAgICAgICAgICAgICAgICAgeHBjX2RpY3Rpb25hcnlfY29w
eV9tYWNoX3NlbmQoZXZlbnQsICJzZXJ2ZXItcG9ydCIpLAotICAgICAgICAgICAgICAgICAgICB4
cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAidWktcHJvY2Vzcy1uYW1lIikKLSAgICAg
ICAgICAgICAgICApOworICAgICAgICAgICAgICAgIFdFQktJVF9YUENfU0VSVklDRV9JTklUSUFM
SVpFUihwZWVyLCBldmVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9KTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2
aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5
UG9pbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50
VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFhQQ1NlcnZpY2VFbnRy
eVBvaW50X2gKKyNkZWZpbmUgWFBDU2VydmljZUVudHJ5UG9pbnRfaAorCisjaWYgSEFWRShYUEMp
CisKKyNpbXBvcnQgIkNoaWxkUHJvY2Vzcy5oIgorI2ltcG9ydCAiV2ViS2l0MkluaXRpYWxpemUu
aCIKKyNpbXBvcnQgPHhwYy94cGMuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFhQ
Q1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBYUENTZXJ2aWNlSW5p
dGlhbGl6ZXJEZWxlZ2F0ZSh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIHhwY19vYmplY3Rf
dCBpbml0aWFsaXplck1lc3NhZ2UpCisgICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24p
CisgICAgICAgICwgbV9pbml0aWFsaXplck1lc3NhZ2UoaW5pdGlhbGl6ZXJNZXNzYWdlKQorICAg
IHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5YUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZSgp
OworCisgICAgdmlydHVhbCBib29sIGdldENvbm5lY3Rpb25JZGVudGlmaWVyKENvcmVJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXImIGlkZW50aWZpZXIpOworICAgIHZpcnR1YWwgYm9vbCBnZXRD
bGllbnRJZGVudGlmaWVyKFN0cmluZyYgY2xpZW50SWRlbnRpZmllcik7CisgICAgdmlydHVhbCBi
b29sIGdldENsaWVudFByb2Nlc3NOYW1lKFN0cmluZyYgY2xpZW50UHJvY2Vzc05hbWUpOworICAg
IHZpcnR1YWwgYm9vbCBnZXRFeHRyYURhdGEoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIGV4dHJh
RGF0YSk7CisKK3Byb3RlY3RlZDoKKyAgICB4cGNfY29ubmVjdGlvbl90IG1fY29ubmVjdGlvbjsK
KyAgICB4cGNfb2JqZWN0X3QgbV9pbml0aWFsaXplck1lc3NhZ2U7Cit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBYUENTZXJ2aWNlVHlwZSwgdHlwZW5hbWUgWFBDU2VydmljZUluaXRpYWxpemVyRGVs
ZWdhdGVUeXBlPgordm9pZCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXIoeHBjX2Nvbm5lY3Rpb25fdCBj
b25uZWN0aW9uLCB4cGNfb2JqZWN0X3QgaW5pdGlhbGl6ZXJNZXNzYWdlKQoreworICAgIFhQQ1Nl
cnZpY2VJbml0aWFsaXplckRlbGVnYXRlVHlwZSBkZWxlZ2F0ZShjb25uZWN0aW9uLCBpbml0aWFs
aXplck1lc3NhZ2UpOworCisgICAgSW5pdGlhbGl6ZVdlYktpdDIoKTsKKworICAgIENoaWxkUHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIGlmICghZGVsZWdh
dGUuZ2V0Q29ubmVjdGlvbklkZW50aWZpZXIocGFyYW1ldGVycy5jb25uZWN0aW9uSWRlbnRpZmll
cikpCisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKworICAgIGlmICghZGVsZWdhdGUuZ2V0
Q2xpZW50SWRlbnRpZmllcihwYXJhbWV0ZXJzLmNsaWVudElkZW50aWZpZXIpKQorICAgICAgICBl
eGl0KEVYSVRfRkFJTFVSRSk7CisKKyAgICBpZiAoIWRlbGVnYXRlLmdldENsaWVudFByb2Nlc3NO
YW1lKHBhcmFtZXRlcnMudWlQcm9jZXNzTmFtZSkpCisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJF
KTsKKworICAgIGlmICghZGVsZWdhdGUuZ2V0RXh0cmFEYXRhKHBhcmFtZXRlcnMuZXh0cmFEYXRh
KSkKKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworCisgICAgWFBDU2VydmljZVR5cGU6OnNo
YXJlZCgpLmluaXRpYWxpemUocGFyYW1ldGVycyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gSEFWRShYUEMpCisKKyNlbmRpZiAvLyBYUENTZXJ2aWNlRW50cnlQb2lu
dF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMv
WFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2
aWNlRW50cnlQb2ludC5tbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lm1t
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisKKyNpZiBIQVZFKFhQQykKKworI2ltcG9ydCAiWFBDU2VydmljZUVudHJ5UG9pbnQu
aCIKKworZXh0ZXJuICJDIiBtYWNoX3BvcnRfdCB4cGNfZGljdGlvbmFyeV9jb3B5X21hY2hfc2Vu
ZCh4cGNfb2JqZWN0X3QsIGNvbnN0IGNoYXIqKTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1hQ
Q1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjp+WFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdh
dGUoKQoreworfQorCitib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlOjpnZXRDb25u
ZWN0aW9uSWRlbnRpZmllcihDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyJiBpZGVudGlm
aWVyKQoreworICAgIGlkZW50aWZpZXIgPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
KHhwY19kaWN0aW9uYXJ5X2NvcHlfbWFjaF9zZW5kKG1faW5pdGlhbGl6ZXJNZXNzYWdlLCAic2Vy
dmVyLXBvcnQiKSwgbV9jb25uZWN0aW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBY
UENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0Q2xpZW50SWRlbnRpZmllcihTdHJpbmcm
IGNsaWVudElkZW50aWZpZXIpCit7CisgICAgY2xpZW50SWRlbnRpZmllciA9IHhwY19kaWN0aW9u
YXJ5X2dldF9zdHJpbmcobV9pbml0aWFsaXplck1lc3NhZ2UsICJjbGllbnQtaWRlbnRpZmllciIp
OworICAgIGlmIChjbGllbnRJZGVudGlmaWVyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFhQQ1NlcnZpY2VJbml0aWFsaXplckRl
bGVnYXRlOjpnZXRDbGllbnRQcm9jZXNzTmFtZShTdHJpbmcmIGNsaWVudFByb2Nlc3NOYW1lKQor
eworICAgIGNsaWVudFByb2Nlc3NOYW1lID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhtX2lu
aXRpYWxpemVyTWVzc2FnZSwgInVpLXByb2Nlc3MtbmFtZSIpOworICAgIGlmIChjbGllbnRQcm9j
ZXNzTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXJEZWxlZ2F0ZTo6Z2V0RXh0cmFEYXRh
KEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBIQVZFKFhQQykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxNDA5ODcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzksMjMgKzM5LDE3IEBAIFBsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OlBsdWdpblAKIAogdm9pZCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAg
IGVuY29kZXIgPDwgcGx1Z2luUGF0aDsKICAgICBlbmNvZGVyLmVuY29kZUVudW0ocHJvY2Vzc1R5
cGUpOwogICAgIGVuY29kZXIgPDwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbjsKICAgICBlbmNvZGVyIDw8IG1pbmltdW1MaWZldGltZTsKICAgICBlbmNvZGVyIDw8IHRl
cm1pbmF0aW9uVGltZW91dDsKLQogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBlbmNvZGVyIDw8IHBh
cmVudFByb2Nlc3NOYW1lOwogICAgIGVuY29kZXIgPDwgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Bv
cnQ7Ci0gICAgZW5jb2RlciA8PCBzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGg7CiAjZW5kaWYK
IH0KIAogYm9vbCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiByZXN1bHQpCiB7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LnBsdWdpblBh
dGgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVt
KHJlc3VsdC5wcm9jZXNzVHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZShyZXN1bHQuc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbikpCkBAIC02NSwxMiArNTksOCBAQCBib29sIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlCiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LnRlcm1pbmF0aW9uVGlt
ZW91dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LnBhcmVudFByb2Nlc3NOYW1lKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5hY2NlbGVyYXRlZENv
bXBvc2l0aW5nUG9ydCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShyZXN1bHQuc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE0MDk4NykKKysrIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAogI2lu
Y2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJNYWNoUG9ydC5oIgpAQCAtNDgsNyArNDcs
NiBAQCBzdHJ1Y3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgdm9pZCBl
bmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wg
ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFBsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmKTsKIAotICAgIFN0cmluZyBwbHVnaW5QYXRoOwogICAgIFBsdWdpblByb2Nlc3M6
OlR5cGUgcHJvY2Vzc1R5cGU7CiAgICAgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uOwogCkBAIC01Niw5ICs1NCw3IEBAIHN0cnVjdCBQbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKICAgICBkb3VibGUgdGVybWluYXRpb25UaW1lb3V0OwogCiAjaWYg
UExBVEZPUk0oTUFDKQotICAgIFN0cmluZyBwYXJlbnRQcm9jZXNzTmFtZTsKICAgICBDb3JlSVBD
OjpNYWNoUG9ydCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydDsKLSAgICBTdHJpbmcgc2FuZGJv
eFByb2ZpbGVEaXJlY3RvcnlQYXRoOwogI2VuZGlmCiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCShyZXZpc2lv
biAxNDA5ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xh
dW5jaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEyICsyOCwxMSBAQAogCiAjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIuaCIKKyNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+Ci0KLSNpZm5kZWYgTkRFQlVHCisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotI2VuZGlmCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC02MSw2ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0
cnVjdCBMYXVuY2hPcHRpb25zIHsKICAgICAgICAgUHJvY2Vzc1R5cGUgcHJvY2Vzc1R5cGU7Cisg
ICAgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGV4dHJhRGF0YTsKICNpZiBQTEFURk9STShN
QUMpCiAgICAgICAgIHN0YXRpYyBjb25zdCBjcHVfdHlwZV90IE1hdGNoQ3VycmVudEFyY2hpdGVj
dHVyZSA9IDA7CiAgICAgICAgIGNwdV90eXBlX3QgYXJjaGl0ZWN0dXJlOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNz
TGF1bmNoZXJNYWMubW0JKHJldmlzaW9uIDE0MDk4NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzgsMTAgKzE3OCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc2VydmljZU5hbWUoY29uc3Qg
UHJvCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBjb25uZWN0VG9TZXJ2aWNlRm9yRGV2ZWxvcG1l
bnQoY29uc3QgUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zLCBQ
cm9jZXNzTGF1bmNoZXIqIHRoYXQsIERpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiBk
aWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24sIFVVSURIb2xkZXIqIGluc3RhbmNlVVVJ
RCkKK3N0YXRpYyB2b2lkIGNvbm5lY3RUb1NlcnZpY2UoY29uc3QgUHJvY2Vzc0xhdW5jaGVyOjpM
YXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zLCBib29sIGZvckRldmVsb3BtZW50LCBQcm9jZXNz
TGF1bmNoZXIqIHRoYXQsIERpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiBkaWRGaW5p
c2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24sIFVVSURIb2xkZXIqIGluc3RhbmNlVVVJRCkKIHsK
ICAgICAvLyBDcmVhdGUgYSBjb25uZWN0aW9uIHRvIHRoZSBXZWJLaXQyIFhQQyBzZXJ2aWNlLgot
ICAgIHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiA9IHhwY19jb25uZWN0aW9uX2NyZWF0ZShz
ZXJ2aWNlTmFtZShsYXVuY2hPcHRpb25zLCB0cnVlKSwgMCk7CisgICAgeHBjX2Nvbm5lY3Rpb25f
dCBjb25uZWN0aW9uID0geHBjX2Nvbm5lY3Rpb25fY3JlYXRlKHNlcnZpY2VOYW1lKGxhdW5jaE9w
dGlvbnMsIGZvckRldmVsb3BtZW50KSwgMCk7CiAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2luc3Rh
bmNlKGNvbm5lY3Rpb24sIGluc3RhbmNlVVVJRC0+dXVpZCk7CiAKICAgICAvLyBYUEMgcmVxdWly
ZXMgaGF2aW5nIGFuIGV2ZW50IGhhbmRsZXIsIGV2ZW4gaWYgaXQgaXMgbm90IHVzZWQuCkBAIC0y
MDQsOCArMjA0LDE5IEBAIHN0YXRpYyB2b2lkIGNvbm5lY3RUb1NlcnZpY2VGb3JEZXZlbG9wbWUK
ICAgICB4cGNfZGljdGlvbmFyeV9zZXRfbWFjaF9zZW5kKGJvb3RzdHJhcE1lc3NhZ2UsICJzZXJ2
ZXItcG9ydCIsIGxpc3RlbmluZ1BvcnQpOwogICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmco
Ym9vdHN0cmFwTWVzc2FnZSwgImNsaWVudC1pZGVudGlmaWVyIiwgY2xpZW50SWRlbnRpZmllci5k
YXRhKCkpOwogICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcoYm9vdHN0cmFwTWVzc2FnZSwg
InVpLXByb2Nlc3MtbmFtZSIsIFtbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NO
YW1lXSBVVEY4U3RyaW5nXSk7Ci0gICAgeHBjX2RpY3Rpb25hcnlfc2V0X2ZkKGJvb3RzdHJhcE1l
c3NhZ2UsICJzdGRvdXQiLCBTVERPVVRfRklMRU5PKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRf
ZmQoYm9vdHN0cmFwTWVzc2FnZSwgInN0ZGVyciIsIFNUREVSUl9GSUxFTk8pOworCisgICAgaWYg
KGZvckRldmVsb3BtZW50KSB7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9mZChib290c3Ry
YXBNZXNzYWdlLCAic3Rkb3V0IiwgU1RET1VUX0ZJTEVOTyk7CisgICAgICAgIHhwY19kaWN0aW9u
YXJ5X3NldF9mZChib290c3RyYXBNZXNzYWdlLCAic3RkZXJyIiwgU1RERVJSX0ZJTEVOTyk7Cisg
ICAgfQorCisgICAgeHBjX29iamVjdF90IGV4dHJhRGF0YSA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0
ZSgwLCAwLCAwKTsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBsYXVuY2hPcHRpb25zLmV4dHJhRGF0YS5iZWdpbigpOworICAgIEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXVuY2hPcHRpb25zLmV4dHJhRGF0YS5l
bmQoKTsKKyAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICB4cGNfZGljdGlvbmFy
eV9zZXRfc3RyaW5nKGV4dHJhRGF0YSwgaXQtPmtleS51dGY4KCkuZGF0YSgpLCBpdC0+dmFsdWUu
dXRmOCgpLmRhdGEoKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKGJvb3RzdHJhcE1l
c3NhZ2UsICJleHRyYS1kYXRhIiwgZXh0cmFEYXRhKTsKKyAgICB4cGNfcmVsZWFzZShleHRyYURh
dGEpOwogCiAgICAgdGhhdC0+cmVmKCk7CiAKQEAgLTIzNSw3ICsyNDYsNyBAQCBzdGF0aWMgdm9p
ZCBjb25uZWN0VG9TZXJ2aWNlRm9yRGV2ZWxvcG1lCiAgICAgeHBjX3JlbGVhc2UoYm9vdHN0cmFw
TWVzc2FnZSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNyZWF0ZVNlcnZpY2VGb3JEZXZlbG9wbWVudChj
b25zdCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMsIFByb2Nl
c3NMYXVuY2hlciogdGhhdCwgRGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uIGRpZEZp
bmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbikKK3N0YXRpYyB2b2lkIGNvbm5lY3RUb1JlRXhl
Y1NlcnZpY2UoY29uc3QgUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRp
b25zLCBQcm9jZXNzTGF1bmNoZXIqIHRoYXQsIERpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5j
dGlvbiBkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24pCiB7CiAgICAgRW52aXJvbm1l
bnRWYXJpYWJsZXMgZW52aXJvbm1lbnRWYXJpYWJsZXM7CiAgICAgYWRkRFlMREVudmlyb25tZW50
QWRkaXRpb25zKGxhdW5jaE9wdGlvbnMsIHRydWUsIGVudmlyb25tZW50VmFyaWFibGVzKTsKQEAg
LTI1Niw3ICsyNjcsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVTZXJ2aWNlRm9yRGV2ZWxvcG1lbnQo
CiAgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIocmVFeGVjQ29ubmVjdGlvbiwg
Xih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKICAgICAgICAgQVNTRVJUKHhwY19nZXRfdHlwZShldmVu
dCkgPT0gWFBDX1RZUEVfRVJST1IpOwogCi0gICAgICAgIGNvbm5lY3RUb1NlcnZpY2VGb3JEZXZl
bG9wbWVudChsYXVuY2hPcHRpb25zLCB0aGF0LCBkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVu
Y3Rpb24sIGluc3RhbmNlVVVJRC5nZXQoKSk7CisgICAgICAgIGNvbm5lY3RUb1NlcnZpY2UobGF1
bmNoT3B0aW9ucywgdHJ1ZSwgdGhhdCwgZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9u
LCBpbnN0YW5jZVVVSUQuZ2V0KCkpOwogCiAgICAgICAgIC8vIFJlbGVhc2UgdGhlIGNvbm5lY3Rp
b24uCiAgICAgICAgIHhwY19yZWxlYXNlKHJlRXhlY0Nvbm5lY3Rpb24pOwpAQCAtMjkwLDYzICsz
MDEsMTkgQEAgc3RhdGljIHZvaWQgY3JlYXRlU2VydmljZUZvckRldmVsb3BtZW50KAogICAgIHhw
Y19yZWxlYXNlKHJlRXhlY01lc3NhZ2UpOwogfQogCi1zdGF0aWMgdm9pZCBjcmVhdGVTZXJ2aWNl
KGNvbnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucywgUHJv
Y2Vzc0xhdW5jaGVyKiB0aGF0LCBEaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24gZGlk
RmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uKQorc3RhdGljIHZvaWQgY3JlYXRlU2Vydmlj
ZShjb25zdCBQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMsIGJv
b2wgZm9yRGV2ZWxvcG1lbnQsIFByb2Nlc3NMYXVuY2hlciogdGhhdCwgRGlkRmluaXNoTGF1bmNo
aW5nUHJvY2Vzc0Z1bmN0aW9uIGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbikKIHsK
KyAgICBpZiAoZm9yRGV2ZWxvcG1lbnQpIHsKKyAgICAgICAgY29ubmVjdFRvUmVFeGVjU2Vydmlj
ZShsYXVuY2hPcHRpb25zLCB0aGF0LCBkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24p
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gR2VuZXJhdGUgdGhlIHV1aWQgZm9y
IHRoZSBzZXJ2aWNlIGluc3RhbmNlIHdlIGFyZSBhYm91dCB0byBjcmVhdGUuCiAgICAgLy8gRklY
TUU6IFRoaXMgVVVJRCBzaG91bGQgYmUgc3RvcmVkIG9uIHRoZSBDaGlsZFByb2Nlc3NQcm94eS4K
ICAgICBSZWZQdHI8VVVJREhvbGRlcj4gaW5zdGFuY2VVVUlEID0gVVVJREhvbGRlcjo6Y3JlYXRl
KCk7Ci0KLSAgICAvLyBDcmVhdGUgYSBjb25uZWN0aW9uIHRvIHRoZSBXZWJLaXQyIFhQQyBzZXJ2
aWNlLgotICAgIHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiA9IHhwY19jb25uZWN0aW9uX2Ny
ZWF0ZShzZXJ2aWNlTmFtZShsYXVuY2hPcHRpb25zLCBmYWxzZSksIDApOwotICAgIHhwY19jb25u
ZWN0aW9uX3NldF9pbnN0YW5jZShjb25uZWN0aW9uLCBpbnN0YW5jZVVVSUQtPnV1aWQpOwotCi0g
ICAgLy8gWFBDIHJlcXVpcmVzIGhhdmluZyBhbiBldmVudCBoYW5kbGVyLCBldmVuIGlmIGl0IGlz
IG5vdCB1c2VkLgotICAgIHhwY19jb25uZWN0aW9uX3NldF9ldmVudF9oYW5kbGVyKGNvbm5lY3Rp
b24sIF4oeHBjX29iamVjdF90IGV2ZW50KSB7IH0pOwotICAgIHhwY19jb25uZWN0aW9uX3Jlc3Vt
ZShjb25uZWN0aW9uKTsKLQotICAgIC8vIENyZWF0ZSB0aGUgbGlzdGVuaW5nIHBvcnQuCi0gICAg
bWFjaF9wb3J0X3QgbGlzdGVuaW5nUG9ydDsKLSAgICBtYWNoX3BvcnRfYWxsb2NhdGUobWFjaF90
YXNrX3NlbGYoKSwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsICZsaXN0ZW5pbmdQb3J0KTsKLSAg
ICAKLSAgICAvLyBJbnNlcnQgYSBzZW5kIHJpZ2h0IHNvIHdlIGNhbiBzZW5kIHRvIGl0LgotICAg
IG1hY2hfcG9ydF9pbnNlcnRfcmlnaHQobWFjaF90YXNrX3NlbGYoKSwgbGlzdGVuaW5nUG9ydCwg
bGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQRV9NQUtFX1NFTkQpOwotCi0gICAgTlNTdHJpbmcg
KmJ1bmRsZUlkZW50aWZpZXIgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZp
ZXJdOwotICAgIENTdHJpbmcgY2xpZW50SWRlbnRpZmllciA9IGJ1bmRsZUlkZW50aWZpZXIgPyBT
dHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSkudXRmOCgpIDog
Kl9OU0dldFByb2duYW1lKCk7Ci0KLSAgICB4cGNfb2JqZWN0X3QgYm9vdHN0cmFwTWVzc2FnZSA9
IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZSgwLCAwLCAwKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRf
c3RyaW5nKGJvb3RzdHJhcE1lc3NhZ2UsICJtZXNzYWdlLW5hbWUiLCAiYm9vdHN0cmFwIik7Ci0g
ICAgeHBjX2RpY3Rpb25hcnlfc2V0X21hY2hfc2VuZChib290c3RyYXBNZXNzYWdlLCAic2VydmVy
LXBvcnQiLCBsaXN0ZW5pbmdQb3J0KTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKGJv
b3RzdHJhcE1lc3NhZ2UsICJjbGllbnQtaWRlbnRpZmllciIsIGNsaWVudElkZW50aWZpZXIuZGF0
YSgpKTsKLSAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKGJvb3RzdHJhcE1lc3NhZ2UsICJ1
aS1wcm9jZXNzLW5hbWUiLCBbW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFt
ZV0gVVRGOFN0cmluZ10pOwotCi0gICAgdGhhdC0+cmVmKCk7Ci0KLSAgICB4cGNfY29ubmVjdGlv
bl9zZW5kX21lc3NhZ2Vfd2l0aF9yZXBseShjb25uZWN0aW9uLCBib290c3RyYXBNZXNzYWdlLCBk
aXNwYXRjaF9nZXRfZ2xvYmFsX3F1ZXVlKERJU1BBVENIX1FVRVVFX1BSSU9SSVRZX0RFRkFVTFQs
IDApLCBeKHhwY19vYmplY3RfdCByZXBseSkgewotICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4
cGNfZ2V0X3R5cGUocmVwbHkpOwotICAgICAgICBpZiAodHlwZSA9PSBYUENfVFlQRV9FUlJPUikg
ewotICAgICAgICAgICAgLy8gV2UgZmFpbGVkIHRvIGxhdW5jaC4gUmVsZWFzZSB0aGUgc2VuZCBy
aWdodC4KLSAgICAgICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCks
IGxpc3RlbmluZ1BvcnQpOwotCi0gICAgICAgICAgICAvLyBBbmQgdGhlIHJlY2VpdmUgcmlnaHQu
Ci0gICAgICAgICAgICBtYWNoX3BvcnRfbW9kX3JlZnMobWFjaF90YXNrX3NlbGYoKSwgbGlzdGVu
aW5nUG9ydCwgTUFDSF9QT1JUX1JJR0hUX1JFQ0VJVkUsIC0xKTsKLQotICAgICAgICAgICAgUnVu
TG9vcDo6bWFpbigpLT5kaXNwYXRjaChiaW5kKGRpZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5j
dGlvbiwgdGhhdCwgMCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcigpKSk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBYUENfVFlQRV9ESUNUSU9O
QVJZKTsKLSAgICAgICAgICAgIEFTU0VSVCghc3RyY21wKHhwY19kaWN0aW9uYXJ5X2dldF9zdHJp
bmcocmVwbHksICJtZXNzYWdlLW5hbWUiKSwgInByb2Nlc3MtZmluaXNoZWQtbGF1bmNoaW5nIikp
OwotCi0gICAgICAgICAgICAvLyBUaGUgcHJvY2VzcyBoYXMgZmluaXNoZWQgbGF1bmNoaW5nLCBn
cmFiIHRoZSBwaWQgZnJvbSB0aGUgY29ubmVjdGlvbi4KLSAgICAgICAgICAgIHBpZF90IHByb2Nl
c3NJZGVudGlmaWVyID0geHBjX2Nvbm5lY3Rpb25fZ2V0X3BpZChjb25uZWN0aW9uKTsKLQotICAg
ICAgICAgICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdl
IGJhY2sgdG8gdGhlIG1haW4gcnVuIGxvb3AuCi0gICAgICAgICAgICBSdW5Mb29wOjptYWluKCkt
PmRpc3BhdGNoKGJpbmQoZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uLCB0aGF0LCBw
cm9jZXNzSWRlbnRpZmllciwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcihsaXN0ZW5p
bmdQb3J0LCBjb25uZWN0aW9uKSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhhdC0+ZGVyZWYo
KTsKLSAgICB9KTsKLSAgICB4cGNfcmVsZWFzZShib290c3RyYXBNZXNzYWdlKTsKKyAgICBjb25u
ZWN0VG9TZXJ2aWNlKGxhdW5jaE9wdGlvbnMsIGZhbHNlLCB0aGF0LCBkaWRGaW5pc2hMYXVuY2hp
bmdQcm9jZXNzRnVuY3Rpb24sIGluc3RhbmNlVVVJRC5nZXQoKSk7CiB9CisKICNlbmRpZgogCiBz
dGF0aWMgYm9vbCB0cnlQcmVleGlzdGluZ1Byb2Nlc3MoY29uc3QgUHJvY2Vzc0xhdW5jaGVyOjpM
YXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zLCBQcm9jZXNzTGF1bmNoZXIqIHRoYXQsIERpZEZp
bmlzaExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbiBkaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVu
Y3Rpb24pCkBAIC00NDMsOCArNDEwLDM1IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZVByb2Nlc3MoY29u
c3QgUHJvY2Vzc0wKICAgICAvLyBNYWtlIGEgdW5pcXVlLCBwZXIgcGlkLCBwZXIgcHJvY2VzcyBs
YXVuY2hlciB3ZWIgcHJvY2VzcyBzZXJ2aWNlIG5hbWUuCiAgICAgQ1N0cmluZyBzZXJ2aWNlTmFt
ZSA9IFN0cmluZzo6Zm9ybWF0KCJjb20uYXBwbGUuV2ViS2l0LldlYlByb2Nlc3MtJWQtJXAiLCBn
ZXRwaWQoKSwgdGhhdCkudXRmOCgpOwogCi0gICAgY29uc3QgY2hhciogYXJnc1tdID0geyBbcHJv
Y2Vzc0FwcEV4ZWN1dGFibGVQYXRoIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0sIFtmcmFtZXdv
cmtFeGVjdXRhYmxlUGF0aCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dLCAiLXR5cGUiLCBQcm9j
ZXNzTGF1bmNoZXI6OnByb2Nlc3NUeXBlQXNTdHJpbmcobGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlw
ZSksICItc2VydmljZW5hbWUiLCBzZXJ2aWNlTmFtZS5kYXRhKCksICItbG9jYWxpemF0aW9uIiwg
bG9jYWxpemF0aW9uLmRhdGEoKSwgIi1jbGllbnQtaWRlbnRpZmllciIsIGNsaWVudElkZW50aWZp
ZXIuZGF0YSgpLAotICAgICAgICAiLXVpLXByb2Nlc3MtbmFtZSIsIFtbW05TUHJvY2Vzc0luZm8g
cHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXSBVVEY4U3RyaW5nXSwgMCB9OworICAgIFZlY3Rvcjxj
b25zdCBjaGFyKj4gYXJnczsKKyAgICBhcmdzLmFwcGVuZChbcHJvY2Vzc0FwcEV4ZWN1dGFibGVQ
YXRoIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbl0pOworICAgIGFyZ3MuYXBwZW5kKFtmcmFtZXdv
cmtFeGVjdXRhYmxlUGF0aCBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb25dKTsKKyAgICBhcmdzLmFw
cGVuZCgiLXR5cGUiKTsKKyAgICBhcmdzLmFwcGVuZChQcm9jZXNzTGF1bmNoZXI6OnByb2Nlc3NU
eXBlQXNTdHJpbmcobGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSkpOworICAgIGFyZ3MuYXBwZW5k
KCItc2VydmljZW5hbWUiKTsKKyAgICBhcmdzLmFwcGVuZChzZXJ2aWNlTmFtZS5kYXRhKCkpOwor
ICAgIGFyZ3MuYXBwZW5kKCItbG9jYWxpemF0aW9uIik7CisgICAgYXJncy5hcHBlbmQobG9jYWxp
emF0aW9uLmRhdGEoKSk7CisgICAgYXJncy5hcHBlbmQoIi1jbGllbnQtaWRlbnRpZmllciIpOwor
ICAgIGFyZ3MuYXBwZW5kKGNsaWVudElkZW50aWZpZXIuZGF0YSgpKTsKKyAgICBhcmdzLmFwcGVu
ZCgiLXVpLXByb2Nlc3MtbmFtZSIpOworICAgIGFyZ3MuYXBwZW5kKFtbW05TUHJvY2Vzc0luZm8g
cHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXSBVVEY4U3RyaW5nXSk7CisKKyAgICBIYXNoTWFwPFN0
cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXVuY2hPcHRpb25zLmV4dHJhRGF0
YS5iZWdpbigpOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBl
bmQgPSBsYXVuY2hPcHRpb25zLmV4dHJhRGF0YS5lbmQoKTsKKyAgICBWZWN0b3I8Q1N0cmluZz4g
dGVtcHM7CisgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBTdHJpbmcga2V5
UGx1c0Rhc2ggPSAiLSIgKyBpdC0+a2V5OworICAgICAgICBDU3RyaW5nIGtleShrZXlQbHVzRGFz
aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgdGVtcHMuYXBwZW5kKGtleSk7CisgICAgICAgIGFy
Z3MuYXBwZW5kKGtleS5kYXRhKCkpOworCisgICAgICAgIENTdHJpbmcgdmFsdWUoaXQtPnZhbHVl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICB0ZW1wcy5hcHBlbmQodmFsdWUpOworICAgICAgICBh
cmdzLmFwcGVuZCh2YWx1ZS5kYXRhKCkpOworICAgIH0KKworICAgIGFyZ3MuYXBwZW5kKG51bGxw
dHIpOwogCiAgICAgLy8gUmVnaXN0ZXIgb3Vyc2VsdmVzLgogICAgIGtlcm5fcmV0dXJuX3Qga3Ig
PSBib290c3RyYXBfcmVnaXN0ZXIyKGJvb3RzdHJhcF9wb3J0LCBjb25zdF9jYXN0PGNoYXIqPihz
ZXJ2aWNlTmFtZS5kYXRhKCkpLCBsaXN0ZW5pbmdQb3J0LCAwKTsKQEAgLTQ4MSw3ICs0NzUsNyBA
QCBzdGF0aWMgdm9pZCBjcmVhdGVQcm9jZXNzKGNvbnN0IFByb2Nlc3NMCiAgICAgcG9zaXhfc3Bh
d25hdHRyX3NldGZsYWdzKCZhdHRyLCBmbGFncyk7CiAKICAgICBwaWRfdCBwcm9jZXNzSWRlbnRp
ZmllciA9IDA7Ci0gICAgaW50IHJlc3VsdCA9IHBvc2l4X3NwYXduKCZwcm9jZXNzSWRlbnRpZmll
ciwgYXJnc1swXSwgMCwgJmF0dHIsIGNvbnN0X2Nhc3Q8Y2hhcioqPihhcmdzKSwgZW52aXJvbm1l
bnRWYXJpYWJsZXMuZW52aXJvbm1lbnRQb2ludGVyKCkpOworICAgIGludCByZXN1bHQgPSBwb3Np
eF9zcGF3bigmcHJvY2Vzc0lkZW50aWZpZXIsIGFyZ3NbMF0sIDAsICZhdHRyLCBjb25zdF9jYXN0
PGNoYXIqKj4oYXJncy5kYXRhKCkpLCBlbnZpcm9ubWVudFZhcmlhYmxlcy5lbnZpcm9ubWVudFBv
aW50ZXIoKSk7CiAKICAgICBwb3NpeF9zcGF3bmF0dHJfZGVzdHJveSgmYXR0cik7CiAKQEAgLTUx
MywxMCArNTA3LDcgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogCiAj
aWYgSEFWRShYUEMpCiAgICAgaWYgKG1fbGF1bmNoT3B0aW9ucy51c2VYUEMpIHsKLSAgICAgICAg
aWYgKGlzV2ViS2l0RGV2ZWxvcG1lbnRCdWlsZCkKLSAgICAgICAgICAgIGNyZWF0ZVNlcnZpY2VG
b3JEZXZlbG9wbWVudChtX2xhdW5jaE9wdGlvbnMsIHRoaXMsICZQcm9jZXNzTGF1bmNoZXI6OmRp
ZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjcmVh
dGVTZXJ2aWNlKG1fbGF1bmNoT3B0aW9ucywgdGhpcywgJlByb2Nlc3NMYXVuY2hlcjo6ZGlkRmlu
aXNoTGF1bmNoaW5nUHJvY2Vzcyk7CisgICAgICAgIGNyZWF0ZVNlcnZpY2UobV9sYXVuY2hPcHRp
b25zLCBpc1dlYktpdERldmVsb3BtZW50QnVpbGQsIHRoaXMsICZQcm9jZXNzTGF1bmNoZXI6OmRp
ZEZpbmlzaExhdW5jaGluZ1Byb2Nlc3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDE0MDk4NykKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwMywxMyArMjAzLDkgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExh
dW5jaAogICAgIG1fY29ubmVjdGlvbi0+b3BlbigpOwogICAgIAogICAgIFBsdWdpblByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLQotICAgIHBhcmFtZXRlcnMucGx1Z2luUGF0
aCA9IG1fcGx1Z2luSW5mby5wYXRoOwogICAgIHBhcmFtZXRlcnMucHJvY2Vzc1R5cGUgPSBtX3By
b2Nlc3NUeXBlOwotCiAgICAgcGFyYW1ldGVycy5taW5pbXVtTGlmZXRpbWUgPSBtaW5pbXVtTGlm
ZXRpbWU7CiAgICAgcGFyYW1ldGVycy50ZXJtaW5hdGlvblRpbWVvdXQgPSBzaHV0ZG93blRpbWVv
dXQ7Ci0KICAgICBwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKHBhcmFtZXRlcnMpOwog
CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgcGx1Zy1pbiBob3N0IHByb2Nlc3MuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVn
aW5Qcm9jZXNzUHJveHlNYWMubW0JKHJldmlzaW9uIDE0MDk4NykKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEzNiw2ICsxMzYsMTQgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRm
b3JtSW5pdGlhbAogICAgIGxhdW5jaE9wdGlvbnMuYXJjaGl0ZWN0dXJlID0gcGx1Z2luSW5mby5w
bHVnaW5BcmNoaXRlY3R1cmU7CiAgICAgbGF1bmNoT3B0aW9ucy5leGVjdXRhYmxlSGVhcCA9IFBs
dWdpblByb2Nlc3NQcm94eTo6cGx1Z2luTmVlZHNFeGVjdXRhYmxlSGVhcChwbHVnaW5JbmZvKTsK
IAorICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFEYXRhLmFkZCgicGx1Z2luLXBhdGgiLCBwbHVnaW5J
bmZvLnBhdGgpOworCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCByaXAgdGhpcyBvdXQgb25jZSB3
ZSBoYXZlIGEgZ29vZCBwbGFjZSB0byBpbnN0YWxsIHBsdWctaW4KKyAgICAvLyBzYW5kYm94IHBy
b2ZpbGVzLgorICAgIE5TU3RyaW5nKiBzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGggPSBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzdHJpbmdGb3JLZXk6V2ViS2l0MlBs
dWdJblNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aEtleV07CisgICAgaWYgKHNhbmRib3hQcm9m
aWxlRGlyZWN0b3J5UGF0aCkKKyAgICAgICAgbGF1bmNoT3B0aW9ucy5leHRyYURhdGEuYWRkKCJz
YW5kYm94LXByb2ZpbGUtZGlyZWN0b3J5LXBhdGgiLCBTdHJpbmcoc2FuZGJveFByb2ZpbGVEaXJl
Y3RvcnlQYXRoKSk7CisKICNpZiBIQVZFKFhQQykKICAgICBsYXVuY2hPcHRpb25zLnVzZVhQQyA9
IHNob3VsZFVzZVhQQygpOwogI2VuZGlmCkBAIC0xNDMsMjIgKzE1MSwxNCBAQCB2b2lkIFBsdWdp
blByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsCiAKIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgLy8gRm9yIGtub3cgb25seSBGbGFzaCBpcyBr
bm93biB0byBiZWhhdmUgd2l0aCBhc3luY2hyb25vdXMgcGx1Zy1pbiBpbml0aWFsaXphdGlvbi4K
KyAgICAvLyBGb3Igbm93IG9ubHkgRmxhc2ggaXMga25vd24gdG8gYmVoYXZlIHdpdGggYXN5bmNo
cm9ub3VzIHBsdWctaW4gaW5pdGlhbGl6YXRpb24uCiAgICAgcGFyYW1ldGVycy5zdXBwb3J0c0Fz
eW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uID0gbV9wbHVnaW5JbmZvLmJ1bmRsZUlkZW50
aWZpZXIgPT0gImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVnaW4iOwogCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBIQVZFKEhPU1RFRF9DT1JFX0FOSU1BVElPTikK
LSAgICBwYXJhbWV0ZXJzLnBhcmVudFByb2Nlc3NOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nl
c3NJbmZvXSBwcm9jZXNzTmFtZV07CiAgICAgbWFjaF9wb3J0X3QgcmVuZGVyU2VydmVyUG9ydCA9
IFtbQ0FSZW1vdGVMYXllclNlcnZlciBzaGFyZWRTZXJ2ZXJdIHNlcnZlclBvcnRdOwotCiAgICAg
aWYgKHJlbmRlclNlcnZlclBvcnQgIT0gTUFDSF9QT1JUX05VTEwpCiAgICAgICAgIHBhcmFtZXRl
cnMuYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQgPSBDb3JlSVBDOjpNYWNoUG9ydChyZW5kZXJT
ZXJ2ZXJQb3J0LCBNQUNIX01TR19UWVBFX0NPUFlfU0VORCk7CiAjZW5kaWYKLQotICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgcmlwIHRoaXMgb3V0IG9uY2Ugd2UgaGF2ZSBhIGdvb2QgcGxhY2UgdG8g
aW5zdGFsbCBwbHVnLWluCi0gICAgLy8gc2FuZGJveCBwcm9maWxlcy4KLSAgICBOU1N0cmluZyog
c2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gc3RyaW5nRm9yS2V5OldlYktpdDJQbHVnSW5TYW5kYm94UHJvZmlsZURpcmVj
dG9yeVBhdGhLZXldOwotICAgIGlmIChzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGgpCi0gICAg
ICAgIHBhcmFtZXRlcnMuc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoID0gU3RyaW5nKHNhbmRi
b3hQcm9maWxlRGlyZWN0b3J5UGF0aCk7CiB9CiAKIGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5Ojpn
ZXRQbHVnaW5Qcm9jZXNzU2VyaWFsTnVtYmVyKFByb2Nlc3NTZXJpYWxOdW1iZXImIHBsdWdpblBy
b2Nlc3NTZXJpYWxOdW1iZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDA5ODcpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTkxMSw2ICs5MTEsOCBAQAogCQlCQ0JEMzkxNTEyNUJCMUE4MDBEMkMyOUYgLyogV2ViUGFnZVBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQkQzOTEzMTI1QkIxQTgwMEQyQzI5RiAvKiBXZWJQYWdlUHJveHlNZXNzYWdlcy5oICov
OyB9OwogCQlCQ0JEM0MzQjEyNUJGQTdBMDBEMkMyOUYgLyogU3RyaW5nUGFpclZlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCRDNDM0ExMjVC
RkE3QTAwRDJDMjlGIC8qIFN0cmluZ1BhaXJWZWN0b3IuaCAqLzsgfTsKIAkJQkNCRUNEQzMxNkI1
Q0VCMTAwMDQ3QTFBIC8qIFBsdWdpblNlcnZpY2UuRGV2ZWxvcG1lbnQuTWFpbi5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkVDREMxMTZCNUNFMEQw
MDA0N0ExQSAvKiBQbHVnaW5TZXJ2aWNlLkRldmVsb3BtZW50Lk1haW4ubW0gKi87IH07CisJCUJD
QkVDREU3MTZCNjQxNjgwMDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQkVDREU1MTZCNjQxNjcw
MDA0N0ExQSAvKiBYUENTZXJ2aWNlRW50cnlQb2ludC5tbSAqLzsgfTsKKwkJQkNCRUNERTgxNkI2
NDE2ODAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0JFQ0RFNjE2QjY0MTY3MDAwNDdBMUEgLyog
WFBDU2VydmljZUVudHJ5UG9pbnQuaCAqLzsgfTsKIAkJQkNDNDNBQkExMjdCOTVEQzAwMzE3RjE2
IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0M0M0FCODEyN0I5NURDMDAzMTdGMTYgLyogUGxhdGZvcm1Q
b3B1cE1lbnVEYXRhLmNwcCAqLzsgfTsKIAkJQkNDNDNBQkIxMjdCOTVEQzAwMzE3RjE2IC8qIFBs
YXRmb3JtUG9wdXBNZW51RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNDNDNBQjkxMjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51
RGF0YS5oICovOyB9OwogCQlCQ0M0M0FDNzEyN0I5OURFMDAzMTdGMTYgLyogV2ViUG9wdXBNZW51
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkND
NDNBQzYxMjdCOTlERTAwMzE3RjE2IC8qIFdlYlBvcHVwTWVudU1hYy5tbSAqLzsgfTsKQEAgLTIy
NTcsNiArMjI1OSw4IEBACiAJCUJDQkVDREMwMTZCNUNFMEQwMDA0N0ExQSAvKiBJbmZvLnBsaXN0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5w
bGlzdC54bWw7IHBhdGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQ0JFQ0RDMTE2QjVDRTBEMDAwNDdBMUEgLyogUGx1Z2luU2VydmljZS5EZXZlbG9wbWVudC5N
YWluLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1Z2luU2VydmljZS5EZXZlbG9wbWVudC5N
YWluLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0JFQ0RDMjE2QjVDRTJBMDAw
NDdBMUEgLyogUGx1Z2luU2VydmljZS5EZXZlbG9wbWVudC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBQbHVnaW5TZXJ2aWNlLkRldmVsb3BtZW50LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQ0JFQ0RFNTE2QjY0MTY3MDAwNDdBMUEgLyogWFBDU2VydmljZUVudHJ5UG9p
bnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBYUENTZXJ2aWNl
RW50cnlQb2ludC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkNCRUNERTYxNkI2
NDE2NzAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFhQQ1NlcnZpY2VFbnRyeVBvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDQzQzQUI4MTI3Qjk1REMwMDMxN0YxNiAvKiBQbGF0Zm9ybVBvcHVwTWVu
dURhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1Q
b3B1cE1lbnVEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNDNDNBQjkx
MjdCOTVEQzAwMzE3RjE2IC8qIFBsYXRmb3JtUG9wdXBNZW51RGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVBvcHVwTWVudURhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkNDNDNBQzYxMjdCOTlERTAwMzE3RjE2IC8qIFdlYlBvcHVwTWVu
dU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBvcHVw
TWVudU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNjEsOCArNDE2NSwx
MCBAQAogCQlCQzgyODM2QjE2QjM1ODc5MDBBMjc4RkUgLyogWFBDU2VydmljZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQkM4MjgzOTYxNkI0N0VDNDAw
QTI3OEZFIC8qIFhQQ1NlcnZpY2VCb290c3RyYXBwZXIuaCAqLywKIAkJCQlCQzgyODM5NzE2QjQ4
MEY2MDBBMjc4RkUgLyogWFBDU2VydmljZUJvb3RzdHJhcHBlci5EZXZlbG9wbWVudC5oICovLAor
CQkJCUJDODI4Mzk2MTZCNDdFQzQwMEEyNzhGRSAvKiBYUENTZXJ2aWNlQm9vdHN0cmFwcGVyLmgg
Ki8sCisJCQkJQkNCRUNERTYxNkI2NDE2NzAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50
LmggKi8sCisJCQkJQkNCRUNERTUxNkI2NDE2NzAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBv
aW50Lm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBYUENTZXJ2aWNlOwogCQkJcGF0aCA9IG1hYy9Y
UENTZXJ2aWNlOwpAQCAtNTMwMiw2ICs1MzA4LDcgQEAKIAkJCQk1MThFOEYwQTE2QjIwOTM3MDBF
OTE0MjkgLyogRG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE4RThGMEMxNkIyMDkzNzAwRTkxNDI5IC8qIERvd25sb2FkTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM4MjgzN0ExNkIzNkE0RjAwQTI3OEZFIC8qIENoaWxkUHJvY2Vzc01haW4u
aCBpbiBIZWFkZXJzICovLAorCQkJCUJDQkVDREU4MTZCNjQxNjgwMDA0N0ExQSAvKiBYUENTZXJ2
aWNlRW50cnlQb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC02NDE2LDYgKzY0MjMsNyBAQAogCQkJ
CUJDODI4Mzk5MTZCNDhEQzAwMEEyNzhGRSAvKiBXZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzgyODNBQzE2QjRCRjNGMDBBMjc4RkUgLyogTmV0d29y
a1NlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4Mjg0NEQxNkI1MDgx
QzAwQTI3OEZFIC8qIFBsdWdpblNlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJQkNCRUNERTcxNkI2NDE2ODAwMDQ3QTFBIC8qIFhQQ1NlcnZpY2VFbnRyeVBvaW50Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0VudHJ5UG9pbnQv
bWFjL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2VFbnRyeVBvaW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9X
ZWJDb250ZW50U2VydmljZUVudHJ5UG9pbnQubW0JKHJldmlzaW9uIDE0MDk4NykKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9XZWJDb250ZW50
U2VydmljZUVudHJ5UG9pbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDMzICsyOSwyNCBAQAog
CiAjaW1wb3J0ICJFbnZpcm9ubWVudFV0aWxpdGllcy5oIgogI2ltcG9ydCAiV0tCYXNlLmgiCi0j
aW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgorI2lt
cG9ydCAiWFBDU2VydmljZUVudHJ5UG9pbnQuaCIKICNpbXBvcnQgPFdlYkNvcmUvUnVuTG9vcC5o
PgotI2ltcG9ydCA8c3RkaW8uaD4KLSNpbXBvcnQgPHN0ZGxpYi5oPgotI2ltcG9ydCA8eHBjL3hw
Yy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKLWV4dGVybiAiQyIgV0tfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZVdlYkNvbnRlbnRTZXJ2aWNl
KGNvbnN0IGNoYXIqIGNsaWVudElkZW50aWZpZXIsIHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlv
biwgbWFjaF9wb3J0X3Qgc2VydmVyUG9ydCwgY29uc3QgY2hhciogdWlQcm9jZXNzTmFtZSk7Citl
eHRlcm4gIkMiIFdLX0VYUE9SVCB2b2lkIFdlYkNvbnRlbnRTZXJ2aWNlSW5pdGlhbGl6ZXIoeHBj
X2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCB4cGNfb2JqZWN0X3QgaW5pdGlhbGl6ZXJNZXNzYWdl
KTsKIAotdm9pZCBpbml0aWFsaXplV2ViQ29udGVudFNlcnZpY2UoY29uc3QgY2hhciogY2xpZW50
SWRlbnRpZmllciwgeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCBtYWNoX3BvcnRfdCBzZXJ2
ZXJQb3J0LCBjb25zdCBjaGFyKiB1aVByb2Nlc3NOYW1lKQordm9pZCBXZWJDb250ZW50U2Vydmlj
ZUluaXRpYWxpemVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgeHBjX29iamVjdF90IGlu
aXRpYWxpemVyTWVzc2FnZSkKIHsKLSAgICAvLyBSZW1vdmUgdGhlIFNlY0l0ZW1TaGltIHNoaW0g
ZnJvbSB0aGUgRFlMRF9JTlNFUlRfTElCUkFSSUVTIGVudmlyb25tZW50IHZhcmlhYmxlIHNvIGFu
eSBwcm9jZXNzZXMgc3Bhd25lZCBieQorICAgIC8vIFJlbW92ZSB0aGUgU2VjSXRlbVNoaW0gZnJv
bSB0aGUgRFlMRF9JTlNFUlRfTElCUkFSSUVTIGVudmlyb25tZW50IHZhcmlhYmxlIHNvIGFueSBw
cm9jZXNzZXMgc3Bhd25lZCBieQogICAgIC8vIHRoZSB0aGlzIHByb2Nlc3MgZG9uJ3QgdHJ5IHRv
IGluc2VydCB0aGUgc2hpbSBhbmQgY3Jhc2guCiAgICAgRW52aXJvbm1lbnRVdGlsaXRpZXM6OnN0
cmlwVmFsdWVzRW5kaW5nV2l0aFN0cmluZygiRFlMRF9JTlNFUlRfTElCUkFSSUVTIiwgIi9TZWNJ
dGVtU2hpbS5keWxpYiIpOwogCiAgICAgUnVuTG9vcDo6c2V0VXNlQXBwbGljYXRpb25SdW5Mb29w
T25NYWluUnVuTG9vcCgpOwotICAgIEluaXRpYWxpemVXZWJLaXQyKCk7CiAKLSAgICBDaGlsZFBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKLSAgICBwYXJhbWV0ZXJz
LnVpUHJvY2Vzc05hbWUgPSB1aVByb2Nlc3NOYW1lOwotICAgIHBhcmFtZXRlcnMuY2xpZW50SWRl
bnRpZmllciA9IGNsaWVudElkZW50aWZpZXI7Ci0gICAgcGFyYW1ldGVycy5jb25uZWN0aW9uSWRl
bnRpZmllciA9IENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIoc2VydmVyUG9ydCwgY29u
bmVjdGlvbik7Ci0KLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5pbml0aWFsaXplKHBhcmFtZXRl
cnMpOworICAgIFhQQ1NlcnZpY2VJbml0aWFsaXplcjxXZWJQcm9jZXNzLCBYUENTZXJ2aWNlSW5p
dGlhbGl6ZXJEZWxlZ2F0ZT4oY29ubmVjdGlvbiwgaW5pdGlhbGl6ZXJNZXNzYWdlKTsKIH0KIAog
I2VuZGlmIC8vIEhBVkUoWFBDKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9FbnRy
eVBvaW50L21hYy9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlLkRldmVsb3BtZW50L1dlYkNv
bnRlbnRTZXJ2aWNlTWFpbi5EZXZlbG9wbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZp
Y2UuRGV2ZWxvcG1lbnQvV2ViQ29udGVudFNlcnZpY2VNYWluLkRldmVsb3BtZW50Lm1tCShyZXZp
c2lvbiAxNDA5ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvbWFj
L1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2UuRGV2ZWxvcG1lbnQvV2ViQ29udGVudFNlcnZp
Y2VNYWluLkRldmVsb3BtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2RlZmluZSBXRUJLSVRf
WFBDX1NFUlZJQ0VfSU5JVElBTElaRVIgaW5pdGlhbGl6ZVdlYkNvbnRlbnRTZXJ2aWNlCisjZGVm
aW5lIFdFQktJVF9YUENfU0VSVklDRV9JTklUSUFMSVpFUiBXZWJDb250ZW50U2VydmljZUluaXRp
YWxpemVyCiAjaW5jbHVkZSAiWFBDU2VydmljZUJvb3RzdHJhcHBlci5EZXZlbG9wbWVudC5oIgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL1dlYkNvbnRlbnRTZXJ2aWNlL1dlYkNvbnRlbnRT
ZXJ2aWNlTWFpbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Vu
dHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2UvV2ViQ29udGVudFNlcnZp
Y2VNYWluLm1tCShyZXZpc2lvbiAxNDA5ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0VudHJ5UG9pbnQvbWFjL1hQQ1NlcnZpY2UvV2ViQ29udGVudFNlcnZpY2UvV2ViQ29udGVudFNl
cnZpY2VNYWluLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2RlZmluZSBXRUJLSVRfWFBDX1NFUlZJ
Q0VfSU5JVElBTElaRVIgaW5pdGlhbGl6ZVdlYkNvbnRlbnRTZXJ2aWNlCisjZGVmaW5lIFdFQktJ
VF9YUENfU0VSVklDRV9JTklUSUFMSVpFUiBXZWJDb250ZW50U2VydmljZUluaXRpYWxpemVyCiAj
aW5jbHVkZSAiWFBDU2VydmljZUJvb3RzdHJhcHBlci5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0Owo=
</data>
<flag name="review"
          id="203953"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>