<?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>141139</bug_id>
          
          <creation_ts>2015-02-01 11:43:50 -0800</creation_ts>
          <short_desc>Use XPC for executable heap plugin services</short_desc>
          <delta_ts>2016-02-16 19:46:24 -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>WONTFIX</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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1065980</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-02-01 11:43:50 -0800</bug_when>
    <thetext>Use XPC for executable heap plugin services</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065982</commentid>
    <comment_count>1</comment_count>
      <attachid>245838</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-02-01 11:55:07 -0800</bug_when>
    <thetext>Created attachment 245838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066014</commentid>
    <comment_count>2</comment_count>
      <attachid>245838</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-02-01 16:23:16 -0800</bug_when>
    <thetext>Comment on attachment 245838
Patch

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

&gt; Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm:188
&gt; +                if (launchOptions.executableHeap)
&gt; +                    return &quot;com.apple.WebKit.Plugin.32.ExecutableHeap&quot;;

Shouldn&apos;t we do this in forDevelopment mode too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066042</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-02-01 22:38:40 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 245838 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=245838&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm:188
&gt; &gt; +                if (launchOptions.executableHeap)
&gt; &gt; +                    return &quot;com.apple.WebKit.Plugin.32.ExecutableHeap&quot;;
&gt; 
&gt; Shouldn&apos;t we do this in forDevelopment mode too?

I don&apos;t think we need to. In forDevelopment, we should already re-exec and set the executable heap bit correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066110</commentid>
    <comment_count>4</comment_count>
      <attachid>245838</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-02-02 08:53:39 -0800</bug_when>
    <thetext>Comment on attachment 245838
Patch

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

I suppose I’m not really qualified to review, but I did look it over.

&gt; Source/WebKit2/Configurations/PluginService.32.ExecutableHeap.xcconfig:1
&gt; +// Copyright (C) 2013 Apple Inc. All rights reserved.

2013?

&gt; Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.ExecutableHeap.mm:2
&gt; + * Copyright (C) 2013 Apple Inc. All rights reserved.

2013?

&gt; Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.ExecutableHeap.mm:106
&gt; +            if (!strcmp(xpc_dictionary_get_string(event, &quot;message-name&quot;), &quot;re-exec&quot;)) {

No need for null check?

&gt; Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.ExecutableHeap.mm:107
&gt; +                ReexecInfo *info = static_cast&lt;ReexecInfo *&gt;(malloc(sizeof(ReexecInfo)));

Why malloc instead of new? I don’t se where this gets freed so I assume it intentionally leaks, and seems no real reason to chose malloc over new in that case.

&gt; Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.ExecutableHeap.mm:121
&gt; +                CFRunLoopTimerRef timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent(), 0, 0, 0, reexecCallBack, &amp;context);

Looks like this timer leaks. How about a CFRelease? I guess we are cavalier about memory since we are going to reexec, but I do see things like adoptOSObject below so I think we are not entirely in the Wild West here.

&gt; Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.ExecutableHeap.mm:132
&gt; +                CFBundleRef webKitBundle = CFBundleGetBundleWithIdentifier(CFSTR(&quot;com.apple.WebKit&quot;));

No need for null check here?

&gt; Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.ExecutableHeap.mm:133
&gt; +                CFStringRef entryPointFunctionName = (CFStringRef)CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(), CFSTR(&quot;WebKitEntryPoint&quot;));

No need for null check or type check here?

&gt; Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.ExecutableHeap.mm:136
&gt; +                InitializerFunction initializerFunctionPtr = reinterpret_cast&lt;InitializerFunction&gt;(CFBundleGetFunctionPointerForName(webKitBundle, entryPointFunctionName));

Why not use auto so we don’t have to repeat  the type name twice?

&gt; Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.ExecutableHeap.mm:153
&gt; +            if (!strcmp(xpc_dictionary_get_string(event, &quot;message-name&quot;), &quot;pre-bootstrap&quot;))

No need for null check here?

&gt; Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.ExecutableHeap.mm:101
&gt;                  CFRunLoopTimerContext context = { 0, info, NULL, NULL, NULL };

Why still create the context if it’s not used?

&gt; Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceMain.ExecutableHeap.mm:102
&gt; +                CFRunLoopTimerRef timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent(), 0, 0, 0, reexecCallBack, 0);

Looks like the same timer leak again. Also, why 0 instead of nullptr?

&gt; Source/WebKit2/UIProcess/Launcher/mac/ProcessLauncherMac.mm:396
&gt; +        // Other end of ref called before we setup the event handler.

&quot;set up&quot; should be two words here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165470</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-02-16 19:25:32 -0800</bug_when>
    <thetext>We don&apos;t need to do this anymore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245838</attachid>
            <date>2015-02-01 11:55:07 -0800</date>
            <delta_ts>2016-02-16 19:46:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141139-20150201115515.patch</filename>
            <type>text/plain</type>
            <size>33255</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3OTQ2OCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE1LTAyLTAxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIFhQQyBmb3IgZXhlY3V0YWJsZSBo
