<?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>167565</bug_id>
          
          <creation_ts>2017-01-29 14:22:17 -0800</creation_ts>
          <short_desc>[iOS] Expose WebCore::DataDetection::detectContentInRange WKWebProcessPlugInRangeHandle</short_desc>
          <delta_ts>2017-01-29 16:29:14 -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>WebKit API</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1271142</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-01-29 14:22:17 -0800</bug_when>
    <thetext>A bundle API client requires the ability to “linkify” a range. Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271149</commentid>
    <comment_count>1</comment_count>
      <attachid>300075</attachid>
    <who name="">mitz</who>
    <bug_when>2017-01-29 15:40:18 -0800</bug_when>
    <thetext>Created attachment 300075
Add -[WKWebProcessPlugInRangeHandle detectDataWithTypes:context:]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271150</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-29 15:43:22 -0800</bug_when>
    <thetext>Attachment 300075 did not pass style-queue:


ERROR: Source/WebKit2/Shared/API/Cocoa/WKDataDetectorTypes.h:46:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271151</commentid>
    <comment_count>3</comment_count>
      <attachid>300075</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-01-29 16:01:15 -0800</bug_when>
    <thetext>Comment on attachment 300075
Add -[WKWebProcessPlugInRangeHandle detectDataWithTypes:context:]

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.h:46
&gt; +#if TARGET_OS_IPHONE
&gt; +- (NSArray *)detectDataWithTypes:(WKDataDetectorTypes)types context:(NSDictionary *)context WK_API_AVAILABLE(ios(WK_IOS_TBA));
&gt; +#endif

Given that the underlying DataDetection::detectContentInRange() is cross platform, can we make this cross-platform as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271153</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-01-29 16:09:08 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 300075 [details]
&gt; Add -[WKWebProcessPlugInRangeHandle detectDataWithTypes:context:]
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=300075&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.h:46
&gt; &gt; +#if TARGET_OS_IPHONE
&gt; &gt; +- (NSArray *)detectDataWithTypes:(WKDataDetectorTypes)types context:(NSDictionary *)context WK_API_AVAILABLE(ios(WK_IOS_TBA));
&gt; &gt; +#endif
&gt; 
&gt; Given that the underlying DataDetection::detectContentInRange() is cross
&gt; platform, can we make this cross-platform as well?

Thanks for the review, Sam! On macOS, DataDetection::detectContentInRange() has a degenerate implementation that returns nil. I am afraid that it would just be misleading to expose it via the WebKit API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271155</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-01-29 16:28:10 -0800</bug_when>
    <thetext>Committed &lt;https://trac.webkit.org/r211354&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271156</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-01-29 16:29:14 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Comment on attachment 300075 [details]
&gt; &gt; Add -[WKWebProcessPlugInRangeHandle detectDataWithTypes:context:]
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=300075&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInRangeHandle.h:46
&gt; &gt; &gt; +#if TARGET_OS_IPHONE
&gt; &gt; &gt; +- (NSArray *)detectDataWithTypes:(WKDataDetectorTypes)types context:(NSDictionary *)context WK_API_AVAILABLE(ios(WK_IOS_TBA));
&gt; &gt; &gt; +#endif
&gt; &gt; 
&gt; &gt; Given that the underlying DataDetection::detectContentInRange() is cross
&gt; &gt; platform, can we make this cross-platform as well?
&gt; 
&gt; Thanks for the review, Sam! On macOS, DataDetection::detectContentInRange()
&gt; has a degenerate implementation that returns nil. I am afraid that it would
&gt; just be misleading to expose it via the WebKit API.

Indeed!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300075</attachid>
            <date>2017-01-29 15:40:18 -0800</date>
            <delta_ts>2017-01-29 16:01:15 -0800</delta_ts>
            <desc>Add -[WKWebProcessPlugInRangeHandle detectDataWithTypes:context:]</desc>
            <filename>bug-167565-20170129153810.patch</filename>
            <type>text/plain</type>
            <size>37988</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMTMzNykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE3LTAxLTI5ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gRXhwb3NlIFdlYkNvcmU6
OkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlIFdLV2ViUHJvY2Vzc1BsdWdJblJh
bmdlSGFuZGxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjc1NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUZXN0OiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9CdW5kbGVSYW5nZUhhbmRs
ZS5tbQorCisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9XS0RhdGFEZXRlY3RvclR5cGVzLmg6
IEFkZGVkLiBNb3ZlZCB0aGUgZW51bSBkZWZpbml0aW9uIGZyb20KKyAgICAgICAgICBXS1dlYlZp
ZXdDb25maWd1cmF0aW9uLmggdG8gaGVyZS4KKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dL
RGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKGZyb21XS0RhdGFE
ZXRlY3RvclR5cGVzKTogTW92ZWQgZnJvbSBXS1dlYlZpZXcubW0uCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKGZyb21XS0RhdGFEZXRlY3Rv
clR5cGVzKTogTW92ZWQgdG8gV0tEYXRhRGV0ZWN0b3JUeXBlc0ludGVybmFsLmguCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaDogTW92ZWQg
V0tEYXRhRGV0ZWN0b3JUeXBlcyBkZWZpbml0aW9uIG91dAorICAgICAgICAgIHRvIFdLRGF0YURl
dGVjdG9yVHlwZXMuaC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajogQWRkZWQgcmVmZXJlbmNlcyB0byBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5SYW5nZUhhbmRs
ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2Vi
UHJvY2Vzc1BsdWdJblJhbmdlSGFuZGxlLm1tOgorICAgICAgICAoLVtXS1dlYlByb2Nlc3NQbHVn
SW5SYW5nZUhhbmRsZSBkZXRlY3REYXRhV2l0aFR5cGVzOmNvbnRleHQ6XSk6IEFkZGVkLiBDYWxs
cworICAgICAgICAgIERhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlLgorCiAyMDE3
LTAxLTI4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIFVzZXIgVGltaW5nIEV4cGVyaW1lbnRhbCBGZWF0dXJlCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0NvY29hL1dLRGF0YURldGVjdG9yVHlwZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLRGF0YURldGVjdG9yVHlwZXMuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLRGF0YURldGVj
dG9yVHlwZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKwor
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCisKKyNpZiBUQVJHRVRfT1NfSVBIT05FCisKKy8qISBAZW51bSBXS0RhdGFEZXRlY3RvclR5
cGVzCisgQGFic3RyYWN0IFRoZSB0eXBlIG9mIGRhdGEgZGV0ZWN0ZWQuCisgQGNvbnN0YW50IFdL
RGF0YURldGVjdG9yVHlwZU5vbmUgTm8gZGV0ZWN0aW9uIGlzIHBlcmZvcm1lZC4KKyBAY29uc3Rh
bnQgV0tEYXRhRGV0ZWN0b3JUeXBlUGhvbmVOdW1iZXIgUGhvbmUgbnVtYmVycyBhcmUgZGV0ZWN0
ZWQgYW5kIHR1cm5lZCBpbnRvIGxpbmtzLgorIEBjb25zdGFudCBXS0RhdGFEZXRlY3RvclR5cGVM
aW5rIFVSTHMgaW4gdGV4dCBhcmUgZGV0ZWN0ZWQgYW5kIHR1cm5lZCBpbnRvIGxpbmtzLgorIEBj
b25zdGFudCBXS0RhdGFEZXRlY3RvclR5cGVBZGRyZXNzIEFkZHJlc3NlcyBhcmUgZGV0ZWN0ZWQg
YW5kIHR1cm5lZCBpbnRvIGxpbmtzLgorIEBjb25zdGFudCBXS0RhdGFEZXRlY3RvclR5cGVDYWxl
bmRhckV2ZW50IERhdGVzIGFuZCB0aW1lcyB0aGF0IGFyZSBpbiB0aGUgZnV0dXJlIGFyZSBkZXRl
Y3RlZCBhbmQgdHVybmVkIGludG8gbGlua3MuCisgQGNvbnN0YW50IFdLRGF0YURldGVjdG9yVHlw
ZUFsbCBBbGwgb2YgdGhlIGFib3ZlIGRhdGEgdHlwZXMgYXJlIHR1cm5lZCBpbnRvIGxpbmtzIHdo
ZW4gZGV0ZWN0ZWQuIENob29zaW5nIHRoaXMgdmFsdWUgd2lsbAorIGF1dG9tYXRpY2FsbHkgaW5j
bHVkZSBhbnkgbmV3IGRldGVjdGlvbiB0eXBlIHRoYXQgaXMgYWRkZWQuCisgKi8KK3R5cGVkZWYg
TlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBXS0RhdGFEZXRlY3RvclR5cGVzKSB7CisgICAgV0tEYXRh
RGV0ZWN0b3JUeXBlTm9uZSA9IDAsCisgICAgV0tEYXRhRGV0ZWN0b3JUeXBlUGhvbmVOdW1iZXIg
PSAxIDw8IDAsCisgICAgV0tEYXRhRGV0ZWN0b3JUeXBlTGluayA9IDEgPDwgMSwKKyAgICBXS0Rh
dGFEZXRlY3RvclR5cGVBZGRyZXNzID0gMSA8PCAyLAorICAgIFdLRGF0YURldGVjdG9yVHlwZUNh
bGVuZGFyRXZlbnQgPSAxIDw8IDMsCisgICAgV0tEYXRhRGV0ZWN0b3JUeXBlVHJhY2tpbmdOdW1i
ZXIgPSAxIDw8IDQsCisgICAgV0tEYXRhRGV0ZWN0b3JUeXBlRmxpZ2h0TnVtYmVyID0gMSA8PCA1
LAorICAgIFdLRGF0YURldGVjdG9yVHlwZUxvb2t1cFN1Z2dlc3Rpb24gPSAxIDw8IDYsCisgICAg
V0tEYXRhRGV0ZWN0b3JUeXBlQWxsID0gTlNVSW50ZWdlck1heCwKKworICAgIFdLRGF0YURldGVj
dG9yVHlwZVNwb3RsaWdodFN1Z2dlc3Rpb24gV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNF
TUVOVCgiV0tEYXRhRGV0ZWN0b3JUeXBlTG9va3VwU3VnZ2VzdGlvbiIsIGlvcygxMC4wLCAxMC4w
KSkgPSBXS0RhdGFEZXRlY3RvclR5cGVMb29rdXBTdWdnZXN0aW9uLAorfSBXS19BUElfQVZBSUxB
QkxFKGlvcygxMC4wKSk7CisKKyNlbmRpZgorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1dLRGF0YURldGVjdG9y
VHlwZXNJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Q29jb2EvV0tEYXRhRGV0ZWN0b3JUeXBlc0ludGVybmFsLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9XS0RhdGFEZXRlY3RvclR5cGVzSW50ZXJuYWwu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
V0tEYXRhRGV0ZWN0b3JUeXBlcy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lmIFBMQVRG
T1JNKElPUykKKworI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9uLmg+CisKK3N0YXRpYyBp
bmxpbmUgV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXMgZnJvbVdLRGF0YURldGVjdG9yVHlwZXMo
dWludDY0X3QgdHlwZXMpCit7CisgICAgaWYgKHN0YXRpY19jYXN0PFdLRGF0YURldGVjdG9yVHlw
ZXM+KHR5cGVzKSA9PSBXS0RhdGFEZXRlY3RvclR5cGVOb25lKQorICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6RGF0YURldGVjdG9yVHlwZU5vbmU7CisgICAgaWYgKHN0YXRpY19jYXN0PFdLRGF0YURl
dGVjdG9yVHlwZXM+KHR5cGVzKSA9PSBXS0RhdGFEZXRlY3RvclR5cGVBbGwpCisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpEYXRhRGV0ZWN0b3JUeXBlQWxsOworCisgICAgdWludDMyX3QgdmFsdWUg
PSBXZWJDb3JlOjpEYXRhRGV0ZWN0b3JUeXBlTm9uZTsKKyAgICBpZiAodHlwZXMgJiBXS0RhdGFE
ZXRlY3RvclR5cGVQaG9uZU51bWJlcikKKyAgICAgICAgdmFsdWUgfD0gV2ViQ29yZTo6RGF0YURl
dGVjdG9yVHlwZVBob25lTnVtYmVyOworICAgIGlmICh0eXBlcyAmIFdLRGF0YURldGVjdG9yVHlw
ZUxpbmspCisgICAgICAgIHZhbHVlIHw9IFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVMaW5rOwor
ICAgIGlmICh0eXBlcyAmIFdLRGF0YURldGVjdG9yVHlwZUFkZHJlc3MpCisgICAgICAgIHZhbHVl
IHw9IFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVBZGRyZXNzOworICAgIGlmICh0eXBlcyAmIFdL
RGF0YURldGVjdG9yVHlwZUNhbGVuZGFyRXZlbnQpCisgICAgICAgIHZhbHVlIHw9IFdlYkNvcmU6
OkRhdGFEZXRlY3RvclR5cGVDYWxlbmRhckV2ZW50OworICAgIGlmICh0eXBlcyAmIFdLRGF0YURl
dGVjdG9yVHlwZVRyYWNraW5nTnVtYmVyKQorICAgICAgICB2YWx1ZSB8PSBXZWJDb3JlOjpEYXRh
RGV0ZWN0b3JUeXBlVHJhY2tpbmdOdW1iZXI7CisgICAgaWYgKHR5cGVzICYgV0tEYXRhRGV0ZWN0
b3JUeXBlRmxpZ2h0TnVtYmVyKQorICAgICAgICB2YWx1ZSB8PSBXZWJDb3JlOjpEYXRhRGV0ZWN0
b3JUeXBlRmxpZ2h0TnVtYmVyOworICAgIGlmICh0eXBlcyAmIFdLRGF0YURldGVjdG9yVHlwZUxv
b2t1cFN1Z2dlc3Rpb24pCisgICAgICAgIHZhbHVlIHw9IFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5
cGVMb29rdXBTdWdnZXN0aW9uOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRh
dGFEZXRlY3RvclR5cGVzPih2YWx1ZSk7Cit9CisKKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZp
c2lvbiAyMTEzMzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogI2ltcG9ydCAiV0tCYWNr
Rm9yd2FyZExpc3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50
ZXJuYWwuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIldLRGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tFcnJvcklu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQg
IldLTGF5b3V0TW9kZS5oIgpAQCAtMzUyLDM0ICszNTMsNiBAQCBzdGF0aWMgYm9vbCBzaG91bGRS
ZXF1aXJlVXNlckdlc3R1cmVUb0xvCiAjZW5kaWYKIH0KIAotI2lmIEVOQUJMRShEQVRBX0RFVEVD
VElPTikgJiYgUExBVEZPUk0oSU9TKQotc3RhdGljIFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVz
IGZyb21XS0RhdGFEZXRlY3RvclR5cGVzKHVpbnQ2NF90IHR5cGVzKQotewotICAgIGlmIChzdGF0
aWNfY2FzdDxXS0RhdGFEZXRlY3RvclR5cGVzPih0eXBlcykgPT0gV0tEYXRhRGV0ZWN0b3JUeXBl
Tm9uZSkKLSAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVOb25lOwotICAg
IGlmIChzdGF0aWNfY2FzdDxXS0RhdGFEZXRlY3RvclR5cGVzPih0eXBlcykgPT0gV0tEYXRhRGV0
ZWN0b3JUeXBlQWxsKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZUFs
bDsKLSAgICAKLSAgICB1aW50MzJfdCB2YWx1ZSA9IFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVO
b25lOwotICAgIGlmICh0eXBlcyAmIFdLRGF0YURldGVjdG9yVHlwZVBob25lTnVtYmVyKQotICAg
ICAgICB2YWx1ZSB8PSBXZWJDb3JlOjpEYXRhRGV0ZWN0b3JUeXBlUGhvbmVOdW1iZXI7Ci0gICAg
aWYgKHR5cGVzICYgV0tEYXRhRGV0ZWN0b3JUeXBlTGluaykKLSAgICAgICAgdmFsdWUgfD0gV2Vi
Q29yZTo6RGF0YURldGVjdG9yVHlwZUxpbms7Ci0gICAgaWYgKHR5cGVzICYgV0tEYXRhRGV0ZWN0
b3JUeXBlQWRkcmVzcykKLSAgICAgICAgdmFsdWUgfD0gV2ViQ29yZTo6RGF0YURldGVjdG9yVHlw
ZUFkZHJlc3M7Ci0gICAgaWYgKHR5cGVzICYgV0tEYXRhRGV0ZWN0b3JUeXBlQ2FsZW5kYXJFdmVu
dCkKLSAgICAgICAgdmFsdWUgfD0gV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZUNhbGVuZGFyRXZl
bnQ7Ci0gICAgaWYgKHR5cGVzICYgV0tEYXRhRGV0ZWN0b3JUeXBlVHJhY2tpbmdOdW1iZXIpCi0g
ICAgICAgIHZhbHVlIHw9IFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVUcmFja2luZ051bWJlcjsK
LSAgICBpZiAodHlwZXMgJiBXS0RhdGFEZXRlY3RvclR5cGVGbGlnaHROdW1iZXIpCi0gICAgICAg
IHZhbHVlIHw9IFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVGbGlnaHROdW1iZXI7Ci0gICAgaWYg
KHR5cGVzICYgV0tEYXRhRGV0ZWN0b3JUeXBlTG9va3VwU3VnZ2VzdGlvbikKLSAgICAgICAgdmFs
dWUgfD0gV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZUxvb2t1cFN1Z2dlc3Rpb247Ci0KLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXM+KHZhbHVlKTsKLX0K
LSNlbmRpZgotCiAjaWYgUExBVEZPUk0oTUFDKQogc3RhdGljIHVpbnQzMl90IGNvbnZlcnRVc2Vy
SW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5KFdLVXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeSBw
b2xpY3kpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjExMzM3KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBXS19BUElfRU5BQkxF
RAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9X
S0RhdGFEZXRlY3RvclR5cGVzLmg+CiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKQEAgLTUx
LDMwICs1Miw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLU2VsZWN0aW9uR3IKICAg
ICBXS1NlbGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVyLAogfSBXS19BUElfQVZBSUxBQkxFKGlv
cyg4LjApKTsKIAotLyohIEBlbnVtIFdLRGF0YURldGVjdG9yVHlwZXMKLSBAYWJzdHJhY3QgVGhl
IHR5cGUgb2YgZGF0YSBkZXRlY3RlZC4KLSBAY29uc3RhbnQgV0tEYXRhRGV0ZWN0b3JUeXBlTm9u
ZSBObyBkZXRlY3Rpb24gaXMgcGVyZm9ybWVkLgotIEBjb25zdGFudCBXS0RhdGFEZXRlY3RvclR5
cGVQaG9uZU51bWJlciBQaG9uZSBudW1iZXJzIGFyZSBkZXRlY3RlZCBhbmQgdHVybmVkIGludG8g
bGlua3MuCi0gQGNvbnN0YW50IFdLRGF0YURldGVjdG9yVHlwZUxpbmsgVVJMcyBpbiB0ZXh0IGFy
ZSBkZXRlY3RlZCBhbmQgdHVybmVkIGludG8gbGlua3MuCi0gQGNvbnN0YW50IFdLRGF0YURldGVj
dG9yVHlwZUFkZHJlc3MgQWRkcmVzc2VzIGFyZSBkZXRlY3RlZCBhbmQgdHVybmVkIGludG8gbGlu
a3MuCi0gQGNvbnN0YW50IFdLRGF0YURldGVjdG9yVHlwZUNhbGVuZGFyRXZlbnQgRGF0ZXMgYW5k
IHRpbWVzIHRoYXQgYXJlIGluIHRoZSBmdXR1cmUgYXJlIGRldGVjdGVkIGFuZCB0dXJuZWQgaW50
byBsaW5rcy4KLSBAY29uc3RhbnQgV0tEYXRhRGV0ZWN0b3JUeXBlQWxsIEFsbCBvZiB0aGUgYWJv
dmUgZGF0YSB0eXBlcyBhcmUgdHVybmVkIGludG8gbGlua3Mgd2hlbiBkZXRlY3RlZC4gQ2hvb3Np
bmcgdGhpcyB2YWx1ZSB3aWxsCi0gYXV0b21hdGljYWxseSBpbmNsdWRlIGFueSBuZXcgZGV0ZWN0
aW9uIHR5cGUgdGhhdCBpcyBhZGRlZC4KLSAqLwotdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIFdLRGF0YURldGVjdG9yVHlwZXMpIHsKLSAgICBXS0RhdGFEZXRlY3RvclR5cGVOb25lID0g
MCwKLSAgICBXS0RhdGFEZXRlY3RvclR5cGVQaG9uZU51bWJlciA9IDEgPDwgMCwKLSAgICBXS0Rh
dGFEZXRlY3RvclR5cGVMaW5rID0gMSA8PCAxLAotICAgIFdLRGF0YURldGVjdG9yVHlwZUFkZHJl
c3MgPSAxIDw8IDIsCi0gICAgV0tEYXRhRGV0ZWN0b3JUeXBlQ2FsZW5kYXJFdmVudCA9IDEgPDwg
MywKLSAgICBXS0RhdGFEZXRlY3RvclR5cGVUcmFja2luZ051bWJlciA9IDEgPDwgNCwKLSAgICBX
S0RhdGFEZXRlY3RvclR5cGVGbGlnaHROdW1iZXIgPSAxIDw8IDUsCi0gICAgV0tEYXRhRGV0ZWN0
b3JUeXBlTG9va3VwU3VnZ2VzdGlvbiA9IDEgPDwgNiwKLSAgICBXS0RhdGFEZXRlY3RvclR5cGVB
bGwgPSBOU1VJbnRlZ2VyTWF4LAotCi0gICAgV0tEYXRhRGV0ZWN0b3JUeXBlU3BvdGxpZ2h0U3Vn
Z2VzdGlvbiBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS0RhdGFEZXRlY3Rv
clR5cGVMb29rdXBTdWdnZXN0aW9uIiwgaW9zKDEwLjAsIDEwLjApKSA9IFdLRGF0YURldGVjdG9y
VHlwZUxvb2t1cFN1Z2dlc3Rpb24sCi19IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDEwLjApKTsKLQog
I2Vsc2UKIAogLyohIEBlbnVtIFdLVXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjExMzM3KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04NDAsNiArODQwLDggQEAKIAkJMzdBNUUw
MTQxOEJCRjkzRjAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0E1RTAxMjE4QkJGOTM3MDAw
QTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0E2NEU1NTE4RjM4RTNDMDBFQjMwRjEgLyog
X1dLSW5wdXREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzdBNjRFNTQxOEYzOEUzQzAwRUIzMEYxIC8qIF9XS0lucHV0RGVsZWdhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkzN0E2NEU1
NzE4RjM4RjQ2MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdBNjRFNTYxOEYzOEY0NjAwRUIzMEYx
IC8qIF9XS0Zvcm1JbnB1dFNlc3Npb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkzN0E3MDlBNzFFM0VBMEZEMDBDQTU5NjkgLyogV0tEYXRhRGV0
ZWN0b3JUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzdBNzA5QTYxRTNFQTBGRDAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTM3QTcwOUE5MUUz
RUE0MEMwMENBNTk2OSAvKiBXS0RhdGFEZXRlY3RvclR5cGVzSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QTcwOUE4MUUzRUE0MEMwMENB
NTk2OSAvKiBXS0RhdGFEZXRlY3RvclR5cGVzSW50ZXJuYWwuaCAqLzsgfTsKIAkJMzdCMEQxODQx
QzFFNDk5QTAwRDQwRDY0IC8qIFBsdWdpblByb2Nlc3NTaGltLmR5bGliIGluIENvcHkgU2hpbXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFDMjVGQjAxMkE0OEVBNzAwQkQy
NjcxIC8qIFBsdWdpblByb2Nlc3NTaGltLmR5bGliICovOyB9OwogCQkzN0IwRDE4NTFDMUU0OTlB
MDBENDBENjQgLyogU2VjSXRlbVNoaW0uZHlsaWIgaW4gQ29weSBTaGltcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAwMzFGNjEzNzlDQUNCMDBDOERGRTQgLyogU2VjSXRl
bVNoaW0uZHlsaWIgKi87IH07CiAJCTM3QjBEMTg2MUMxRTQ5OUEwMEQ0MEQ2NCAvKiBXZWJQcm9j
ZXNzU2hpbS5keWxpYiBpbiBDb3B5IFNoaW1zICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENEQzM4MzA2MTcyMTE3OTkwMDhBMkZDMyAvKiBXZWJQcm9jZXNzU2hpbS5keWxpYiAq
LzsgfTsKQEAgLTI5NTAsNiArMjk1Miw4IEBACiAJCTM3QTVFMDEyMThCQkY5MzcwMDBBMDgxRSAv
KiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzN0E2NEU1NDE4RjM4RTNDMDBFQjMwRjEgLyogX1dLSW5wdXREZWxlZ2F0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnB1dERlbGVnYXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QTY0RTU2MThGMzhGNDYwMEVCMzBGMSAvKiBfV0tGb3Jt
SW5wdXRTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Zvcm1J
bnB1dFNlc3Npb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdBNzA5QTYxRTNF
QTBGRDAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tEYXRhRGV0ZWN0b3JUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzN0E3MDlBODFFM0VBNDBDMDBDQTU5NjkgLyogV0tEYXRhRGV0ZWN0b3JUeXBl
c0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRGF0YURldGVj
dG9yVHlwZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0I0MThF
QjFDOTYyNEYyMDAzMUU2M0IgLyogV2ViQ29udGVudC1PU1guZW50aXRsZW1lbnRzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9ICJXZWJDb250ZW50LU9TWC5lbnRpdGxlbWVudHMiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzN0I0N0UyQzFENjREQjc2MDA1RjRFRkYgLyogb2JqY1NQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBvYmpjU1BJLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTM3QjUwNDUxMTlFRUYzMTMwMENFMkNGOCAvKiBXS0Vycm9yUHJp
dmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Vycm9yUHJpdmF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTUxMyw2ICs1NTE3LDggQEAKIAkJCQkx
QUUwMEQ0QTE4MkQ2RUIwMDAwODdERDcgLyogV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0gKi8s
CiAJCQkJMUFFMDBENEUxODJENkY1MDAwMDg3REQ3IC8qIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxl
SW50ZXJuYWwuaCAqLywKIAkJCQkzNzNEMTIyNDE4QTQ3M0IzMDA2NkQ5Q0MgLyogV0tCcm93c2lu
Z0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oICovLAorCQkJCTM3QTcwOUE2MUUzRUEwRkQwMENBNTk2
OSAvKiBXS0RhdGFEZXRlY3RvclR5cGVzLmggKi8sCisJCQkJMzdBNzA5QTgxRTNFQTQwQzAwQ0E1
OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oICovLAogCQkJCTM3REZBNkZGMTgx
MEJCOTIwMDFGNEE5RiAvKiBXS0ZvdW5kYXRpb24uaCAqLywKIAkJCQkxQTlFMzI5OTE4MjJFMUND
MDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3QuaCAqLywKIAkJCQkxQTlFMzI5ODE4MjJFMUNDMDBG
NUQwNEMgLyogV0tSZW1vdGVPYmplY3QubW0gKi8sCkBAIC03NjYyLDggKzc2NjgsMTIgQEAKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkxQTg1RTQ3
MjFFMzAzRjM3MDA5MTQ1OTkgLyogV2ViS2l0LmFwaW5vdGVzIGluIEhlYWRlcnMgKi8sCisJCQkJ
MUE2MjgwQzUxOTE5OTQ5RjAwNkFEOUY5IC8qIFdlYktpdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MzdDNEMwOEQxODE0QUM1QzAwMzY4OEI5IC8qIFdLQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzN0M0QzA4NzE4MTQ5QzVCMDAzNjg4QjkgLyogV0tCYWNrRm9yd2FyZExpc3RJ
dGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0E1RTAxNDE4QkJGOTNGMDAwQTA4MUUgLyogX1dL
QWN0aXZhdGVkRWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUE4NzM2MThCQkZB
NDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzN0E3MDlBNzFFM0VBMEZEMDBDQTU5NjkgLyogV0tEYXRhRGV0ZWN0b3JUeXBl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlFNzE0QzUxQzEyNEEwNDAwNjY1QjNBIC8qIF9XS0F1
dG9tYXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwRDI4QUIxQzY0MjBDNjAw
OTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTBE
MjhBQzFDNjQyMENGMDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb25EZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC04MjA2LDcgKzgyMTYsNiBAQAogCQkJCTFDQkJFNEExMTlCNjZDNTMw
MDZCN0Q4MSAvKiBXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTVCQTgyQjFCQTM4RTYxMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyREE5NDRBMDE4ODRFNEYwMDBFRDg2REIgLyogV2ViSU9TRXZlbnRGYWN0
b3J5LmggaW4gSGVhZGVycyAqLywKLQkJCQkxQTYyODBDNTE5MTk5NDlGMDA2QUQ5RjkgLyogV2Vi
S2l0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0I2MzQ3ODExNkJGMTA2MDA2MDMyMTUgLyogV2Vi
S2l0Ml9DLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzlCQTUwNTE2OTdDNDUzMDBFNDQ2MTYgLyog
V2ViS2l0MkluaXRpYWxpemUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjI4MEM3MTkxOTk1MEMw
MDZBRDlGOSAvKiBXZWJLaXRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTgyNTQsNiArODI2
Myw3IEBACiAJCQkJQkM1NzRFNjMxMjY3RDA4MDAwNkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzU3NTA5NzEyNjhGM0M2MDA2RjBGMTIgLyogV2ViUG9w
dXBNZW51UHJveHlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDU5N0ZGMTEyQjU3QkUwMEVD
OEMyMyAvKiBXZWJQcmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzdBNzA5QTkxRTNF
QTQwQzAwQ0E1OTY5IC8qIFdLRGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0M4NUZEN0MxOTM0MTVBODAwMDE3N0M0IC8qIFdlYlByZWZlcmVuY2VzRGVmaW5p
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDODVGRDgwMTkzNDE2NjUwMDAxNzdDNCAvKiBX
ZWJQcmVmZXJlbmNlc0tleXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDU5OEFDMTEyQjdGREYw
MEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlLmggaW4gSGVhZGVycyAqLywKQEAgLTgzMDgs
OSArODMxOCw3IEBACiAJCQkJQkM0MDc1RjQxMjRGRjAyNzAwNjhGMjBBIC8qIFdLQXJyYXkuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxMkY1OEY2MTJBODhBNTQwMDYyOTUzMCAvKiBXS0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTJGNThGODEyQTg4QTU0MDA2
Mjk1MzAgLyogV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
LAotCQkJCTM3QzRDMDhEMTgxNEFDNUMwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzdDNEMwOTUxODE0QjlFNjAwMzY4OEI5IC8qIFdLQmFja0Zvcndh
cmRMaXN0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAotCQkJCTM3QzRDMDg3MTgxNDlDNUIwMDM2
ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QzRD
MDg5MTgxNDlGMjMwMDM2ODhCOSAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkRGRjdCNkYxREE0Q0ZBRjAwODE0NjE0IC8qIFdLQmFja0Zvcndh
cmRMaXN0SXRlbVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjQ2QzFEMTFERDM5OUYw
MDY0NTVCMCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYuaCBpbiBIZWFkZXJzICovLApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tX
ZWJQcm9jZXNzUGx1Z0luUmFuZ2VIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5S
YW5nZUhhbmRsZS5oCShyZXZpc2lvbiAyMTEzMzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5SYW5nZUhhbmRs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS0RhdGFEZXRlY3RvclR5cGVzLmg+CiAKIEBjbGFzcyBXS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZTsKIApAQCAtNDAsNiArNDEsMTAgQEAgV0tfQ0xBU1NfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSwgaQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqZnJhbWU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICp0ZXh0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCisjaWYgVEFSR0VUX09TX0lQSE9ORQorLSAo
TlNBcnJheSAqKWRldGVjdERhdGFXaXRoVHlwZXM6KFdLRGF0YURldGVjdG9yVHlwZXMpdHlwZXMg
Y29udGV4dDooTlNEaWN0aW9uYXJ5ICopY29udGV4dCBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19J
T1NfVEJBKSk7CisjZW5kaWYKKwogQGVuZAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dL
V2ViUHJvY2Vzc1BsdWdJblJhbmdlSGFuZGxlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJ
blJhbmdlSGFuZGxlLm1tCShyZXZpc2lvbiAyMTEzMzcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5SYW5nZUhh
bmRsZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksMTAgQEAKICNpZiBXS19BUElfRU5B
QkxFRAogCiAjaW1wb3J0ICJJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCIKKyNpbXBvcnQgIldL
RGF0YURldGVjdG9yVHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWVJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9EYXRhRGV0ZWN0aW9uLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1JhbmdlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTY0
LDYgKzY3LDE0IEBAIC0gKE5TU3RyaW5nICopdGV4dAogICAgIHJldHVybiBfcmFuZ2VIYW5kbGUt
PnRleHQoKTsKIH0KIAorI2lmIFRBUkdFVF9PU19JUEhPTkUKKy0gKE5TQXJyYXkgKilkZXRlY3RE
YXRhV2l0aFR5cGVzOihXS0RhdGFEZXRlY3RvclR5cGVzKXR5cGVzIGNvbnRleHQ6KE5TRGljdGlv
bmFyeSAqKWNvbnRleHQgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpCit7CisgICAg
UmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBjb3JlUmFuZ2UgPSBfcmFuZ2VIYW5kbGUtPmNvcmVSYW5n
ZSgpOworICAgIHJldHVybiBXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5S
YW5nZShjb3JlUmFuZ2UsIGZyb21XS0RhdGFEZXRlY3RvclR5cGVzKHR5cGVzKSwgY29udGV4dCk7
Cit9CisjZW5kaWYKKwogLSAoSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZSYpX3JhbmdlSGFuZGxl
CiB7CiAgICAgcmV0dXJuICpfcmFuZ2VIYW5kbGU7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTEzNTMpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNy0wMS0yOSAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEV4cG9zZSBXZWJD
b3JlOjpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZSBXS1dlYlByb2Nlc3NQbHVn
SW5SYW5nZUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY3NTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9CdW5kbGVS
YW5nZUhhbmRsZS5tbTogQWRkZWQuCisgICAgICAgICgtW0J1bmRsZVJhbmdlSGFuZGxlUmVtb3Rl
T2JqZWN0IHRleHRGcm9tQm9keVJhbmdlOl0pOgorICAgICAgICAoLVtCdW5kbGVSYW5nZUhhbmRs
ZVJlbW90ZU9iamVjdCBib2R5SW5uZXJIVE1MQWZ0ZXJEZXRlY3RpbmdEYXRhOl0pOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQnVu
ZGxlUmFuZ2VIYW5kbGVQbHVnSW4ubW06IEFkZGVkLgorICAgICAgICAoLVtCdW5kbGVSYW5nZUhh
bmRsZVBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luOmRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJv
bGxlcjpdKToKKyAgICAgICAgKC1bQnVuZGxlUmFuZ2VIYW5kbGVQbHVnSW4gd2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZTpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9CdW5kbGVS
YW5nZUhhbmRsZVByb3RvY29sLmg6IEFkZGVkLgorCiAyMDE3LTAxLTI4ICBZb2F2IFdlaXNzICA8
eW9hdkB5b2F2LndzPgogCiAgICAgICAgIEFkZCBMaW5rIFByZWxvYWQgYXMgYW4gb2ZmLWJ5LWRl
ZmF1bHQgZXhwZXJpbWVudGFsIGZlYXR1cmUgbWVudSBpdGVtLgpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDIxMTMzNykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIs
NiArMTAyLDggQEAKIAkJMzc4RTY0NzkxNjMyNzA3NDAwQjZDNjc2IC8qIGxpbmstd2l0aC10aXRs
ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3OEU2NDc4MTYzMjZGREYwMEI2QzY3NiAvKiBsaW5rLXdpdGgtdGl0bGUuaHRtbCAqLzsg
fTsKIAkJMzc5MDI4QjkxNEZBQzI0QzAwN0U2QjQzIC8qIGFjY2VwdHNGaXJzdE1vdXNlLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc5
MDI4QjgxNEZBQkU0OTAwN0U2QjQzIC8qIGFjY2VwdHNGaXJzdE1vdXNlLmh0bWwgKi87IH07CiAJ
CTM3QTIyQUE3MURDQUEyNzIwMEFGQkZDNCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZl
bnRzQWZ0ZXJDcmFzaC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3QTIyQUE1MURDQUEyNzIwMEFGQkZDNCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dy
ZXNzRXZlbnRzQWZ0ZXJDcmFzaC5tbSAqLzsgfTsKKwkJMzdBNzA5QUUxRTNFQThCMDAwQ0E1OTY5
IC8qIEJ1bmRsZVJhbmdlSGFuZGxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzdBNzA5QUQxRTNFQThCMDAwQ0E1OTY5IC8qIEJ1bmRsZVJhbmdlSGFu
ZGxlLm1tICovOyB9OworCQkzN0E3MDlBRjFFM0VBOTdFMDBDQTU5NjkgLyogQnVuZGxlUmFuZ2VI
YW5kbGVQbHVnSW4ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAzN0E3MDlBQTFFM0VBNzkwMDBDQTU5NjkgLyogQnVuZGxlUmFuZ2VIYW5kbGVQbHVnSW4u
bW0gKi87IH07CiAJCTM3QjQ3RTMwMUQ2NEU3Q0EwMDVGNEVGRiAvKiBXS09iamVjdC5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDM3QjQ3RTJFMUQ2NEU3
Q0EwMDVGNEVGRiAvKiBXS09iamVjdC5tbSAqLzsgfTsKIAkJMzdCQ0E2MUMxQjU5NkJBOTAwMjAx
MkNBIC8qIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJbk5ld1dpbmRvd0FjdGlvbnMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0JDQTYxQjFCNTk2QkE5
MDAyMDEyQ0EgLyogU2hvdWxkT3BlbkV4dGVybmFsVVJMc0luTmV3V2luZG93QWN0aW9ucy5tbSAq
LzsgfTsKIAkJMzdEMzZFRDcxQUY0MkVDRDAwQkFGNUQ5IC8qIExvYWRBbHRlcm5hdGVIVE1MU3Ry
aW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdE
MzZFRDYxQUY0MkVDRDAwQkFGNUQ5IC8qIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nLm1tICovOyB9
OwpAQCAtOTI0LDYgKzkyNiw5IEBACiAJCTM3OTlBRDM5MTQxMjBBNDMwMDVFQjBDNiAvKiBTdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3Ry
aW5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0EyMkFBNTFEQ0FBMjcyMDBB
RkJGQzQgLyogT2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0FmdGVyQ3Jhc2gubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBPYnNlcnZlZFJlbmRlcmluZ1By
b2dyZXNzRXZlbnRzQWZ0ZXJDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MzdBNjg5NUQxNDhBOUI1MDAwNTEwMEZBIC8qIFN1YnJlc291cmNlRXJyb3JDcmFzaC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN1YnJlc291cmNlRXJyb3JDcmFz
aC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdBNzA5QUExRTNFQTc5MDAwQ0E1
OTY5IC8qIEJ1bmRsZVJhbmdlSGFuZGxlUGx1Z0luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUmFuZ2VIYW5kbGVQbHVnSW4ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTM3QTcwOUFDMUUzRUE3RTgwMENBNTk2OSAvKiBCdW5kbGVSYW5n
ZUhhbmRsZVByb3RvY29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1bmRs
ZVJhbmdlSGFuZGxlUHJvdG9jb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzdB
NzA5QUQxRTNFQThCMDAwQ0E1OTY5IC8qIEJ1bmRsZVJhbmdlSGFuZGxlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUmFuZ2VIYW5kbGUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3QjQ3RTJFMUQ2NEU3Q0EwMDVGNEVGRiAvKiBXS09i
amVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLT2JqZWN0
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzN0JDQTYxQjFCNTk2QkE5MDAyMDEy
Q0EgLyogU2hvdWxkT3BlbkV4dGVybmFsVVJMc0luTmV3V2luZG93QWN0aW9ucy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNJ
bk5ld1dpbmRvd0FjdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3Qzc4
NERFMTk3QzhGMkUwMDEwQTQ5NiAvKiBSZW5kZXJlZEltYWdlRnJvbURPTU5vZGUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW5kZXJlZEltYWdlRnJvbURPTU5v
ZGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTAyLDYgKzE1MDcsOSBAQAog
CQkJCTM3NEI3QTYyMURGMzczNEMwMEFDQ0I2QyAvKiBCdW5kbGVFZGl0aW5nRGVsZWdhdGVQcm90
b2NvbC5oICovLAogCQkJCUExM0VCQkFDMUI4NzQzNkYwMDA5NzExMCAvKiBCdW5kbGVQYXJhbWV0
ZXJzLm1tICovLAogCQkJCUExM0VCQkFFMUI4NzQzNkYwMDA5NzExMCAvKiBCdW5kbGVQYXJhbWV0
ZXJzUGx1Z0luLm1tICovLAorCQkJCTM3QTcwOUFEMUUzRUE4QjAwMENBNTk2OSAvKiBCdW5kbGVS
YW5nZUhhbmRsZS5tbSAqLywKKwkJCQkzN0E3MDlBQTFFM0VBNzkwMDBDQTU5NjkgLyogQnVuZGxl
UmFuZ2VIYW5kbGVQbHVnSW4ubW0gKi8sCisJCQkJMzdBNzA5QUMxRTNFQTdFODAwQ0E1OTY5IC8q
IEJ1bmRsZVJhbmdlSGFuZGxlUHJvdG9jb2wuaCAqLywKIAkJCQkxQzJCODE3RTFDODkxRTQyMDBB
NTUyOUYgLyogQ2FuY2VsRm9udFN1YnJlc291cmNlLm1tICovLAogCQkJCTFDMkI4MTgxMUM4OTFF
RkEwMEE1NTI5RiAvKiBDYW5jZWxGb250U3VicmVzb3VyY2VQbHVnSW4ubW0gKi8sCiAJCQkJMUFB
RDE5RjUxQzdDRTIwMzAwODMxRTQ3IC8qIENvZGluZy5tbSAqLywKQEAgLTE1MjQsMTQgKzE1MzIs
MTUgQEAKIAkJCQk1MUJDRUU0OTFDODRGNEFGMDA0MkM4MkUgLyogSW5kZXhlZERCTXVsdGlQcm9j
ZXNzLm1tICovLAogCQkJCTUxQjFFRThEMUM4MEY1ODgwMDY0RkI5OCAvKiBJbmRleGVkREJQZXJz
aXN0ZW5jZS5tbSAqLywKIAkJCQkzN0QzNkVENjFBRjQyRUNEMDBCQUY1RDkgLyogTG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmcubW0gKi8sCisJCQkJQTEyNTQ3OEQxREIxOEI5NDAwMzU4NTY0IC8qIExv
YWREYXRhV2l0aE5pbE1JTUVUeXBlLm1tICovLAogCQkJCTU3OTAxRkFDMUNBRjEyQzIwMEVENjRG
OSAvKiBMb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gKi8sCiAJCQkJNTFFNkE4OTIxRDJGMUJFQzAw
QzAwNEI2IC8qIExvY2FsU3RvcmFnZUNsZWFyLm1tICovLAogCQkJCTQ2QzUxOUQ4MUQzNTVBNzMw
MERBQTUxQSAvKiBMb2NhbFN0b3JhZ2VOdWxsRW50cmllcy5tbSAqLywKIAkJCQk3QTZBMkM2RjFE
Q0NGODdCMDBDMEQwODUgLyogTG9jYWxTdG9yYWdlUXVpcmtUZXN0Lm1tICovLAogCQkJCTUxQ0Qx
QzZBMUIzOENFMzYwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSAqLywKLQkJCQlBMTBGMDQ3QzFF
M0FEMjlDMDBDOTVFMTkgLyogTlNGaWxlTWFuYWdlckV4dHJhcy5tbSAqLywKIAkJCQkxQUJDM0RF
RDE4OTlCRTZEMDA0RjA2MjYgLyogTmF2aWdhdGlvbi5tbSAqLywKIAkJCQkyRUNGRjU1NDFEOUIx
MkY4MDBCNTUzOTQgLyogTm93UGxheWluZ0NvbnRyb2xzVGVzdHMubW0gKi8sCisJCQkJQTEwRjA0
N0MxRTNBRDI5QzAwQzk1RTE5IC8qIE5TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi8sCiAJCQkJMzdB
MjJBQTUxRENBQTI3MjAwQUZCRkM0IC8qIE9ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNB
ZnRlckNyYXNoLm1tICovLAogCQkJCUNFQTZDRjIyMTlDQ0Y1QkQwMDY0RjVBNyAvKiBPcGVuQW5k
Q2xvc2VXaW5kb3cubW0gKi8sCiAJCQkJQzk1NTAxQkUxOUFEMkZBRjAwNDlCRTNFIC8qIFByZWZl
cmVuY2VzLm1tICovLApAQCAtMTU2Miw3ICsxNTcxLDYgQEAKIAkJCQk3QzQxN0YzMTFEMTlFMTQ4
MDBCOEVGNTMgLyogV0tXZWJWaWV3RGVmYXVsdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLywKIAkJ
CQkwRjNCOTRBNTFBNzcyNjZDMDBERTMyNzIgLyogV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0
Lm1tICovLAogCQkJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0SW5w
dXQubW0gKi8sCi0JCQkJQTEyNTQ3OEQxREIxOEI5NDAwMzU4NTY0IC8qIExvYWREYXRhV2l0aE5p
bE1JTUVUeXBlLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSAiV2ViS2l0MiBDb2NvYSI7CiAJCQlw
YXRoID0gV2ViS2l0MkNvY29hOwpAQCAtMjYwNSw2ICsyNjEzLDcgQEAKIAkJCQkyRUZGMDZENDFE
OEFFREJCMDAwNEJCMzAgLyogVGVzdFdLV2ViVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdD
ODNFMEI4MUQwQTY0QkQwMEZFQkNGMyAvKiBJbmplY3RlZEJ1bmRsZU1ha2VBbGxTaGFkb3dSb290
c09wZW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzMxQTQxMUE3RTAwNDQ3QzRDIC8q
IEluc3BlY3RvckJhci5tbSBpbiBTb3VyY2VzICovLAorCQkJCTM3QTcwOUFFMUUzRUE4QjAwMENB
NTk2OSAvKiBCdW5kbGVSYW5nZUhhbmRsZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RURB
MUE0MTFBODcwMDQ0N0M0QyAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUM3MjZENkYxRDNFRTA2RTAwQzVFMUExIC8qIEluc3RhbmNlTWV0aG9kU3dpenps
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VBRDFBNDExQTM0MDA0NDdDNEMgLyogSmF2
YVNjcmlwdFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzg0LDYgKzI3OTMsNyBAQAogCQkJ
CUExM0VCQkFCMUI4NzQzNDYwMDA5NzExMCAvKiBQbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUE0RjgxQ0YxQkRGRkQ1MzAwNEU2NzJFIC8qIFJlbW90ZU9iamVj
dFJlZ2lzdHJ5UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4ODJFMDkxQzgwQzYzMDAw
NkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGRQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKKwkJCQkz
N0E3MDlBRjFFM0VBOTdFMDBDQTU5NjkgLyogQnVuZGxlUmFuZ2VIYW5kbGVQbHVnSW4ubW0gaW4g
U291cmNlcyAqLywKIAkJCQkzNzRCN0E2MTFERjM3MUNGMDBBQ0NCNkMgLyogQnVuZGxlRWRpdGlu
Z0RlbGVnYXRlUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwM0QxRDBBNjBENjAw
RkVCQ0YzIC8qIFV0aWxpdGllc0NvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEzRUJCQUEx
Qjg3NDI4RDAwMDk3MTEwIC8qIFdlYlByb2Nlc3NQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0J1bmRsZVJhbmdlSGFu
ZGxlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL0J1bmRsZVJhbmdlSGFuZGxlLm1tCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0J1bmRsZVJhbmdlSGFuZGxlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNp
bXBvcnQgIkJ1bmRsZVJhbmdlSGFuZGxlUHJvdG9jb2wuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVn
YXRlLmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCisjaW1wb3J0
IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+
CisjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaD4KKyNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKworc3RhdGljIGJvb2wgZGlkR2V0VGV4dEZyb21Cb2R5UmFuZ2U7Citz
dGF0aWMgYm9vbCBkaWRHZXRCb2R5SW5uZXJIVE1MQWZ0ZXJEZXRlY3RpbmdEYXRhOworCitAaW50
ZXJmYWNlIEJ1bmRsZVJhbmdlSGFuZGxlUmVtb3RlT2JqZWN0IDogTlNPYmplY3QgPEJ1bmRsZVJh
bmdlSGFuZGxlUHJvdG9jb2w+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBCdW5kbGVSYW5nZUhh
bmRsZVJlbW90ZU9iamVjdAorCistICh2b2lkKXRleHRGcm9tQm9keVJhbmdlOihOU1N0cmluZyAq
KXRleHQKK3sKKyAgICBkaWRHZXRUZXh0RnJvbUJvZHlSYW5nZSA9IHRydWU7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJWaXNpdCB3ZWJraXQub3JnIG9yIGVtYWlsIHdlYmtpdC1kZXZAbGlzdHMud2Vi
a2l0Lm9yZy4iLCB0ZXh0KTsKK30KKworLSAodm9pZClib2R5SW5uZXJIVE1MQWZ0ZXJEZXRlY3Rp
bmdEYXRhOihOU1N0cmluZyAqKXRleHQKK3sKKyAgICBkaWRHZXRCb2R5SW5uZXJIVE1MQWZ0ZXJE
ZXRlY3RpbmdEYXRhID0gdHJ1ZTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIlZpc2l0IDxhIGhyZWY9
XCJodHRwOi8vd2Via2l0Lm9yZ1wiIGRpcj1cImx0clwiIHgtYXBwbGUtZGF0YS1kZXRlY3RvcnM9
XCJ0cnVlXCIgeC1hcHBsZS1kYXRhLWRldGVjdG9ycy10eXBlPVwibGlua1wiIHgtYXBwbGUtZGF0
YS1kZXRlY3RvcnMtcmVzdWx0PVwiMFwiPndlYmtpdC5vcmc8L2E+ICAgPGVtPiAgb3I8L2VtPiBl
bWFpbCA8YSBocmVmPVwibWFpbHRvOndlYmtpdC1kZXZAbGlzdHMud2Via2l0Lm9yZ1wiIGRpcj1c
Imx0clwiIHgtYXBwbGUtZGF0YS1kZXRlY3RvcnM9XCJ0cnVlXCIgeC1hcHBsZS1kYXRhLWRldGVj
dG9ycy10eXBlPVwibGlua1wiIHgtYXBwbGUtZGF0YS1kZXRlY3RvcnMtcmVzdWx0PVwiMVwiPndl
YmtpdC1kZXZAbGlzdHMud2Via2l0Lm9yZzwvYT4uIiwgdGV4dCk7Cit9CisKK0BlbmQKKworVEVT
VChXZWJLaXQyLCBXS1dlYlByb2Nlc3NQbHVnSW5SYW5nZUhhbmRsZSkKK3sKKyAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IHJldGFpblB0cihbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiB0ZXN0d2Via2l0YXBpX2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBs
dWdJbkNsYXNzTmFtZTpAIkJ1bmRsZVJhbmdlSGFuZGxlUGx1Z0luIl0pOworICAgIFJldGFpblB0
cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV0pOworCisgICAgUmV0YWluUHRyPEJ1bmRsZVJhbmdlSGFuZGxlUmVtb3RlT2Jq
ZWN0PiBvYmplY3QgPSBhZG9wdE5TKFtbQnVuZGxlUmFuZ2VIYW5kbGVSZW1vdGVPYmplY3QgYWxs
b2NdIGluaXRdKTsKKyAgICBfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgKmludGVyZmFjZSA9IFtf
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVtb3RlT2JqZWN0SW50ZXJmYWNlV2l0aFByb3RvY29s
OkBwcm90b2NvbChCdW5kbGVSYW5nZUhhbmRsZVByb3RvY29sKV07CisgICAgW1t3ZWJWaWV3IF9y
ZW1vdGVPYmplY3RSZWdpc3RyeV0gcmVnaXN0ZXJFeHBvcnRlZE9iamVjdDpvYmplY3QuZ2V0KCkg
aW50ZXJmYWNlOmludGVyZmFjZV07CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIlZp
c2l0IHdlYmtpdC5vcmcgICA8ZW0+ICBvcjwvZW0+IGVtYWlsIHdlYmtpdC1kZXZAbGlzdHMud2Vi
a2l0Lm9yZy4iIGJhc2VVUkw6bmlsXTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZGlkR2V0VGV4dEZyb21Cb2R5UmFuZ2UpOworI2lmIFBMQVRGT1JNKElPUykKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRpZEdldEJvZHlJbm5lckhUTUxBZnRlckRldGVjdGluZ0RhdGEp
OworI2VuZGlmCit9CisKKyNlbmRpZgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvQnVuZGxlUmFuZ2VIYW5kbGVQbHVnSW4ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQnVuZGxlUmFuZ2VIYW5kbGVQbHVn
SW4ubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
Q29jb2EvQnVuZGxlUmFuZ2VIYW5kbGVQbHVnSW4ubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgV0tfQVBJX0VO
QUJMRUQKKworI2ltcG9ydCAiQnVuZGxlUmFuZ2VIYW5kbGVQcm90b2NvbC5oIgorI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4u
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXJQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaD4KKyNp
bXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW5SYW5nZUhhbmRsZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkLmg+CisjaW1wb3J0IDxXZWJLaXQv
X1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBC
dW5kbGVSYW5nZUhhbmRsZVBsdWdJbiA6IE5TT2JqZWN0IDxXS1dlYlByb2Nlc3NQbHVnSW4sIFdL
V2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEJ1
bmRsZVJhbmdlSGFuZGxlUGx1Z0luIHsKKyAgICBSZXRhaW5QdHI8V0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyPiBfYnJvd3NlckNvbnRleHRDb250cm9sbGVyOworICAg
IFJldGFpblB0cjxXS1dlYlByb2Nlc3NQbHVnSW5Db250cm9sbGVyPiBfcGx1Z0luQ29udHJvbGxl
cjsKKyAgICBSZXRhaW5QdHI8aWQgPEJ1bmRsZVJhbmdlSGFuZGxlUHJvdG9jb2w+PiBfcmVtb3Rl
T2JqZWN0OworfQorCistICh2b2lkKXdlYlByb2Nlc3NQbHVnSW46KFdLV2ViUHJvY2Vzc1BsdWdJ
bkNvbnRyb2xsZXIgKilwbHVnSW5Db250cm9sbGVyIGRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopYnJv
d3NlckNvbnRleHRDb250cm9sbGVyCit7CisgICAgQVNTRVJUKCFfYnJvd3NlckNvbnRleHRDb250
cm9sbGVyKTsKKyAgICBBU1NFUlQoIV9wbHVnSW5Db250cm9sbGVyKTsKKyAgICBfYnJvd3NlckNv
bnRleHRDb250cm9sbGVyID0gYnJvd3NlckNvbnRleHRDb250cm9sbGVyOworICAgIF9wbHVnSW5D
b250cm9sbGVyID0gcGx1Z0luQ29udHJvbGxlcjsKKworICAgIF9XS1JlbW90ZU9iamVjdEludGVy
ZmFjZSAqaW50ZXJmYWNlID0gW19XS1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJ
bnRlcmZhY2VXaXRoUHJvdG9jb2w6QHByb3RvY29sKEJ1bmRsZVJhbmdlSGFuZGxlUHJvdG9jb2wp
XTsKKyAgICBfcmVtb3RlT2JqZWN0ID0gW2Jyb3dzZXJDb250ZXh0Q29udHJvbGxlci5fcmVtb3Rl
T2JqZWN0UmVnaXN0cnkgcmVtb3RlT2JqZWN0UHJveHlXaXRoSW50ZXJmYWNlOmludGVyZmFjZV07
CisKKyAgICBbX2Jyb3dzZXJDb250ZXh0Q29udHJvbGxlciBzZXRMb2FkRGVsZWdhdGU6c2VsZl07
Cit9CisKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjoo
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBk
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTooV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilm
cmFtZQoreworICAgIGF1dG8gY29udGV4dCA9IFtmcmFtZSBqc0NvbnRleHRGb3JXb3JsZDpbV0tX
ZWJQcm9jZXNzUGx1Z0luU2NyaXB0V29ybGQgbm9ybWFsV29ybGRdXTsKKyAgICBhdXRvIGpzUmFu
Z2UgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImxldCByYW5nZSA9IGRvY3VtZW50LmNyZWF0
ZVJhbmdlKCk7IHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhkb2N1bWVudC5ib2R5KTsgcmFuZ2U7
Il07CisgICAgYXV0byByYW5nZUhhbmRsZSA9IFtXS1dlYlByb2Nlc3NQbHVnSW5SYW5nZUhhbmRs
ZSByYW5nZUhhbmRsZVdpdGhKU1ZhbHVlOmpzUmFuZ2UgaW5Db250ZXh0OmNvbnRleHRdOworCisg
ICAgW19yZW1vdGVPYmplY3QgdGV4dEZyb21Cb2R5UmFuZ2U6cmFuZ2VIYW5kbGUudGV4dF07Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIFtyYW5nZUhhbmRsZSBkZXRlY3REYXRhV2l0aFR5cGVzOldL
RGF0YURldGVjdG9yVHlwZUFsbCBjb250ZXh0OkB7IH1dOworICAgIFtfcmVtb3RlT2JqZWN0IGJv
ZHlJbm5lckhUTUxBZnRlckRldGVjdGluZ0RhdGE6W1tjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAi
ZG9jdW1lbnQuYm9keS5pbm5lckhUTUwiXSB0b1N0cmluZ11dOworI2VuZGlmCit9CisKK0BlbmQK
KworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9CdW5kbGVSYW5nZUhhbmRsZVByb3RvY29sLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvQnVuZGxlUmFuZ2VIYW5k
bGVQcm90b2NvbC5oCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL0J1bmRsZVJhbmdlSGFuZGxlUHJvdG9jb2wuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlv
bi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworQHByb3RvY29sIEJ1bmRsZVJhbmdlSGFuZGxl
UHJvdG9jb2wgPE5TT2JqZWN0PgorLSAodm9pZCl0ZXh0RnJvbUJvZHlSYW5nZTooTlNTdHJpbmcg
Kil0ZXh0OworLSAodm9pZClib2R5SW5uZXJIVE1MQWZ0ZXJEZXRlY3RpbmdEYXRhOihOU1N0cmlu
ZyAqKXRleHQ7CitAZW5kCisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="321992"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>