ZWFwIHBsdWdpbiBzZXJ2aWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQxMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgLSBBZGRzIGEgbmV3IHNlcnZpY2UsIGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2lu
LjMyLkV4ZWN1dGFibGVIZWFwLCB3aGljaCBjYW4gYmUgdXNlZAorICAgICAgICAgIGZvciBwbHVn
LWlucyB0aGF0IG5lZWQgYW4gZXhlY3V0YWJsZSBoZWFwLiBJdCBtaXJyb3JzIGNvbS5hcHBsZS5X
ZWJLaXQuUGx1Z2luLjMyLAorICAgICAgICAgIHdpdGggdGhlIGFkZGl0aW9uYWwgYmVoYXZpb3Ig
b2YgYmVpbmcgcmUtZXhlY2VkIHdpdGggYW4gZXhlY3V0YWJsZSBoZWFwICh0aGlzIGlzIAorICAg
ICAgICAgIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZXJlIGlzIG5vIG90aGVyIHdheSB0byBtYXJrIHRo
ZSBwcm9jZXNzIGFzIGhhdmluZyBhbiBleGVjdXRhYmxlIAorICAgICAgICAgIGhlYXApLgorCisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvUGx1Z2luU2VydmljZS4zMi5FeGVjdXRhYmxlSGVhcC54
Y2NvbmZpZzogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvUGx1Z2lu
U2VydmljZS4zMi54Y2NvbmZpZy4KKyAgICAgICAgQWRkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBu
ZXcgc2VydmljZS4KKworICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9Y
UENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLkV4ZWN1dGFibGVIZWFwLm1tOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9Y
UENTZXJ2aWNlTWFpbi5EZXZlbG9wbWVudC5tbS4KKyAgICAgICAgKFdlYktpdDo6cmVleGVjKToK
KyAgICAgICAgKFdlYktpdDo6cmVleGVjQ2FsbEJhY2spOgorICAgICAgICAoV2ViS2l0OjpYUENT
ZXJ2aWNlRXZlbnRIYW5kbGVyKToKKyAgICAgICAgQWRkIGEgbmV3IG1haW4oKSB3aGljaCBpcyBh
IG1peCBiZXR3ZWVuIHRoZSBYUENTZXJ2aWNlTWFpbi5tbSBhbmQgWFBDU2VydmljZU1haW4uRGV2
ZWxvcG1lbnQubW0uIEl0IAorICAgICAgICBzdXBwb3J0cyB0aGUgcmUtZXhlYyBtZXNzYWdlLCBi
dXQgd2lsbCBpZ25vcmUgYW55IHBhcmFtZXRlcnMgcGFzc2VkIHRvIHRoYXQgbWVzc2FnZSwgYW5k
IG9ubHkgY2hhbmdlIAorICAgICAgICB0aGUgaGVhcCBleGVjdXRhYmxlLW5lc3Mgb24gcmUtZXhl
Yy4gCisKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvbWFjL1Byb2Nlc3NMYXVuY2hlck1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6c2VydmljZU5hbWUpOgorICAgICAgICBBZGQgbmV3IHNl
cnZpY2UgbmFtZS4KKworICAgICAgICAoV2ViS2l0Ojpjb25uZWN0VG9SZUV4ZWNTZXJ2aWNlRm9y
RGV2ZWxvcG1lbnQpOgorICAgICAgICBSZW5hbWVkIGZyb20gY29ubmVjdFRvUmVFeGVjU2Vydmlj
ZS4KKworICAgICAgICAoV2ViS2l0Ojpjb25uZWN0VG9SZUV4ZWNTZXJ2aWNlRm9yRXhlY3V0YWJs
ZUhlYXApOgorICAgICAgICBWYXJpYW50IG9mIGNvbm5lY3RUb1JlRXhlY1NlcnZpY2Ugd2hpY2gg
b25seSBkb2VzIHRoZSByZS1leGVjIHRvIGNoYW5nZSB0aGUgZXhlY3V0YWJsZSBoZWFwIGJpdC4K
KworICAgICAgICAoV2ViS2l0OjpjcmVhdGVTZXJ2aWNlKToKKyAgICAgICAgQ2FsbCBjb25uZWN0
VG9SZUV4ZWNTZXJ2aWNlRm9yRXhlY3V0YWJsZUhlYXAgd2hlbiBuZWNlc3NhcnkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpzaG91bGRVc2VYUEMpOgorICAgICAgICBVc2UgWFBDIGluIGFsbCBjYXNl
cy4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgQWRkIG5ldyBmaWxlcyBhbmQgdGFyZ2V0cy4KKwogMjAxNS0wMi0wMSAgRGFuIEJlcm5zdGVp
biAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXIgdHJhY2luZwpJbmRleDogU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvUGx1Z2luU2Vy
dmljZS4zMi5FeGVjdXRhYmxlSGVhcC54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9Db25maWd1cmF0aW9ucy9QbHVnaW5TZXJ2aWNlLjMyLkV4ZWN1dGFibGVIZWFwLnhjY29u
ZmlnCShyZXZpc2lvbiAxNzk0NDkpCShmcm9tIFNvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25z
L1BsdWdpblNlcnZpY2UuMzIueGNjb25maWc6MTc5NDQ5KQorKysgU291cmNlL1dlYktpdDIvQ29u
ZmlndXJhdGlvbnMvUGx1Z2luU2VydmljZS4zMi5FeGVjdXRhYmxlSGVhcC54Y2NvbmZpZwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
Ky8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisKKyNpbmNsdWRlICJCYXNlWFBDU2VydmljZS54Y2NvbmZpZyIKKworV0tfWFBDX1NF
UlZJQ0VfVkFSSUFOVCA9IE5vcm1hbDsKKworVkFMSURfQVJDSFNbc2RrPW1hY29zeCpdID0gJChW
QUxJRF9BUkNIU19tYWNvc3hfJChPTkxZX0FDVElWRV9BUkNIKSk7CitWQUxJRF9BUkNIU19tYWNv
c3hfWUVTID0gJChWQUxJRF9BUkNIUyk7CitWQUxJRF9BUkNIU19tYWNvc3hfTk8gPSBpMzg2Owor
CitQUk9EVUNUX05BTUUgPSBjb20uYXBwbGUuV2ViS2l0LlBsdWdpbi4zMjsKK0lORk9QTElTVF9G
SUxFID0gUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50L21hYy9YUENTZXJ2aWNlL1BsdWdpblNlcnZp
Y2UuMzItNjQuSW5mby5wbGlzdDsKKworRlJBTUVXT1JLX0xERkxBR1MgPSAtZnJhbWV3b3JrIEZv
dW5kYXRpb24gLWZyYW1ld29yayBXZWJLaXQyOworCitPVEhFUl9MREZMQUdTID0gJChGUkFNRVdP
UktfTERGTEFHUykgJChPVEhFUl9MREZMQUdTKSAkKE9USEVSX0xERkxBR1NfUExBVEZPUk0pICQo
T1RIRVJfTERGTEFHU19WRVJTSU9ORURfRlJBTUVXT1JLX1BBVEgpOworT1RIRVJfTERGTEFHU19Q
TEFURk9STVtzZGs9bWFjb3N4Kl0gPSAtZnJhbWV3b3JrIEFwcEtpdDsKKworQ09ERV9TSUdOX0VO
VElUTEVNRU5UUyA9IENvbmZpZ3VyYXRpb25zL1BsdWdpblNlcnZpY2UuZW50aXRsZW1lbnRzOwor
CitTS0lQX0lOU1RBTExbc2RrPWlwaG9uZSpdID0gWUVTOwpJbmRleDogU291cmNlL1dlYktpdDIv
Q29uZmlndXJhdGlvbnMvUGx1Z2luU2VydmljZS4zMi5FeGVjdXRhYmxlSGVhcC54Y2NvbmZpZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9QbHVnaW5TZXJ2aWNl
LjMyLkV4ZWN1dGFibGVIZWFwLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9Db25maWd1cmF0aW9ucy9QbHVnaW5TZXJ2aWNlLjMyLkV4ZWN1dGFibGVIZWFwLnhjY29u
ZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBAIFZBTElEX0FSQ0hTW3Nkaz1tYWNv
c3gqXSA9ICQoVkFMSURfQVJDSFMKIFZBTElEX0FSQ0hTX21hY29zeF9ZRVMgPSAkKFZBTElEX0FS
Q0hTKTsKIFZBTElEX0FSQ0hTX21hY29zeF9OTyA9IGkzODY7CiAKLVBST0RVQ1RfTkFNRSA9IGNv
bS5hcHBsZS5XZWJLaXQuUGx1Z2luLjMyOworUFJPRFVDVF9OQU1FID0gY29tLmFwcGxlLldlYktp
dC5QbHVnaW4uMzIuRXhlY3V0YWJsZUhlYXA7CiBJTkZPUExJU1RfRklMRSA9IFBsdWdpblByb2Nl
c3MvRW50cnlQb2ludC9tYWMvWFBDU2VydmljZS9QbHVnaW5TZXJ2aWNlLjMyLTY0LkluZm8ucGxp
c3Q7CiAKIEZSQU1FV09SS19MREZMQUdTID0gLWZyYW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdv
cmsgV2ViS2l0MjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0
aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLkV4ZWN1dGFibGVIZWFwLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9Y
UENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLkV4ZWN1dGFibGVIZWFwLm1tCShyZXZpc2lvbiAxNzk0
NDkpCShmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9Y
UENTZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLkRldmVsb3BtZW50Lm1tOjE3OTQ0OSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1Nl
cnZpY2VNYWluLkV4ZWN1dGFibGVIZWFwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTY5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgPGNydF9leHRl
cm5zLmg+CisjaW1wb3J0IDxkbGZjbi5oPgorI2ltcG9ydCA8bWFjaC1vL2R5bGQuaD4KKyNpbXBv
cnQgPHNwYXduLmg+IAorI2ltcG9ydCA8c3RkaW8uaD4KKyNpbXBvcnQgPHN0ZGxpYi5oPgorI2lt
cG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEku
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBSZWV4ZWNJbmZvIHsKKyAgICBib29s
IGV4ZWN1dGFibGVIZWFwOworICAgIGNoYXIqKiBlbnZpcm9ubWVudDsKKyAgICBjcHVfdHlwZV90
IGNwdVR5cGU7Cit9OworCitzdGF0aWMgTk9fUkVUVVJOIHZvaWQgcmVleGVjKFJlZXhlY0luZm8g
KmluZm8pCit7CisgICAgcG9zaXhfc3Bhd25hdHRyX3QgYXR0cjsKKyAgICBwb3NpeF9zcGF3bmF0
dHJfaW5pdCgmYXR0cik7CisKKyAgICBzaG9ydCBmbGFncyA9IDA7CisKKyAgICAvLyBXZSBqdXN0
IHdhbnQgdG8gc2V0IHRoZSBwcm9jZXNzIHN0YXRlLCBub3QgYWN0dWFsbHkgbGF1bmNoIGEgbmV3
IHByb2Nlc3MsCisgICAgLy8gc28gd2UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgZGFyd2luIGV4dGVu
c2lvbiB0byBwb3NpeF9zcGF3biBQT1NJWF9TUEFXTl9TRVRFWEVDCisgICAgLy8gdG8gYWN0IGxp
a2UgYSBtb3JlIGZ1bGwgZmVhdHVyZWQgZXhlYy4KKyAgICBmbGFncyB8PSBQT1NJWF9TUEFXTl9T
RVRFWEVDOworCisgICAgc2lnc2V0X3Qgc2lnbmFsTWFza1NldDsKKyAgICBzaWdlbXB0eXNldCgm
c2lnbmFsTWFza1NldCk7CisgICAgcG9zaXhfc3Bhd25hdHRyX3NldHNpZ21hc2soJmF0dHIsICZz
aWduYWxNYXNrU2V0KTsKKyAgICBmbGFncyB8PSBQT1NJWF9TUEFXTl9TRVRTSUdNQVNLOworCisg
ICAgc3RhdGljIGNvbnN0IGludCBhbGxvd0V4ZWN1dGFibGVIZWFwRmxhZyA9IDB4MjAwMDsKKyAg
ICBpZiAoaW5mby0+ZXhlY3V0YWJsZUhlYXApCisgICAgICAgIGZsYWdzIHw9IGFsbG93RXhlY3V0
YWJsZUhlYXBGbGFnOworCisgICAgcG9zaXhfc3Bhd25hdHRyX3NldGZsYWdzKCZhdHRyLCBmbGFn
cyk7CisKKyAgICBzaXplX3Qgb3V0Q291bnQgPSAwOworICAgIHBvc2l4X3NwYXduYXR0cl9zZXRi
aW5wcmVmX25wKCZhdHRyLCAxLCAmaW5mby0+Y3B1VHlwZSwgJm91dENvdW50KTsKKworICAgIGNo
YXIgcGF0aFs0ICogUEFUSF9NQVhdOworICAgIHVpbnQzMl90IHBhdGhMZW5ndGggPSBzaXplb2Yo
cGF0aCk7CisgICAgX05TR2V0RXhlY3V0YWJsZVBhdGgocGF0aCwgJnBhdGhMZW5ndGgpOworCisg
ICAgY2hhcioqIGFyZ3YgPSAqX05TR2V0QXJndigpOworICAgIGNvbnN0IGNoYXIqIHByb2dyYW1O
YW1lID0gYXJndlswXTsKKyAgICBjb25zdCBjaGFyKiBhcmdzW10gPSB7IHByb2dyYW1OYW1lLCAw
IH07CisKKyAgICBwaWRfdCBwcm9jZXNzSWRlbnRpZmllciA9IDA7CisgICAgcG9zaXhfc3Bhd24o
JnByb2Nlc3NJZGVudGlmaWVyLCBwYXRoLCAwLCAmYXR0ciwgY29uc3RfY2FzdDxjaGFyKio+KGFy
Z3MpLCBpbmZvLT5lbnZpcm9ubWVudCk7CisKKyAgICBwb3NpeF9zcGF3bmF0dHJfZGVzdHJveSgm
YXR0cik7CisKKyAgICBOU0xvZyhAIlVuYWJsZSB0byByZS1leGVjIGZvciBwYXRoOiAlcyIsIHBh
dGgpOworICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKworc3RhdGljIE5PX1JFVFVSTiB2b2lk
IHJlZXhlY0NhbGxCYWNrKENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyLCB2b2lkICppbmZvKQorewor
ICAgIHJlZXhlYyhzdGF0aWNfY2FzdDxSZWV4ZWNJbmZvICo+KGluZm8pKTsKK30KKworc3RhdGlj
IHZvaWQgWFBDU2VydmljZUV2ZW50SGFuZGxlcih4cGNfY29ubmVjdGlvbl90IHBlZXIpCit7Cisg
ICAgeHBjX2Nvbm5lY3Rpb25fc2V0X3RhcmdldF9xdWV1ZShwZWVyLCBkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihwZWVyLCBe
KHhwY19vYmplY3RfdCBldmVudCkgeworICAgICAgICB4cGNfdHlwZV90IHR5cGUgPSB4cGNfZ2V0
X3R5cGUoZXZlbnQpOworICAgICAgICBpZiAodHlwZSA9PSBYUENfVFlQRV9FUlJPUikgeworICAg
ICAgICAgICAgaWYgKGV2ZW50ID09IFhQQ19FUlJPUl9DT05ORUNUSU9OX0lOVkFMSUQgfHwgZXZl
bnQgPT0gWFBDX0VSUk9SX1RFUk1JTkFUSU9OX0lNTUlORU5UKSB7CisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IEhhbmRsZSB0aGlzIGNhc2UgbW9yZSBncmFjZWZ1bGx5LgorICAgICAgICAgICAg
ICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGFzc2VydCh0eXBlID09IFhQQ19UWVBFX0RJQ1RJT05BUlkpOworCisgICAg
ICAgICAgICBpZiAoIXN0cmNtcCh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAibWVz
c2FnZS1uYW1lIiksICJyZS1leGVjIikpIHsKKyAgICAgICAgICAgICAgICBSZWV4ZWNJbmZvICpp
bmZvID0gc3RhdGljX2Nhc3Q8UmVleGVjSW5mbyAqPihtYWxsb2Moc2l6ZW9mKFJlZXhlY0luZm8p
KSk7CisKKyAgICAgICAgICAgICAgICBpbmZvLT5leGVjdXRhYmxlSGVhcCA9IHhwY19kaWN0aW9u
YXJ5X2dldF9ib29sKGV2ZW50LCAiZXhlY3V0YWJsZS1oZWFwIik7CisgICAgICAgICAgICAgICAg
aW5mby0+Y3B1VHlwZSA9IChjcHVfdHlwZV90KXhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQoZXZl
bnQsICJhcmNoaXRlY3R1cmUiKTsKKworICAgICAgICAgICAgICAgIHhwY19vYmplY3RfdCBlbnZp
cm9ubWVudEFycmF5ID0geHBjX2RpY3Rpb25hcnlfZ2V0X3ZhbHVlKGV2ZW50LCAiZW52aXJvbm1l
bnQiKTsKKyAgICAgICAgICAgICAgICBzaXplX3QgbnVtYmVyT2ZFbnZpcm9ubWVudFZhcmlhYmxl
cyA9IHhwY19hcnJheV9nZXRfY291bnQoZW52aXJvbm1lbnRBcnJheSk7CisgICAgICAgICAgICAg
ICAgY2hhcioqIGVudmlyb25tZW50ID0gc3RhdGljX2Nhc3Q8Y2hhciAqKj4obWFsbG9jKChudW1i
ZXJPZkVudmlyb25tZW50VmFyaWFibGVzICsgMSkgKiBzaXplb2YoY2hhciopKSk7CisgICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkVudmlyb25tZW50VmFyaWFi
bGVzOyArK2kpCisgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50W2ldID0gc3RyZHVwKHhw
Y19hcnJheV9nZXRfc3RyaW5nKGVudmlyb25tZW50QXJyYXksIGkpKTsKKyAgICAgICAgICAgICAg
ICBlbnZpcm9ubWVudFtudW1iZXJPZkVudmlyb25tZW50VmFyaWFibGVzXSA9IDA7CisgICAgICAg
ICAgICAgICAgaW5mby0+ZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDsKKworICAgICAgICAgICAg
ICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBjb250ZXh0ID0geyAwLCBpbmZvLCBOVUxMLCBOVUxM
LCBOVUxMIH07CisgICAgICAgICAgICAgICAgQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIgPSBDRlJ1
bkxvb3BUaW1lckNyZWF0ZShOVUxMLCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSwgMCwgMCwg
MCwgcmVleGVjQ2FsbEJhY2ssICZjb250ZXh0KTsKKyAgICAgICAgICAgICAgICBDRlJ1bkxvb3BB
ZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJyZW50KCksIHRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9k
ZXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXN0cmNtcCh4cGNfZGljdGlv
bmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAibWVzc2FnZS1uYW1lIiksICJib290c3RyYXAiKSkgewor
ICAgICAgICAgICAgICAgIHN0YXRpYyB2b2lkKiBmcmFtZXdvcmtMaWJyYXJ5ID0gZGxvcGVuKHhw
Y19kaWN0aW9uYXJ5X2dldF9zdHJpbmcoZXZlbnQsICJmcmFtZXdvcmstZXhlY3V0YWJsZS1wYXRo
IiksIFJUTERfTk9XKTsKKyAgICAgICAgICAgICAgICBpZiAoIWZyYW1ld29ya0xpYnJhcnkpIHsK
KyAgICAgICAgICAgICAgICAgICAgTlNMb2coQCJVbmFibGUgdG8gbG9hZCBXZWJLaXQuZnJhbWV3
b3JrIGF0IHBhdGg6ICVzIChFcnJvcjogJXMpIiwgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhl
dmVudCwgImZyYW1ld29yay1leGVjdXRhYmxlLXBhdGgiKSwgZGxlcnJvcigpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIENGQnVuZGxlUmVmIHdlYktpdEJ1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxl
V2l0aElkZW50aWZpZXIoQ0ZTVFIoImNvbS5hcHBsZS5XZWJLaXQiKSk7CisgICAgICAgICAgICAg
ICAgQ0ZTdHJpbmdSZWYgZW50cnlQb2ludEZ1bmN0aW9uTmFtZSA9IChDRlN0cmluZ1JlZilDRkJ1
bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCks
IENGU1RSKCJXZWJLaXRFbnRyeVBvaW50IikpOworCisgICAgICAgICAgICAgICAgdHlwZWRlZiB2
b2lkICgqSW5pdGlhbGl6ZXJGdW5jdGlvbikoeHBjX2Nvbm5lY3Rpb25fdCwgeHBjX29iamVjdF90
KTsKKyAgICAgICAgICAgICAgICBJbml0aWFsaXplckZ1bmN0aW9uIGluaXRpYWxpemVyRnVuY3Rp
b25QdHIgPSByZWludGVycHJldF9jYXN0PEluaXRpYWxpemVyRnVuY3Rpb24+KENGQnVuZGxlR2V0
RnVuY3Rpb25Qb2ludGVyRm9yTmFtZSh3ZWJLaXRCdW5kbGUsIGVudHJ5UG9pbnRGdW5jdGlvbk5h
bWUpKTsKKyAgICAgICAgICAgICAgICBpZiAoIWluaXRpYWxpemVyRnVuY3Rpb25QdHIpIHsKKyAg
ICAgICAgICAgICAgICAgICAgTlNMb2coQCJVbmFibGUgdG8gZmluZCBlbnRyeSBwb2ludCBpbiBX
ZWJLaXQuZnJhbWV3b3JrIHdpdGggbmFtZTogJUAiLCAoTlNTdHJpbmcgKillbnRyeVBvaW50RnVu
Y3Rpb25OYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGF1dG8gcmVwbHkgPSBhZG9wdE9TT2Jq
ZWN0KHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseShldmVudCkpOworICAgICAgICAgICAgICAg
IHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcocmVwbHkuZ2V0KCksICJtZXNzYWdlLW5hbWUiLCAi
cHJvY2Vzcy1maW5pc2hlZC1sYXVuY2hpbmciKTsKKyAgICAgICAgICAgICAgICB4cGNfY29ubmVj
dGlvbl9zZW5kX21lc3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKGV2
ZW50KSwgcmVwbHkuZ2V0KCkpOworCisgICAgICAgICAgICAgICAgZHVwMih4cGNfZGljdGlvbmFy
eV9kdXBfZmQoZXZlbnQsICJzdGRvdXQiKSwgU1RET1VUX0ZJTEVOTyk7CisgICAgICAgICAgICAg
ICAgZHVwMih4cGNfZGljdGlvbmFyeV9kdXBfZmQoZXZlbnQsICJzdGRlcnIiKSwgU1RERVJSX0ZJ
TEVOTyk7CisKKyAgICAgICAgICAgICAgICBpbml0aWFsaXplckZ1bmN0aW9uUHRyKHBlZXIsIGV2
ZW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTGVhayBhIGJvb3N0IG9udG8g
dGhlIE5ldHdvcmtQcm9jZXNzLgorICAgICAgICAgICAgaWYgKCFzdHJjbXAoeHBjX2RpY3Rpb25h
cnlfZ2V0X3N0cmluZyhldmVudCwgIm1lc3NhZ2UtbmFtZSIpLCAicHJlLWJvb3RzdHJhcCIpKQor
ICAgICAgICAgICAgICAgIHhwY19yZXRhaW4oZXZlbnQpOworICAgICAgICB9CisgICAgfSk7CisK
KyAgICB4cGNfY29ubmVjdGlvbl9yZXN1bWUocGVlcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdDsKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQoreworICAgIHhwY19tYWluKFhQQ1NlcnZpY2VFdmVudEhhbmRsZXIpOworICAg
IHJldHVybiAwOworfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGls
aXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4uRXhlY3V0YWJsZUhlYXAubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0VudHJ5UG9pbnRVdGlsaXRpZXMvbWFj
L1hQQ1NlcnZpY2UvWFBDU2VydmljZU1haW4uRXhlY3V0YWJsZUhlYXAubW0JKHdvcmtpbmcgY29w
eSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENT
ZXJ2aWNlL1hQQ1NlcnZpY2VNYWluLkV4ZWN1dGFibGVIZWFwLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiwxMyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RydWN0IFJlZXhlY0lu
Zm8gewotICAgIGJvb2wgZXhlY3V0YWJsZUhlYXA7Ci0gICAgY2hhcioqIGVudmlyb25tZW50Owot
ICAgIGNwdV90eXBlX3QgY3B1VHlwZTsKLX07Ci0KLXN0YXRpYyBOT19SRVRVUk4gdm9pZCByZWV4
ZWMoUmVleGVjSW5mbyAqaW5mbykKK3N0YXRpYyBOT19SRVRVUk4gdm9pZCByZWV4ZWMoKQogewog
ICAgIHBvc2l4X3NwYXduYXR0cl90IGF0dHI7CiAgICAgcG9zaXhfc3Bhd25hdHRyX2luaXQoJmF0
dHIpOwpAQCAtNjAsMTMgKzU0LDEzIEBAIHN0YXRpYyBOT19SRVRVUk4gdm9pZCByZWV4ZWMoUmVl
eGVjSW5mbyAKICAgICBmbGFncyB8PSBQT1NJWF9TUEFXTl9TRVRTSUdNQVNLOwogCiAgICAgc3Rh
dGljIGNvbnN0IGludCBhbGxvd0V4ZWN1dGFibGVIZWFwRmxhZyA9IDB4MjAwMDsKLSAgICBpZiAo
aW5mby0+ZXhlY3V0YWJsZUhlYXApCi0gICAgICAgIGZsYWdzIHw9IGFsbG93RXhlY3V0YWJsZUhl
YXBGbGFnOwotCi0gICAgcG9zaXhfc3Bhd25hdHRyX3NldGZsYWdzKCZhdHRyLCBmbGFncyk7Cisg
ICAgZmxhZ3MgfD0gYWxsb3dFeGVjdXRhYmxlSGVhcEZsYWc7CiAKKyAgICBjcHVfdHlwZV90IGNw
dVR5cGVzW10gPSB7IF9OU0dldE1hY2hFeGVjdXRlSGVhZGVyKCktPmNwdXR5cGUgfTsKICAgICBz
aXplX3Qgb3V0Q291bnQgPSAwOwotICAgIHBvc2l4X3NwYXduYXR0cl9zZXRiaW5wcmVmX25wKCZh
dHRyLCAxLCAmaW5mby0+Y3B1VHlwZSwgJm91dENvdW50KTsKKyAgICBwb3NpeF9zcGF3bmF0dHJf
c2V0YmlucHJlZl9ucCgmYXR0ciwgMSwgY3B1VHlwZXMsICZvdXRDb3VudCk7CisKKyAgICBwb3Np
eF9zcGF3bmF0dHJfc2V0ZmxhZ3MoJmF0dHIsIGZsYWdzKTsKIAogICAgIGNoYXIgcGF0aFs0ICog
UEFUSF9NQVhdOwogICAgIHVpbnQzMl90IHBhdGhMZW5ndGggPSBzaXplb2YocGF0aCk7CkBAIC04
NSw5ICs3OSw5IEBAIHN0YXRpYyBOT19SRVRVUk4gdm9pZCByZWV4ZWMoUmVleGVjSW5mbyAKICAg
ICBleGl0KEVYSVRfRkFJTFVSRSk7CiB9CiAKLXN0YXRpYyBOT19SRVRVUk4gdm9pZCByZWV4ZWND
YWxsQmFjayhDRlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgdm9pZCAqaW5mbykKK3N0YXRpYyBOT19S
RVRVUk4gdm9pZCByZWV4ZWNDYWxsQmFjayhDRlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgdm9pZCop
CiB7Ci0gICAgcmVleGVjKHN0YXRpY19jYXN0PFJlZXhlY0luZm8gKj4oaW5mbykpOworICAgIHJl
ZXhlYygpOwogfQogCiBzdGF0aWMgdm9pZCBYUENTZXJ2aWNlRXZlbnRIYW5kbGVyKHhwY19jb25u
ZWN0aW9uX3QgcGVlcikKQEAgLTEwNCwzMSArOTgsMTIgQEAgc3RhdGljIHZvaWQgWFBDU2Vydmlj
ZUV2ZW50SGFuZGxlcih4cGNfYwogICAgICAgICAgICAgYXNzZXJ0KHR5cGUgPT0gWFBDX1RZUEVf
RElDVElPTkFSWSk7CiAKICAgICAgICAgICAgIGlmICghc3RyY21wKHhwY19kaWN0aW9uYXJ5X2dl
dF9zdHJpbmcoZXZlbnQsICJtZXNzYWdlLW5hbWUiKSwgInJlLWV4ZWMiKSkgewotICAgICAgICAg
ICAgICAgIFJlZXhlY0luZm8gKmluZm8gPSBzdGF0aWNfY2FzdDxSZWV4ZWNJbmZvICo+KG1hbGxv
YyhzaXplb2YoUmVleGVjSW5mbykpKTsKLQotICAgICAgICAgICAgICAgIGluZm8tPmV4ZWN1dGFi
bGVIZWFwID0geHBjX2RpY3Rpb25hcnlfZ2V0X2Jvb2woZXZlbnQsICJleGVjdXRhYmxlLWhlYXAi
KTsKLSAgICAgICAgICAgICAgICBpbmZvLT5jcHVUeXBlID0gKGNwdV90eXBlX3QpeHBjX2RpY3Rp
b25hcnlfZ2V0X3VpbnQ2NChldmVudCwgImFyY2hpdGVjdHVyZSIpOwotCi0gICAgICAgICAgICAg
ICAgeHBjX29iamVjdF90IGVudmlyb25tZW50QXJyYXkgPSB4cGNfZGljdGlvbmFyeV9nZXRfdmFs
dWUoZXZlbnQsICJlbnZpcm9ubWVudCIpOwotICAgICAgICAgICAgICAgIHNpemVfdCBudW1iZXJP
ZkVudmlyb25tZW50VmFyaWFibGVzID0geHBjX2FycmF5X2dldF9jb3VudChlbnZpcm9ubWVudEFy
cmF5KTsKLSAgICAgICAgICAgICAgICBjaGFyKiogZW52aXJvbm1lbnQgPSBzdGF0aWNfY2FzdDxj
aGFyICoqPihtYWxsb2MoKG51bWJlck9mRW52aXJvbm1lbnRWYXJpYWJsZXMgKyAxKSAqIHNpemVv
ZihjaGFyKikpKTsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJl
ck9mRW52aXJvbm1lbnRWYXJpYWJsZXM7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgZW52aXJv
bm1lbnRbaV0gPSBzdHJkdXAoeHBjX2FycmF5X2dldF9zdHJpbmcoZW52aXJvbm1lbnRBcnJheSwg
aSkpOwotICAgICAgICAgICAgICAgIGVudmlyb25tZW50W251bWJlck9mRW52aXJvbm1lbnRWYXJp
YWJsZXNdID0gMDsKLSAgICAgICAgICAgICAgICBpbmZvLT5lbnZpcm9ubWVudCA9IGVudmlyb25t
ZW50OwotCiAgICAgICAgICAgICAgICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQgPSB7
IDAsIGluZm8sIE5VTEwsIE5VTEwsIE5VTEwgfTsKLSAgICAgICAgICAgICAgICBDRlJ1bkxvb3BU
aW1lclJlZiB0aW1lciA9IENGUnVuTG9vcFRpbWVyQ3JlYXRlKE5VTEwsIENGQWJzb2x1dGVUaW1l
R2V0Q3VycmVudCgpLCAwLCAwLCAwLCByZWV4ZWNDYWxsQmFjaywgJmNvbnRleHQpOworICAgICAg
ICAgICAgICAgIENGUnVuTG9vcFRpbWVyUmVmIHRpbWVyID0gQ0ZSdW5Mb29wVGltZXJDcmVhdGUo
TlVMTCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCksIDAsIDAsIDAsIHJlZXhlY0NhbGxCYWNr
LCAwKTsKICAgICAgICAgICAgICAgICBDRlJ1bkxvb3BBZGRUaW1lcihDRlJ1bkxvb3BHZXRDdXJy
ZW50KCksIHRpbWVyLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoIXN0cmNtcCh4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKGV2ZW50LCAi
bWVzc2FnZS1uYW1lIiksICJib290c3RyYXAiKSkgewotICAgICAgICAgICAgICAgIHN0YXRpYyB2
b2lkKiBmcmFtZXdvcmtMaWJyYXJ5ID0gZGxvcGVuKHhwY19kaWN0aW9uYXJ5X2dldF9zdHJpbmco
ZXZlbnQsICJmcmFtZXdvcmstZXhlY3V0YWJsZS1wYXRoIiksIFJUTERfTk9XKTsKLSAgICAgICAg
ICAgICAgICBpZiAoIWZyYW1ld29ya0xpYnJhcnkpIHsKLSAgICAgICAgICAgICAgICAgICAgTlNM
b2coQCJVbmFibGUgdG8gbG9hZCBXZWJLaXQuZnJhbWV3b3JrIGF0IHBhdGg6ICVzIChFcnJvcjog
JXMpIiwgeHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhldmVudCwgImZyYW1ld29yay1leGVjdXRh
YmxlLXBhdGgiKSwgZGxlcnJvcigpKTsKLSAgICAgICAgICAgICAgICAgICAgZXhpdChFWElUX0ZB
SUxVUkUpOwotICAgICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgICAgIENGQnVuZGxlUmVm
IHdlYktpdEJ1bmRsZSA9IENGQnVuZGxlR2V0QnVuZGxlV2l0aElkZW50aWZpZXIoQ0ZTVFIoImNv
bS5hcHBsZS5XZWJLaXQiKSk7CiAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZW50cnlQb2lu
dEZ1bmN0aW9uTmFtZSA9IChDRlN0cmluZ1JlZilDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rp
b25hcnlLZXkoQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCksIENGU1RSKCJXZWJLaXRFbnRyeVBvaW50
IikpOwogCkBAIC0xNDMsOSArMTE4LDYgQEAgc3RhdGljIHZvaWQgWFBDU2VydmljZUV2ZW50SGFu
ZGxlcih4cGNfYwogICAgICAgICAgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9zdHJpbmcocmVw
bHkuZ2V0KCksICJtZXNzYWdlLW5hbWUiLCAicHJvY2Vzcy1maW5pc2hlZC1sYXVuY2hpbmciKTsK
ICAgICAgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoeHBjX2RpY3Rpb25h
cnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKGV2ZW50KSwgcmVwbHkuZ2V0KCkpOwogCi0gICAgICAg
ICAgICAgICAgZHVwMih4cGNfZGljdGlvbmFyeV9kdXBfZmQoZXZlbnQsICJzdGRvdXQiKSwgU1RE
T1VUX0ZJTEVOTyk7Ci0gICAgICAgICAgICAgICAgZHVwMih4cGNfZGljdGlvbmFyeV9kdXBfZmQo
ZXZlbnQsICJzdGRlcnIiKSwgU1RERVJSX0ZJTEVOTyk7Ci0KICAgICAgICAgICAgICAgICBpbml0
aWFsaXplckZ1bmN0aW9uUHRyKHBlZXIsIGV2ZW50KTsKICAgICAgICAgICAgIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Q
cm9jZXNzTGF1bmNoZXJNYWMubW0JKHJldmlzaW9uIDE3OTQ2OCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzcsMTUgKzE3NywxNyBAQCBzdGF0aWMgY29uc3QgY2hhciogc2VydmljZU5hbWUo
Y29uc3QgUHJvCiAjZW5kaWYKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICBj
YXNlIFByb2Nlc3NMYXVuY2hlcjo6UGx1Z2luUHJvY2VzczoKLSAgICAgICAgLy8gRklYTUU6IFN1
cHBvcnQgcGx1Z2lucyB0aGF0IHJlcXVpcmUgYW4gZXhlY3V0YWJsZSBoZWFwLgogICAgICAgICBp
ZiAoZm9yRGV2ZWxvcG1lbnQpIHsKICAgICAgICAgICAgIGlmIChsYXVuY2hPcHRpb25zLmFyY2hp
dGVjdHVyZSA9PSBDUFVfVFlQRV9YODYpCiAgICAgICAgICAgICAgICAgcmV0dXJuICJjb20uYXBw
bGUuV2ViS2l0LlBsdWdpbi4zMi5EZXZlbG9wbWVudCI7CiAgICAgICAgICAgICBpZiAobGF1bmNo
T3B0aW9ucy5hcmNoaXRlY3R1cmUgPT0gQ1BVX1RZUEVfWDg2XzY0KQogICAgICAgICAgICAgICAg
IHJldHVybiAiY29tLmFwcGxlLldlYktpdC5QbHVnaW4uNjQuRGV2ZWxvcG1lbnQiOwogICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKGxhdW5jaE9wdGlvbnMuYXJjaGl0ZWN0dXJlID09
IENQVV9UWVBFX1g4NikKKyAgICAgICAgICAgIGlmIChsYXVuY2hPcHRpb25zLmFyY2hpdGVjdHVy
ZSA9PSBDUFVfVFlQRV9YODYpIHsKKyAgICAgICAgICAgICAgICBpZiAobGF1bmNoT3B0aW9ucy5l
eGVjdXRhYmxlSGVhcCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJjb20uYXBwbGUuV2Vi
S2l0LlBsdWdpbi4zMi5FeGVjdXRhYmxlSGVhcCI7CiAgICAgICAgICAgICAgICAgcmV0dXJuICJj
b20uYXBwbGUuV2ViS2l0LlBsdWdpbi4zMiI7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAobGF1bmNoT3B0aW9ucy5hcmNoaXRlY3R1cmUgPT0gQ1BVX1RZUEVfWDg2XzY0KQogICAgICAg
ICAgICAgICAgIHJldHVybiAiY29tLmFwcGxlLldlYktpdC5QbHVnaW4uNjQiOwogICAgICAgICB9
CkBAIC0zMDIsNyArMzA0LDcgQEAgc3RhdGljIHZvaWQgY29ubmVjdFRvU2VydmljZShjb25zdCBQ
cm9jZQogICAgIH0pOwogfQogCi1zdGF0aWMgdm9pZCBjb25uZWN0VG9SZUV4ZWNTZXJ2aWNlKGNv
bnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucywgUHJvY2Vz
c0xhdW5jaGVyKiB0aGF0LCBEaWRGaW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24gZGlkRmlu
aXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uKQorc3RhdGljIHZvaWQgY29ubmVjdFRvUmVFeGVj
U2VydmljZUZvckRldmVsb3BtZW50KGNvbnN0IFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9u
cyYgbGF1bmNoT3B0aW9ucywgUHJvY2Vzc0xhdW5jaGVyKiB0aGF0LCBEaWRGaW5pc2hMYXVuY2hp
bmdQcm9jZXNzRnVuY3Rpb24gZGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uKQogewog
ICAgIEVudmlyb25tZW50VmFyaWFibGVzIGVudmlyb25tZW50VmFyaWFibGVzOwogICAgIGFkZERZ
TERFbnZpcm9ubWVudEFkZGl0aW9ucyhsYXVuY2hPcHRpb25zLCB0cnVlLCBlbnZpcm9ubWVudFZh
cmlhYmxlcyk7CkBAIC0zNjYsMTAgKzM2OCw1MSBAQCBzdGF0aWMgdm9pZCBjb25uZWN0VG9SZUV4
ZWNTZXJ2aWNlKGNvbnN0CiAgICAgeHBjX3JlbGVhc2UocmVFeGVjTWVzc2FnZSk7CiB9CiAKK3N0
YXRpYyB2b2lkIGNvbm5lY3RUb1JlRXhlY1NlcnZpY2VGb3JFeGVjdXRhYmxlSGVhcChjb25zdCBQ
cm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMsIFByb2Nlc3NMYXVu
Y2hlciogdGhhdCwgRGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uIGRpZEZpbmlzaExh
dW5jaGluZ1Byb2Nlc3NGdW5jdGlvbikKK3sKKyAgICAvLyBHZW5lcmF0ZSB0aGUgdXVpZCBmb3Ig
dGhlIHNlcnZpY2UgaW5zdGFuY2Ugd2UgYXJlIGFib3V0IHRvIGNyZWF0ZS4KKyAgICAvLyBGSVhN
RTogVGhpcyBVVUlEIHNob3VsZCBiZSBzdG9yZWQgb24gdGhlIENoaWxkUHJvY2Vzc1Byb3h5Lgor
ICAgIFJlZlB0cjxVVUlESG9sZGVyPiBpbnN0YW5jZVVVSUQgPSBVVUlESG9sZGVyOjpjcmVhdGUo
KTsKKworICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIGlmIHdlIGNvdWxkIHVzZSBPU09i
amVjdFB0ciBmb3IgdGhpcyBjb25uZWN0aW9uIGFzIHdlbGwsIGJ1dCB3ZSdkIGhhdmUgdG8gYmUg
Y2FyZWZ1bAorICAgIC8vIG5vdCB0byBpbnRyb2R1Y2UgYW55IHJldGFpbiBjeWNsZXMgaW4gdGhl
IGNhbGwgdG8geHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIgYmVsb3cuCisgICAgeHBj
X2Nvbm5lY3Rpb25fdCByZUV4ZWNDb25uZWN0aW9uID0geHBjX2Nvbm5lY3Rpb25fY3JlYXRlKHNl
cnZpY2VOYW1lKGxhdW5jaE9wdGlvbnMsIGZhbHNlKSwgMCk7CisgICAgeHBjX2Nvbm5lY3Rpb25f
c2V0X2luc3RhbmNlKHJlRXhlY0Nvbm5lY3Rpb24sIGluc3RhbmNlVVVJRC0+dXVpZCk7CisKKyAg
ICAvLyBLZWVwIHRoZSBQcm9jZXNzTGF1bmNoZXIgYWxpdmUgd2hpbGUgd2UgZG8gdGhlIHJlLWV4
ZWNpbmcgKGJhbGFuY2VkIGluIGV2ZW50IGhhbmRsZXIpLgorICAgIHRoYXQtPnJlZigpOworCisg
ICAgLy8gV2Ugd2FpdCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGVhciBpdHNlbGYgZG93biAoaW5k
aWNhdGVkIHZpYSBhbiBlcnJvciBldmVudCkKKyAgICAvLyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBz
ZXJ2aWNlIGluc3RhbmNlIHJlLWV4ZWNlZCBpdHNlbGYsIGFuZCBpcyBub3cgcmVhZHkgdG8gYmUK
KyAgICAvLyBjb25uZWN0ZWQgdG8uCisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRs
ZXIocmVFeGVjQ29ubmVjdGlvbiwgXih4cGNfb2JqZWN0X3QgZXZlbnQpIHsKKyAgICAgICAgQVNT
RVJUKHhwY19nZXRfdHlwZShldmVudCkgPT0gWFBDX1RZUEVfRVJST1IpOworCisgICAgICAgIGNv
bm5lY3RUb1NlcnZpY2UobGF1bmNoT3B0aW9ucywgdHJ1ZSwgdGhhdCwgZGlkRmluaXNoTGF1bmNo
aW5nUHJvY2Vzc0Z1bmN0aW9uLCBpbnN0YW5jZVVVSUQuZ2V0KCkpOworCisgICAgICAgIC8vIFJl
bGVhc2UgdGhlIGNvbm5lY3Rpb24uCisgICAgICAgIHhwY19yZWxlYXNlKHJlRXhlY0Nvbm5lY3Rp
b24pOworCisgICAgICAgIC8vIE90aGVyIGVuZCBvZiByZWYgY2FsbGVkIGJlZm9yZSB3ZSBzZXR1
cCB0aGUgZXZlbnQgaGFuZGxlci4KKyAgICAgICAgdGhhdC0+ZGVyZWYoKTsKKyAgICB9KTsKKyAg
ICB4cGNfY29ubmVjdGlvbl9yZXN1bWUocmVFeGVjQ29ubmVjdGlvbik7CisKKyAgICB4cGNfb2Jq
ZWN0X3QgcmVFeGVjTWVzc2FnZSA9IHhwY19kaWN0aW9uYXJ5X2NyZWF0ZSgwLCAwLCAwKTsKKyAg
ICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5nKHJlRXhlY01lc3NhZ2UsICJtZXNzYWdlLW5hbWUi
LCAicmUtZXhlYyIpOworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShyZUV4ZWNDb25u
ZWN0aW9uLCByZUV4ZWNNZXNzYWdlKTsKKyAgICB4cGNfcmVsZWFzZShyZUV4ZWNNZXNzYWdlKTsK
K30KKwogc3RhdGljIHZvaWQgY3JlYXRlU2VydmljZShjb25zdCBQcm9jZXNzTGF1bmNoZXI6Okxh
dW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMsIGJvb2wgZm9yRGV2ZWxvcG1lbnQsIFByb2Nlc3NM
YXVuY2hlciogdGhhdCwgRGlkRmluaXNoTGF1bmNoaW5nUHJvY2Vzc0Z1bmN0aW9uIGRpZEZpbmlz
aExhdW5jaGluZ1Byb2Nlc3NGdW5jdGlvbikKIHsKICAgICBpZiAoZm9yRGV2ZWxvcG1lbnQpIHsK
LSAgICAgICAgY29ubmVjdFRvUmVFeGVjU2VydmljZShsYXVuY2hPcHRpb25zLCB0aGF0LCBkaWRG
aW5pc2hMYXVuY2hpbmdQcm9jZXNzRnVuY3Rpb24pOworICAgICAgICBjb25uZWN0VG9SZUV4ZWNT
ZXJ2aWNlRm9yRGV2ZWxvcG1lbnQobGF1bmNoT3B0aW9ucywgdGhhdCwgZGlkRmluaXNoTGF1bmNo
aW5nUHJvY2Vzc0Z1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChs
YXVuY2hPcHRpb25zLmV4ZWN1dGFibGVIZWFwKSB7CisgICAgICAgIGNvbm5lY3RUb1JlRXhlY1Nl
cnZpY2VGb3JFeGVjdXRhYmxlSGVhcChsYXVuY2hPcHRpb25zLCB0aGF0LCBkaWRGaW5pc2hMYXVu
Y2hpbmdQcm9jZXNzRnVuY3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9Q
bHVnaW5Qcm9jZXNzUHJveHlNYWMubW0JKHJldmlzaW9uIDE3OTQ2OCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEzMSwxNCArMTMxLDYgQEAgc3RhdGljIGJvb2wgc2hvdWxkVXNlWFBDKFBy
b2Nlc3NMYXVuY2hlcgogICAgIGlmIChpZCB2YWx1ZSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpAIldlYktpdFVzZVhQQ1NlcnZpY2VGb3JQbHVn
SW5zIl0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKIAotICAgIC8vIEZJWE1F
OiBUaGlzIGNhbiBiZSByZW1vdmVkIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzE2ODU2NDkwPiBpcyBy
ZXNvbHZlZC4KLSAgICBpZiAocGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMubW9kdWxlSW5mby5idW5k
bGVJZGVudGlmaWVyID09ICJjb20uYWRvYmUuYWNyb2JhdC5wZGZ2aWV3ZXJOUEFQSSIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3RpbGwgdXNlIFhQ
QyBmb3IgcGx1Zy1pbnMgdGhhdCB3YW50IHRoZSBoZWFwIHRvIGJlIGV4ZWN1dGFibGUsIHNlZSA8
cmRhcjovL3Byb2JsZW0vMTYwNTk0ODM+LgotICAgIGlmIChsYXVuY2hPcHRpb25zLmV4ZWN1dGFi
bGVIZWFwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTc5NDY4KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDU3LDYgKzEwNTcsNyBAQAog
CQk3NjJCNzQ4RDEyMEJDNzVDMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MkI3NDg0MTIw
QkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc4MDFDMDk5MTQyMjkwQzQwMEZB
RjlBRiAvKiBXZWJIaXRUZXN0UmVzdWx0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc4MDFDMDk1MTQyMjkwQzQwMEZBRjlBRiAvKiBXZWJIaXRUZXN0
UmVzdWx0LmNwcCAqLzsgfTsKIAkJNzgwMUMwOUExNDIyOTBDNDAwRkFGOUFGIC8qIFdlYkhpdFRl
c3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc4MDFDMDk2MTQyMjkwQzQwMEZBRjlBRiAvKiBXZWJIaXRUZXN0UmVzdWx0LmggKi87IH07CisJ
CTdDMEQxMzA3MUE3REIwQTEwMDJFRjhCOSAvKiBYUENTZXJ2aWNlTWFpbi5FeGVjdXRhYmxlSGVh
cC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMEQx
MzA2MUE3REIwQTEwMDJFRjhCOSAvKiBYUENTZXJ2aWNlTWFpbi5FeGVjdXRhYmxlSGVhcC5tbSAq
LzsgfTsKIAkJN0MxMzVBQTgxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVB
QTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwICovOyB9OwogCQk3
QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAw
NTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzEzNUFBQzE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1
Z2luSW5mb3JtYXRpb25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzEzNUFBQTE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2luSW5mb3JtYXRpb25N
YWMubW0gKi87IH07CkBAIC0xOTA1LDYgKzE5MDYsMTMgQEAKIAkJCXJlbW90ZUdsb2JhbElEU3Ry
aW5nID0gOERDMkVGNEYwNDg2QTY5NDAwOThCMjE2OwogCQkJcmVtb3RlSW5mbyA9IFdlYktpdDI7
CiAJCX07CisJCTdDMEQxMkZCMUE3REFFRTEwMDJFRjhCOSAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQ
b3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJ
CQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA4REMyRUY0RjA0ODZB
Njk0MDA5OEIyMTY7CisJCQlyZW1vdGVJbmZvID0gV2ViS2l0OworCQl9OwogCQlCQzc3Rjk1NTE2
RDA0NTkxMDBGOEY3OEEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0g
UEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0
MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtMzIxNSw2ICszMjIzLDkgQEAK
IAkJNzgwMUMwOTYxNDIyOTBDNDAwRkFGOUFGIC8qIFdlYkhpdFRlc3RSZXN1bHQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzBCQjlBODE4RENERTg5MDAwNkMwODYgLyogV2ViQ29udGVu
dC1pT1MuZW50aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54bWw7IHBhdGggPSAiV2ViQ29udGVudC1pT1MuZW50aXRsZW1lbnRz
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQkI5QTkxOERDREY1QTAwMDZDMDg2
IC8qIE5ldHdvcmstaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueG1sOyBwYXRoID0gIk5ldHdvcmstaU9TLmVudGl0
bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMEQxMkY4MUE3REFFQ0Ew
MDJFRjhCOSAvKiBQbHVnaW5TZXJ2aWNlLjMyLkV4ZWN1dGFibGVIZWFwLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IFBsdWdpblNlcnZpY2UuMzIuRXhlY3V0YWJsZUhlYXAueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMEQxMzA0MUE3REFFRTEwMDJFRjhCOSAvKiBjb20u
YXBwbGUuV2ViS2l0LlBsdWdpbi4zMi5FeGVjdXRhYmxlSGVhcC54cGMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHdyYXBwZXIuY2ZidW5kbGU7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGNvbS5hcHBsZS5XZWJLaXQuUGx1Z2luLjMyLkV4ZWN1dGFi
bGVIZWFwLnhwYzsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJN0MwRDEz
MDYxQTdEQjBBMTAwMkVGOEI5IC8qIFhQQ1NlcnZpY2VNYWluLkV4ZWN1dGFibGVIZWFwLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gWFBDU2VydmljZU1haW4uRXhl
Y3V0YWJsZUhlYXAubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTcz
QjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5J
bmZvcm1hdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BsdWdpbklu
Zm9ybWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUFBMTczQjBD
RkYwMDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1hdGlvbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDAxOSw2ICs0MDMwLDEzIEBACiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CisJCTdDMEQxMkZFMUE3REFF
RTEwMDJFRjhCOSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07
CiAJCThEQzJFRjU2MDQ4NkE2OTQwMDk4QjIxNiAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwpAQCAtNDE1Miw2ICs0MTcwLDcgQEAKIAkJCQkxQTYyODBEMDE5MTk5N0JEMDA2QUQ5Rjkg
LyogV2ViS2l0Mi5mcmFtZXdvcmsgKi8sCiAJCQkJMUE1MERCMUUxMTBBM0JEQzAwMEQzRkU1IC8q
IFdlYlByb2Nlc3MuYXBwICovLAogCQkJCUNEQzM4MzA2MTcyMTE3OTkwMDhBMkZDMyAvKiBXZWJQ
cm9jZXNzU2hpbS5keWxpYiAqLywKKwkJCQk3QzBEMTMwNDFBN0RBRUUxMDAyRUY4QjkgLyogY29t
LmFwcGxlLldlYktpdC5QbHVnaW4uMzIuRXhlY3V0YWJsZUhlYXAueHBjICovLAogCQkJKTsKIAkJ
CW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC00NDA2LDEw
ICs0NDI1LDExIEBACiAJCQkJQkM4MjgzQUIxNkI0QkVBRDAwQTI3OEZFIC8qIE5ldHdvcmtTZXJ2
aWNlLnhjY29uZmlnICovLAogCQkJCUJDMTIyRkEzMTMyNzA3RjMwMEY3RUFDMSAvKiBQbHVnaW5Q
cm9jZXNzLnhjY29uZmlnICovLAogCQkJCUExRUREMkRCMTg4NEI5NjQwMEJCRkU5OCAvKiBQbHVn
aW5Qcm9jZXNzU2hpbS54Y2NvbmZpZyAqLywKLQkJCQlCQzgyODNGMjE2QjRGQzUzMDBBMjc4RkUg
LyogUGx1Z2luU2VydmljZS4zMi54Y2NvbmZpZyAqLywKIAkJCQlFMUIxQjE5QTFBN0FDMjg3MDA3
QjA5NjUgLyogUGx1Z2luU2VydmljZS4zMi5EZXZlbG9wbWVudC54Y2NvbmZpZyAqLywKLQkJCQlC
QzgyODNGNDE2QjRGQzUzMDBBMjc4RkUgLyogUGx1Z2luU2VydmljZS42NC54Y2NvbmZpZyAqLywK
KwkJCQk3QzBEMTJGODFBN0RBRUNBMDAyRUY4QjkgLyogUGx1Z2luU2VydmljZS4zMi5FeGVjdXRh
YmxlSGVhcC54Y2NvbmZpZyAqLywKKwkJCQlCQzgyODNGMjE2QjRGQzUzMDBBMjc4RkUgLyogUGx1
Z2luU2VydmljZS4zMi54Y2NvbmZpZyAqLywKIAkJCQlCQ0JFQ0RDMjE2QjVDRTJBMDAwNDdBMUEg
LyogUGx1Z2luU2VydmljZS42NC5EZXZlbG9wbWVudC54Y2NvbmZpZyAqLywKKwkJCQlCQzgyODNG
NDE2QjRGQzUzMDBBMjc4RkUgLyogUGx1Z2luU2VydmljZS42NC54Y2NvbmZpZyAqLywKIAkJCQk1
RDQ0MkE1NTE2RDU4NTY3MDBBQzMzMzEgLyogUGx1Z2luU2VydmljZS5lbnRpdGxlbWVudHMgKi8s
CiAJCQkJQTFFREQyREMxODg0QjlCNTAwQkJGRTk4IC8qIFNlY0l0ZW1TaGltLnhjY29uZmlnICov
LAogCQkJCTUxODNCMzkzMTM3OUY4NUMwMEU4NzU0RSAvKiBTaGltLnhjY29uZmlnICovLApAQCAt
NjY0Nyw2ICs2NjY3LDcgQEAKIAkJCQlCQ0JFQ0RFNjE2QjY0MTY3MDAwNDdBMUEgLyogWFBDU2Vy
dmljZUVudHJ5UG9pbnQuaCAqLywKIAkJCQlCQ0JFQ0RFNTE2QjY0MTY3MDAwNDdBMUEgLyogWFBD
U2VydmljZUVudHJ5UG9pbnQubW0gKi8sCiAJCQkJQkM4MjgzOTcxNkI0ODBGNjAwQTI3OEZFIC8q
IFhQQ1NlcnZpY2VNYWluLkRldmVsb3BtZW50Lm1tICovLAorCQkJCTdDMEQxMzA2MUE3REIwQTEw
MDJFRjhCOSAvKiBYUENTZXJ2aWNlTWFpbi5FeGVjdXRhYmxlSGVhcC5tbSAqLywKIAkJCQlCQzgy
ODM5NjE2QjQ3RUM0MDBBMjc4RkUgLyogWFBDU2VydmljZU1haW4ubW0gKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IFhQQ1NlcnZpY2U7CkBAIC04NDA0LDYgKzg0MjUsMjQgQEAKIAkJCXByb2R1Y3RSZWZl
cmVuY2UgPSA1MUZBMUUyODE4MENDQURFMDBDNDRCRTkgLyogRGF0YWJhc2VQcm9jZXNzLmFwcCAq
LzsKIAkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuYXBwbGljYXRpb24i
OwogCQl9OworCQk3QzBEMTJGOTFBN0RBRUUxMDAyRUY4QjkgLyogUGx1Z2luLjMyLkV4ZWN1dGFi
bGVIZWFwICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1
cmF0aW9uTGlzdCA9IDdDMEQxMzAwMUE3REFFRTEwMDJFRjhCOSAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiUGx1Z2luLjMyLkV4ZWN1dGFibGVIZWFwIiAq
LzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTdDMEQxMkZDMUE3REFFRTEwMDJFRjhCOSAvKiBT
b3VyY2VzICovLAorCQkJCTdDMEQxMkZFMUE3REFFRTEwMDJFRjhCOSAvKiBGcmFtZXdvcmtzICov
LAorCQkJCTdDMEQxMkZGMUE3REFFRTEwMDJFRjhCOSAvKiBSZXNvdXJjZXMgKi8sCisJCQkpOwor
CQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJN0MwRDEy
RkExQTdEQUVFMTAwMkVGOEI5IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJ
bmFtZSA9IFBsdWdpbi4zMi5FeGVjdXRhYmxlSGVhcDsKKwkJCXByb2R1Y3ROYW1lID0gUGx1Z2lu
LjMyOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDdDMEQxMzA0MUE3REFFRTEwMDJFRjhCOSAvKiBj
b20uYXBwbGUuV2ViS2l0LlBsdWdpbi4zMi5FeGVjdXRhYmxlSGVhcC54cGMgKi87CisJCQlwcm9k
dWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmJ1bmRsZSI7CisJCX07CiAJCThEQzJF
RjRGMDQ4NkE2OTQwMDk4QjIxNiAvKiBXZWJLaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVU
YXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMURFQjkxQUQwODczM0RBNTAwMTBF
OUNEIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJXZWJL
aXQiICovOwpAQCAtODY2MSw2ICs4NzAwLDcgQEAKIAkJCQlCQzgyODNCMDE2QjRCRjc3MDBBMjc4
RkUgLyogTmV0d29ya2luZyAqLywKIAkJCQlCQzgyODNDNDE2QjRCRkE4MDBBMjc4RkUgLyogTmV0
d29ya2luZy5EZXZlbG9wbWVudCAqLywKIAkJCQlCQzgyODNGODE2QjRGRERFMDBBMjc4RkUgLyog
UGx1Z2luLjMyICovLAorCQkJCTdDMEQxMkY5MUE3REFFRTEwMDJFRjhCOSAvKiBQbHVnaW4uMzIu
RXhlY3V0YWJsZUhlYXAgKi8sCiAJCQkJQkM4Mjg0MUUxNkI0RkRGNjAwQTI3OEZFIC8qIFBsdWdp
bi42NCAqLywKIAkJCQlCQzgyODQzMTE2QjRGRTEzMDBBMjc4RkUgLyogUGx1Z2luLjMyLkRldmVs
b3BtZW50ICovLAogCQkJCUUxQjFCMThDMUE3QUMxRjUwMDdCMDk2NSAvKiBQbHVnaW4uNjQuRGV2
ZWxvcG1lbnQgKi8sCkBAIC04NzEyLDYgKzg3NTIsMTMgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKKwkJN0MwRDEyRkYxQTdEQUVFMTAw
MkVGOEI5IC8qIFJlc291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCThE
QzJFRjUyMDQ4NkE2OTQwMDk4QjIxNiAvKiBSZXNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhS
ZXNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAg
LTkxNjQsNiArOTIxMSwxNCBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OworCQk3QzBEMTJGQzFBN0RBRUUxMDAyRUY4QjkgLyogU291cmNl
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTdDMEQxMzA3MUE3REIwQTEwMDJF
RjhCOSAvKiBYUENTZXJ2aWNlTWFpbi5FeGVjdXRhYmxlSGVhcC5tbSBpbiBTb3VyY2VzICovLAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9Owog
CQk4REMyRUY1NDA0ODZBNjk0MDA5OEIyMTYgLyogU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBC
WFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAg
LTEwMTE1LDYgKzEwMTcwLDExIEBACiAJCQl0YXJnZXQgPSA4REMyRUY0RjA0ODZBNjk0MDA5OEIy
MTYgLyogV2ViS2l0ICovOwogCQkJdGFyZ2V0UHJveHkgPSA1MUZBMUUxQjE4MENDQURFMDBDNDRC
RTkgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwogCQl9OworCQk3QzBEMTJGQTFBN0RBRUUx
MDAyRUY4QjkgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA4REMyRUY0RjA0ODZBNjk0MDA5OEIyMTYgLyogV2Vi
S2l0ICovOworCQkJdGFyZ2V0UHJveHkgPSA3QzBEMTJGQjFBN0RBRUUxMDAyRUY4QjkgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQlCQzc3Rjk1NjE2RDA0NTkxMDBGOEY3OEEg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CiAJCQl0YXJnZXQgPSBCQzgyODNGODE2QjRGRERFMDBBMjc4RkUgLyogUGx1Z2luLjMyICov
OwpAQCAtMTA0NjUsNiArMTA1MjUsMjcgQEAKIAkJCX07CiAJCQluYW1lID0gUHJvZHVjdGlvbjsK
IAkJfTsKKwkJN0MwRDEzMDExQTdEQUVFMTAwMkVGOEI5IC8qIERlYnVnICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9
IDdDMEQxMkY4MUE3REFFQ0EwMDJFRjhCOSAvKiBQbHVnaW5TZXJ2aWNlLjMyLkV4ZWN1dGFibGVI
ZWFwLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0g
RGVidWc7CisJCX07CisJCTdDMEQxMzAyMUE3REFFRTEwMDJFRjhCOSAvKiBSZWxlYXNlICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDdDMEQxMkY4MUE3REFFQ0EwMDJFRjhCOSAvKiBQbHVnaW5TZXJ2aWNlLjMyLkV4
ZWN1dGFibGVIZWFwLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJ
CQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJN0MwRDEzMDMxQTdEQUVFMTAwMkVGOEI5IC8qIFBy
b2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VD
b25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0MwRDEyRjgxQTdEQUVDQTAwMkVGOEI5IC8qIFBsdWdp
blNlcnZpY2UuMzIuRXhlY3V0YWJsZUhlYXAueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQlBN0FBREExMTE5Mzk1
Q0E5MDAzRUExQzcgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC0xMDg2Miw2ICsxMDk0MywxNiBAQAogCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25O
YW1lID0gUHJvZHVjdGlvbjsKIAkJfTsKKwkJN0MwRDEzMDAxQTdEQUVFMTAwMkVGOEI5IC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJQbHVnaW4uMzIuRXhl
Y3V0YWJsZUhlYXAiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1
aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJN0MwRDEzMDExQTdEQUVFMTAwMkVGOEI5IC8qIERl
YnVnICovLAorCQkJCTdDMEQxMzAyMUE3REFFRTEwMDJFRjhCOSAvKiBSZWxlYXNlICovLAorCQkJ
CTdDMEQxMzAzMUE3REFFRTEwMDJFRjhCOSAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRl
ZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
TmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCUE3QUFEQTE0MTkzOTVDQTkwMDNFQTFDNyAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiV2ViS2l0MlNh
bmRib3hQcm9maWxlcyIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJ
YnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
</data>

          </attachment>
      

    </bug>

</bugzilla>