<?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>192002</bug_id>
          
          <creation_ts>2018-11-27 02:37:32 -0800</creation_ts>
          <short_desc>Serialize and deserialize editable image strokes</short_desc>
          <delta_ts>2018-11-27 12:20:29 -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>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>aestes</cc>
    
    <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1481864</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-27 02:37:32 -0800</bug_when>
    <thetext>Serialize and deserialize editable image strokes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481865</commentid>
    <comment_count>1</comment_count>
      <attachid>355718</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-27 02:37:45 -0800</bug_when>
    <thetext>Created attachment 355718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481866</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-27 02:37:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/30900149&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481867</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-27 02:39:29 -0800</bug_when>
    <thetext>Attachment 355718 did not pass style-queue:


ERROR: Source/WebKit/Platform/spi/ios/PencilKitSPI.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 16 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>1481868</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-27 02:41:10 -0800</bug_when>
    <thetext>(In reply to Build Bot from comment #3)
&gt; Attachment 355718 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebKit/Platform/spi/ios/PencilKitSPI.h:31:  Alphabetical
&gt; sorting problem.  [build/include_order] [4]
&gt; Total errors found: 1 in 16 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

Silly stylebot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481935</commentid>
    <comment_count>5</comment_count>
      <attachid>355718</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-27 09:29:27 -0800</bug_when>
    <thetext>Comment on attachment 355718
Patch

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

&gt; Source/WebKit/UIProcess/ios/EditableImageController.mm:144
&gt; +            attachmentBacksEditableImage = true;

Can we just return `WebPageProxy::ShouldUpdateAttachmentAttributes::No` here, or do we anticipate an API::Attachment identifier mapping to more than one editable image?

&gt; Source/WebKit/UIProcess/ios/WKDrawingView.mm:126
&gt; +            (__bridge NSString *)kCGImagePropertyExifUserComment : base64Drawing

From what I can tell, base64Drawing should always exist because [drawing serialize] is never nil. But it might still be a good idea to bail if !base64Drawing, since this might not be the case in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481960</commentid>
    <comment_count>6</comment_count>
      <attachid>355718</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-27 10:40:28 -0800</bug_when>
    <thetext>Comment on attachment 355718
Patch

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

&gt; Source/WebKit/ChangeLog:41
&gt; +        Serialize strokes into the EXIF User Comment field.

Wow.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:8102
&gt; +WebPageProxy::ShouldUpdateAttachmentAttributes WebPageProxy::willUpdateAttachmentAttributes(const API::Attachment&amp; attachment)

Do you need the WebPageProxy:: namespace on ShouldUpdateAttachmentAttributes here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481998</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-27 11:39:07 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #5)
&gt; Comment on attachment 355718 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355718&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/EditableImageController.mm:144
&gt; &gt; +            attachmentBacksEditableImage = true;
&gt; 
&gt; Can we just return `WebPageProxy::ShouldUpdateAttachmentAttributes::No`
&gt; here, or do we anticipate an API::Attachment identifier mapping to more than
&gt; one editable image?

I think that’s fine, you’re right. Of course the thing I was worried about /was/ multiple editable images with the same API::Attachment, but your deduplicate-on-insert code should handle that.

&gt; &gt; Source/WebKit/UIProcess/ios/WKDrawingView.mm:126
&gt; &gt; +            (__bridge NSString *)kCGImagePropertyExifUserComment : base64Drawing
&gt; 
&gt; From what I can tell, base64Drawing should always exist because [drawing
&gt; serialize] is never nil. But it might still be a good idea to bail if
&gt; !base64Drawing, since this might not be the case in the future.

Yeah, I think so.


(In reply to Dean Jackson from comment #6)
&gt; Comment on attachment 355718 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355718&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:8102
&gt; &gt; +WebPageProxy::ShouldUpdateAttachmentAttributes WebPageProxy::willUpdateAttachmentAttributes(const API::Attachment&amp; attachment)
&gt; 
&gt; Do you need the WebPageProxy:: namespace on ShouldUpdateAttachmentAttributes
&gt; here?

Shouldn’t, I think that’s just a copy-paste-o.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482007</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-27 11:43:01 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #7)
&gt; (In reply to Dean Jackson from comment #6)
&gt; &gt; Comment on attachment 355718 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=355718&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:8102
&gt; &gt; &gt; +WebPageProxy::ShouldUpdateAttachmentAttributes WebPageProxy::willUpdateAttachmentAttributes(const API::Attachment&amp; attachment)
&gt; &gt; 
&gt; &gt; Do you need the WebPageProxy:: namespace on ShouldUpdateAttachmentAttributes
&gt; &gt; here?
&gt; 
&gt; Shouldn’t, I think that’s just a copy-paste-o.

Nope, definitely need that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482010</commentid>
    <comment_count>9</comment_count>
      <attachid>355754</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-27 11:46:36 -0800</bug_when>
    <thetext>Created attachment 355754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482014</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-27 11:50:37 -0800</bug_when>
    <thetext>Attachment 355754 did not pass style-queue:


ERROR: Source/WebKit/Platform/spi/ios/PencilKitSPI.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 16 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>1482039</commentid>
    <comment_count>11</comment_count>
      <attachid>355754</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-27 12:20:27 -0800</bug_when>
    <thetext>Comment on attachment 355754
Patch

Clearing flags on attachment: 355754

Committed r238566: &lt;https://trac.webkit.org/changeset/238566&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1482040</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-27 12:20:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355718</attachid>
            <date>2018-11-27 02:37:45 -0800</date>
            <delta_ts>2018-11-27 11:46:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192002-20181127023744.patch</filename>
            <type>text/plain</type>
            <size>26658</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk1MzRmZTQzODkyYjk1
MmJlZDRhNjlkZmRkZTYxODEyNjgyNTBlOS4uZWNhZGVhNWEwOWJiYWExNjFmM2E5NWJjOTM0NDY0
NzFjN2I5MzhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTExLTI3ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFNlcmlhbGl6ZSBh
bmQgZGVzZXJpYWxpemUgZWRpdGFibGUgaW1hZ2Ugc3Ryb2tlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMDAyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMDkwMDE0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUZXN0OiBlZGl0aW5nL2ltYWdlcy9wYXN0ZS1lZGl0YWJsZS1pbWFnZS5odG1sCisK
KyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEltYWdlRWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6Omhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6dXBkYXRlRWRpdGFibGVJbWFn
ZSk6CisgICAgICAgIENhbGwgdXBkYXRlRWRpdGFibGVJbWFnZSgpIGZyb20gZGlkRmluaXNoSW5z
ZXJ0aW5nTm9kZSBpbnN0ZWFkIG9mIGluc2VydGVkSW50b0FuY2VzdG9yLgorICAgICAgICBUaGlz
IGlzIGhlbHBmdWwgYmVjYXVzZSBpdCBtZWFucyB3ZSBnZXQgdGhlIGZpbmFsLCBkZWR1cGxpY2F0
ZWQgYXR0YWNobWVudCBpZGVudGlmaWVyCisgICAgICAgIGluc3RlYWQgb2YgdGhlIG9yaWdpbmFs
IG9uZSB3aGVuIGNsb25pbmcgb3IgcGFzdGluZy4KKworICAgICAgICBUaGlzIGFsc28gbWVhbnMg
dGhhdCBpc0Nvbm5lY3RlZCgpIGlzIG5vdyBhbHdheXMgYWNjdXJhdGUgd2hlbiB1cGRhdGVFZGl0
YWJsZUltYWdlKCkKKyAgICAgICAgaXMgY2FsbGVkLCBzbyB3ZSBjYW4gcmVtb3ZlIHRoZSBhcmd1
bWVudCB0aGF0IGFsbG93ZWQgdXMgdG8gbGllIGZyb20gaW5zaWRlIGluc2VydGVkSW50b0FuY2Vz
dG9yLgorCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpp
c0VkaXRhYmxlSW1hZ2UgY29uc3QpOgorICAgICAgICBNYWtlIHVzZSBvZiBoYXNFZGl0YWJsZUlt
YWdlIGluc3RlYWQgb2Ygc2VwYXJhdGVseSBjaGVja2luZyBmb3IgdGhlIGF0dHJpYnV0ZS4KKwog
MjAxOC0xMS0yNiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM4MzU3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3N2JjYWQ4Mjk4
OWQ0ZmQ5Yzk1NjYwOWY1OTVlZGIyYTA2NjFjMWM1Li41MTkxZDMwYWQ1MjAxMzEwZTZkMjI5N2U5
YzgyNzFhM2JmOTg5ZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE4LTExLTI3ICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFNlcmlhbGl6
ZSBhbmQgZGVzZXJpYWxpemUgZWRpdGFibGUgaW1hZ2Ugc3Ryb2tlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMDAyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zMDkwMDE0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHA6CisgICAgICAgIChB
UEk6OkF0dGFjaG1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbGxVcGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICBXaGVuIGFuIGF0dGFjaG1lbnQgd291bGQgdXBkYXRlIGl0cyBET00gYXR0
cmlidXRlcywgcGx1bWIgYSBub3RpZmljYXRpb24KKyAgICAgICAgdG8gRWRpdGFibGVJbWFnZUNv
bnRyb2xsZXIsIGFuZCBhbGxvdyBpdCB0byBibG9jayB0aGUgdXBkYXRlIChiZWNhdXNlCisgICAg
ICAgIHdlIGRvbid0IHJlYWxseSB3YW50IHRvIHNldCBzcmMgZm9yIGVkaXRhYmxlIGltYWdlIGF0
dGFjaG1lbnRzLAorICAgICAgICB3ZSBqdXN0IHdhbnQgdGhlIFVJIHByb2Nlc3MgdG8gZnVsbHkg
b3duIHRoZSBkYXRhKS4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvUGVuY2lsS2l0U1BJ
Lmg6CisgICAgICAgIEFkZCBzb21lIFNQSS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRWRp
dGFibGVJbWFnZUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViS2l0OjpFZGl0YWJsZUltYWdlQ29udHJv
bGxlcjo6bG9hZFN0cm9rZXNGcm9tQXR0YWNobWVudCk6CisgICAgICAgIEFkZCBhIGhlbHBlciB0
byBsb2FkIHN0cm9rZXMgZnJvbSBhbiBhdHRhY2htZW50LgorCisgICAgICAgIChXZWJLaXQ6OkVk
aXRhYmxlSW1hZ2VDb250cm9sbGVyOjphc3NvY2lhdGVXaXRoQXR0YWNobWVudCk6CisgICAgICAg
IFRyeSB0byBsb2FkIHN0cm9rZXMgZnJvbSB0aGUgYXR0YWNobWVudCB3aGVuIGluaXRpYWxseSBh
c3NvY2lhdGVkLgorICAgICAgICBEb24ndCBjcmVhdGUgYSBmaWxlIHdyYXBwZXIgYXJvdW5kIGEg
bnVsbCBpbWFnZSwgc28gaXQgd2lsbCBiZSByZWdlbmVyYXRlZCBsYXRlci4KKworICAgICAgICAo
V2ViS2l0OjpFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6d2lsbFVwZGF0ZUF0dGFjaG1lbnRBdHRy
aWJ1dGVzKToKKyAgICAgICAgVGhlIGFmb3JlbWVudGlvbmVkIHBsdW1iaW5nIGF0IHVwZGF0ZSB0
aW1lLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1tOgorICAgICAgICAoLVtXS0RyYXdpbmdW
aWV3IGxheW91dFN1YnZpZXdzXSk6CisgICAgICAgIEludmFsaWRhdGUgdGhlIGF0dGFjaG1lbnQg
KHNvIGl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgdXBvbiByZXF1ZXN0KSBpZiB0aGUKKyAgICAgICAg
Y2FudmFzIHNpemUgY2hhbmdlcy4KKworICAgICAgICAoLVtXS0RyYXdpbmdWaWV3IFBOR1JlcHJl
c2VudGF0aW9uXSk6CisgICAgICAgIFNlcmlhbGl6ZSBzdHJva2VzIGludG8gdGhlIEVYSUYgVXNl
ciBDb21tZW50IGZpZWxkLgorICAgICAgICBXZSB3aWxsIGZpbmQgYSBkaWZmZXJlbnQgZmllbGQg
dG8gdXNlIChpZGVhbGx5IGEgY3VzdG9tIHZlbmRvci1zcGVjaWZpYworICAgICAgICBmaWVsZCB0
aGF0IG5vYm9keSBlbHNlIHdpbGwgdXNlIGZvciBhbnl0aGluZyksIGJ1dCB0aGlzIHdvcmtzIGZv
ciBub3cuCisKKyAgICAgICAgRG9uJ3QgdHJ5IHRvIHJlbmRlciBhbiBpbWFnZSBpZiB3ZSBkb24n
dCBoYXZlIGEgc2l6ZSBvciBzY2FsZTsKKyAgICAgICAgUEtJbWFnZVJlbmRlcmVyIHdpbGwganVz
dCBmYWlsIGFueXdheSwgc28gYmFpbCBlYXJseS4KKworICAgICAgICBJbiB0aGUgaU9TIFNpbXVs
YXRvciwgUEtJbWFnZVJlbmRlcmVyIGN1cnJlbnRseSByZXR1cm5zIGFuIHVudXNhYmxlIGltYWdl
LgorICAgICAgICBJbnN0ZWFkLCBzbyB0aGF0IHdlIGhhdmUgYSBpbWFnZSBvbiB3aGljaCB0byBz
ZXJpYWxpemUgdGhlIHN0cm9rZXMsCisgICAgICAgIGNyZWF0ZSBhIHRyYW5zcGFyZW50IDF4MSBp
bWFnZS4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBzZXJpYWxpemUgc3Ryb2tlcworICAgICAg
ICBldmVuIHRob3VnaCB3ZSBkb24ndCBoYXZlIGEgdXNhYmxlIHJlbmRlcmVkIGltYWdlLCBzbyB0
aGF0IHdlIGNhbiBzdGlsbCB0ZXN0CisgICAgICAgIHRoaXMgY2hhbmdlIChhbmQgZnV0dXJlIGNo
YW5nZXMpLgorCisgICAgICAgICgtW1dLRHJhd2luZ1ZpZXcgbG9hZERyYXdpbmdGcm9tUE5HUmVw
cmVzZW50YXRpb246XSk6CisgICAgICAgIElmIGF2YWlsYWJsZSwgZGVzZXJpYWxpemUgc3Ryb2tl
cyBmcm9tIHRoZSBFWElGIFVzZXIgQ29tbWVudCBmaWVsZC4KKworICAgICAgICAoLVtXS0RyYXdp
bmdWaWV3IGRyYXdpbmdEaWRDaGFuZ2U6XSk6CisgICAgICAgICgtW1dLRHJhd2luZ1ZpZXcgaW52
YWxpZGF0ZUF0dGFjaG1lbnRdKToKKyAgICAgICAgRmFjdG9yIGludmFsaWRhdGVBdHRhY2htZW50
IG91dCBvZiBkcmF3aW5nRGlkQ2hhbmdlIHNvIHdlIGNhbiBjYWxsCisgICAgICAgIGl0IGZyb20g
bGF5b3V0U3Vidmlld3MgdG9vIQorCiAyMDE4LTExLTI2ICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEluc2VydCA8YXR0YWNobWVudD4gZWxlbWVudHMg
dW5kZXIgZWRpdGFibGUgaW1hZ2VzIHRvIG1ha2UgdGhlaXIgYmFja2luZyBkYXRhIGFjY2Vzc2li
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDIzZjVlMDcw
NzJkNDY5OGJhM2I2YTM5NzM2NWZlNzA0NzY5M2EyZWMuLjE5Y2Q3MWQ0YjAxMmE0NTVlNDc2NDY3
ZDk2MjA1MmZmMDYxZjljMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgICAg
IHVwZGF0ZUltYWdlQ29udHJvbHMoKTsKICNlbmRpZgogICAgIH0gZWxzZSBpZiAobmFtZSA9PSB4
X2FwcGxlX2VkaXRhYmxlX2ltYWdlQXR0cikKLSAgICAgICAgdXBkYXRlRWRpdGFibGVJbWFnZShp
c0Nvbm5lY3RlZCgpID8gSXNDb25uZWN0ZWRUb0RvY3VtZW50OjpZZXMgOiBJc0Nvbm5lY3RlZFRv
RG9jdW1lbnQ6Ok5vKTsKKyAgICAgICAgdXBkYXRlRWRpdGFibGVJbWFnZSgpOwogICAgIGVsc2Ug
ewogICAgICAgICBpZiAobmFtZSA9PSBuYW1lQXR0cikgewogICAgICAgICAgICAgYm9vbCB3aWxs
SGF2ZU5hbWUgPSAhdmFsdWUuaXNOdWxsKCk7CkBAIC0zMzMsMTMgKzMzMywxMyBAQCBOb2RlOjpJ
bnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBIVE1MSW1hZ2VFbGVtZW50OjppbnNlcnRlZEludG9B
bmNlc3RvcihJbnNlcnRpbwogICAgICAgICAgICAgbV9mb3JtLT5yZWdpc3RlckltZ0VsZW1lbnQo
dGhpcyk7CiAgICAgfQogCi0gICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVu
dCkKLSAgICAgICAgdXBkYXRlRWRpdGFibGVJbWFnZShJc0Nvbm5lY3RlZFRvRG9jdW1lbnQ6Olll
cyk7Ci0KICAgICAvLyBJbnNlcnQgbmVlZHMgdG8gY29tcGxldGUgZmlyc3QsIGJlZm9yZSB3ZSBz
dGFydCB1cGRhdGluZyB0aGUgbG9hZGVyLiBMb2FkZXIgZGlzcGF0Y2hlcyBldmVudHMgd2hpY2gg
Y291bGQgcmVzdWx0CiAgICAgLy8gaW4gY2FsbGJhY2tzIGJhY2sgdG8gdGhpcyBub2RlLgogICAg
IE5vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydE5vdGlmaWNhdGlvblJlcXVl
c3QgPSBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFy
ZW50T2ZJbnNlcnRlZFRyZWUpOwogCisgICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9E
b2N1bWVudCAmJiBoYXNFZGl0YWJsZUltYWdlQXR0cmlidXRlKCkpCisgICAgICAgIGluc2VydE5v
dGlmaWNhdGlvblJlcXVlc3QgPSBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdDo6TmVlZHNQb3N0
SW5zZXJ0aW9uQ2FsbGJhY2s7CisKICAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0Rv
Y3VtZW50ICYmICFtX3BhcnNlZFVzZW1hcC5pc051bGwoKSkKICAgICAgICAgdHJlZVNjb3BlKCku
YWRkSW1hZ2VFbGVtZW50QnlVc2VtYXAoKm1fcGFyc2VkVXNlbWFwLmltcGwoKSwgKnRoaXMpOwog
CkBAIC0zNTYsNiArMzU2LDEyIEBAIE5vZGU6Okluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IEhU
TUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvCiAgICAgcmV0dXJu
IGluc2VydE5vdGlmaWNhdGlvblJlcXVlc3Q7CiB9CiAKK3ZvaWQgSFRNTEltYWdlRWxlbWVudDo6
ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpCit7CisgICAgaWYgKGhhc0VkaXRhYmxlSW1hZ2VBdHRy
aWJ1dGUoKSkKKyAgICAgICAgdXBkYXRlRWRpdGFibGVJbWFnZSgpOworfQorCiB2b2lkIEhUTUxJ
bWFnZUVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUs
IENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCiB7CiAgICAgaWYgKG1fZm9y
bSkKQEAgLTM2OCwxMiArMzc0LDE5IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cmVtb3ZlZEZy
b21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kCiAgICAgICAg
IHNldFBpY3R1cmVFbGVtZW50KG51bGxwdHIpOwogCiAgICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nv
bm5lY3RlZEZyb21Eb2N1bWVudCkKLSAgICAgICAgdXBkYXRlRWRpdGFibGVJbWFnZShJc0Nvbm5l
Y3RlZFRvRG9jdW1lbnQ6Ok5vKTsKKyAgICAgICAgdXBkYXRlRWRpdGFibGVJbWFnZSgpOwogCiAg
ICAgbV9mb3JtID0gbnVsbHB0cjsKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rv
cihyZW1vdmFsVHlwZSwgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSk7CiB9CiAKK2Jvb2wgSFRNTElt
YWdlRWxlbWVudDo6aGFzRWRpdGFibGVJbWFnZUF0dHJpYnV0ZSgpIGNvbnN0Cit7CisgICAgaWYg
KCFkb2N1bWVudCgpLnNldHRpbmdzKCkuZWRpdGFibGVJbWFnZXNFbmFibGVkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbih4X2FwcGxlX2VkaXRhYmxlX2ltYWdlQXR0cik7Cit9CisKIEdyYXBoaWNzTGF5ZXI6OkVt
YmVkZGVkVmlld0lEIEhUTUxJbWFnZUVsZW1lbnQ6OmVkaXRhYmxlSW1hZ2VWaWV3SUQoKSBjb25z
dAogewogICAgIGlmICghbV9lZGl0YWJsZUltYWdlKQpAQCAtMzgxLDcgKzM5NCw3IEBAIEdyYXBo
aWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIEhUTUxJbWFnZUVsZW1lbnQ6OmVkaXRhYmxlSW1hZ2VW
aWV3SUQoKSBjb25zdAogICAgIHJldHVybiBtX2VkaXRhYmxlSW1hZ2UtPmVtYmVkZGVkVmlld0lE
KCk7CiB9CiAKLXZvaWQgSFRNTEltYWdlRWxlbWVudDo6dXBkYXRlRWRpdGFibGVJbWFnZShJc0Nv
bm5lY3RlZFRvRG9jdW1lbnQgY29ubmVjdGVkKQordm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojp1cGRh
dGVFZGl0YWJsZUltYWdlKCkKIHsKICAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5lZGl0
YWJsZUltYWdlc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzkwLDkgKzQwMyw5IEBA
IHZvaWQgSFRNTEltYWdlRWxlbWVudDo6dXBkYXRlRWRpdGFibGVJbWFnZShJc0Nvbm5lY3RlZFRv
RG9jdW1lbnQgY29ubmVjdGVkKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYm9vbCBoYXNFZGl0YWJsZUF0dHJpYnV0ZSA9IGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oeF9hcHBsZV9lZGl0YWJsZV9pbWFnZUF0dHIpOworICAgIGJvb2wgaGFzRWRpdGFi
bGVBdHRyaWJ1dGUgPSBoYXNFZGl0YWJsZUltYWdlQXR0cmlidXRlKCk7CiAgICAgYm9vbCBpc0N1
cnJlbnRseUVkaXRhYmxlID0gISFtX2VkaXRhYmxlSW1hZ2U7Ci0gICAgYm9vbCBzaG91bGRCZUVk
aXRhYmxlID0gKGNvbm5lY3RlZCA9PSBJc0Nvbm5lY3RlZFRvRG9jdW1lbnQ6OlllcykgJiYgaGFz
RWRpdGFibGVBdHRyaWJ1dGU7CisgICAgYm9vbCBzaG91bGRCZUVkaXRhYmxlID0gaXNDb25uZWN0
ZWQoKSAmJiBoYXNFZGl0YWJsZUF0dHJpYnV0ZTsKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCiAgICAgLy8gQ3JlYXRlIHRoZSBpbm5lciBhdHRhY2htZW50IGZvciBlZGl0YWJsZSBp
bWFnZXMsIG9yIG5vbi1lZGl0YWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aAppbmRleCA0YTQwMDU3NWM0MDhiMWNiYTJjYjkxZGFjOTM0M2FlNDUzNzdiZDJkLi4xMzU3Zjkw
MzVlZTZjMjYyYzEyNjdhNDkwZjEyNzIxMjUxYjhiNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbWFnZUVsZW1lbnQuaApAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAg
ICAgR3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZWRpdGFibGVJbWFnZVZpZXdJRCgpIGNv
bnN0OworICAgIGJvb2wgaGFzRWRpdGFibGVJbWFnZUF0dHJpYnV0ZSgpIGNvbnN0OwogCiBwcm90
ZWN0ZWQ6CiAgICAgSFRNTEltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmLCBIVE1MRm9ybUVsZW1lbnQqID0gMCk7CkBAIC0xNDIsNiArMTQzLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+Jikg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBJbnNlcnRlZEludG9BbmNlc3RvclJlc3VsdCBpbnNlcnRl
ZEludG9BbmNlc3RvcihJbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1v
dmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAK
ICAgICBib29sIGlzRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KQEAgLTE1Myw4ICsxNTUsNyBAQCBwcml2YXRlOgogCiAgICAgSW1hZ2VDYW5kaWRh
dGUgYmVzdEZpdFNvdXJjZUZyb21QaWN0dXJlRWxlbWVudCgpOwogCi0gICAgZW51bSBjbGFzcyBJ
c0Nvbm5lY3RlZFRvRG9jdW1lbnQgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHZvaWQgdXBkYXRl
RWRpdGFibGVJbWFnZShJc0Nvbm5lY3RlZFRvRG9jdW1lbnQpOworICAgIHZvaWQgdXBkYXRlRWRp
dGFibGVJbWFnZSgpOwogCiAgICAgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllc0Zyb21F
bGVtZW50KGNvbnN0IEVsZW1lbnQmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKaW5kZXggYzJkMDU5YjE1MmM1Y2I5Yzk2MzdiZTZlN2Q3NmM2YTI4MTQ5
YzBiZC4uMDU3MmJmYWFjMmYxMTU3Nzg0YzI2NzJjZWE0YzIwNTA2NGYyZjk3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC0yMTQsMTMgKzIxNCw5IEBAIElt
YWdlU2l6ZUNoYW5nZVR5cGUgUmVuZGVySW1hZ2U6OnNldEltYWdlU2l6ZUZvckFsdFRleHQoQ2Fj
aGVkSW1hZ2UqIG5ld0ltYWdlIC8qCiAKIGJvb2wgUmVuZGVySW1hZ2U6OmlzRWRpdGFibGVJbWFn
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFzZXR0aW5ncygpLmVkaXRhYmxlSW1hZ2VzRW5hYmxlZCgp
KQorICAgIGlmICghZWxlbWVudCgpIHx8ICFpczxIVE1MSW1hZ2VFbGVtZW50PihlbGVtZW50KCkp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWVsZW1lbnQoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGVsZW1lbnQoKS0+aGFzQXR0cmlidXRlV2l0aG91
dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2VkaXRhYmxlX2ltYWdlQXR0cik7CisgICAgcmV0dXJu
IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSktPmhhc0VkaXRhYmxlSW1hZ2VB
dHRyaWJ1dGUoKTsKIH0KICAgICAKIGJvb2wgUmVuZGVySW1hZ2U6OnJlcXVpcmVzTGF5ZXIoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1BlbmNpbEtp
dFNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1BlbmNpbEtpdFNQSS5oCmlu
ZGV4IDAwYTFlNzUyNWI1ZWJmMTFhOTc3ZDE4MTRmYmI1NDgyZGNmYmU0ZmYuLmVlOTc5NmIyNzQ5
ZjQ4MGFhODY5ZmYzN2VmZmIwNTc4YjQwMjQ3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL2lvcy9QZW5jaWxLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL3NwaS9pb3MvUGVuY2lsS2l0U1BJLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQogCiAjaW1wb3J0IDxQZW5jaWxLaXQvUGVuY2lsS2l0Lmg+CisjaW1w
b3J0IDxQZW5jaWxLaXQvUEtEcmF3aW5nX1ByaXZhdGUuaD4KIAogI2Vsc2UKIApAQCAtMzcsNiAr
MzgsMTIgQEAKIAogQGVuZAogCitAaW50ZXJmYWNlIFBLRHJhd2luZyA6IE5TT2JqZWN0CisKKy0g
KE5TRGF0YSAqKXNlcmlhbGl6ZTsKKworQGVuZAorCiAjZW5kaWYKIAogI2VuZGlmIC8vIEhBVkUo
UEVOQ0lMS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwCmluZGV4IGExMzRiZmFmNjM1YWJiNDQ1NzkzNzkzNjQzMTRhODAyZTI0NzIwZTYuLmNmNGM2
MmU3OTI3OWZlYjBjZWJkMjFkMDNiNDNiZmQ5MDE2ZGQ3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTU1LDYgKzU1LDExIEBAIHZvaWQg
QXR0YWNobWVudDo6dXBkYXRlQXR0cmlidXRlcyhGdW5jdGlvbjx2b2lkKFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtX3dl
YlBhZ2UtPndpbGxVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcygqdGhpcykgPT0gV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OlNob3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzOjpObykgeworICAg
ICAgICBjYWxsYmFjayhXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgbV93ZWJQYWdlLT51cGRhdGVBdHRhY2htZW50QXR0cmli
dXRlcygqdGhpcywgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAwODI3YjAyMjczZjkwNmU3M2M3ZWZlMTk5OTc1YmFh
OWRjNmNjNmYwLi42MDFkY2QxMmY0Yzk5MTMyYTJmMWJlYjIzZDQ5Mzk2NWM3NGQyZDRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTgwOTksNiArODA5OSwx
NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VyaWFsaXplZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRp
ZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAgfQogfQogCitXZWJQYWdlUHJveHk6OlNo
b3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzIFdlYlBhZ2VQcm94eTo6d2lsbFVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCkKK3sK
KyNpZiBIQVZFKFBFTkNJTEtJVCkKKyAgICByZXR1cm4gbV9lZGl0YWJsZUltYWdlQ29udHJvbGxl
ci0+d2lsbFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQpOworI2Vsc2UKKyAg
ICByZXR1cm4gU2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXM6OlllczsKKyNlbmRpZgor
fQorCiAjaWYgIVBMQVRGT1JNKENPQ09BKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1S
ZWdpc3RlckF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggYzEyMmFmNTNmNTAzMmZhMTVhYTFjYjU3YzQ3MGZhOTM3MTQyN2NiYy4uMzJl
OWY1ZDE0ZGM5NzFkN2EwMzcwZGM4MzgxZTYwOGJiYjgzOGMwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEzNzAsNiArMTM3MCw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYsIEZ1
bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgc2VyaWFsaXpl
ZEF0dGFjaG1lbnREYXRhRm9ySWRlbnRpZmllcnMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBWZWN0
b3I8V2ViQ29yZTo6U2VyaWFsaXplZEF0dGFjaG1lbnREYXRhPiYpOwogICAgIHZvaWQgcmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKKworICAgIGVudW0gY2xhc3Mg
U2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMgOiBib29sIHsgTm8sIFllcyB9OworICAg
IFNob3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzIHdpbGxVcGRhdGVBdHRhY2htZW50QXR0
cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQ
UExJQ0FUSU9OX01BTklGRVNUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvRWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaAppbmRleCBhYTllNmM4OWY5OTFiMjkyZTkwZjIy
MjI3ZGJhMTYzYjQ0Nzk5MDBhLi5iYmY5M2MyMDI4NmVlNmM2NjI4YTcxODJiYWVkNDUyZjJiYzhm
NzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJ
bWFnZUNvbnRyb2xsZXIuaApAQCAtMjcsNyArMjcsOSBAQAogCiAjaWYgSEFWRShQRU5DSUxLSVQp
CiAKKyNpbmNsdWRlICJBUElBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0xheWVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtPYmpDUHRyLmg+CkBAIC0zOCw4ICs0MCw2IEBAIE9CSkNfQ0xBU1MgV0tEcmF3aW5nVmlldzsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlBhZ2VQcm94eTsKLQogc3RydWN0IEVk
aXRhYmxlSW1hZ2UgewogICAgIFJldGFpblB0cjxXS0RyYXdpbmdWaWV3PiBkcmF3aW5nVmlldzsK
ICAgICBTdHJpbmcgYXR0YWNobWVudElEOwpAQCAtNTksMTIgKzU5LDE2IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgaW52YWxpZGF0ZUF0dGFjaG1lbnRGb3JFZGl0YWJsZUltYWdlKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKTsKIAorICAgIFdlYlBhZ2VQcm94eTo6U2hvdWxk
VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMgd2lsbFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVz
KGNvbnN0IEFQSTo6QXR0YWNobWVudCYpOworCiBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRl
RWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCk7CiAg
ICAgdm9pZCBkaWREZXN0cm95RWRpdGFibGVJbWFnZShXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpF
bWJlZGRlZFZpZXdJRCk7CiAKICAgICB2b2lkIGFzc29jaWF0ZVdpdGhBdHRhY2htZW50KFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lELCBjb25zdCBTdHJpbmcmIGF0dGFjaG1l
bnRJRCk7CiAKKyAgICB2b2lkIGxvYWRTdHJva2VzRnJvbUF0dGFjaG1lbnQoRWRpdGFibGVJbWFn
ZSYsIGNvbnN0IEFQSTo6QXR0YWNobWVudCYpOworCiAgICAgV2Vha1B0cjxXZWJQYWdlUHJveHk+
IG1fd2ViUGFnZVByb3h5OwogCiAgICAgSGFzaE1hcDxXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpF
bWJlZGRlZFZpZXdJRCwgc3RkOjp1bmlxdWVfcHRyPEVkaXRhYmxlSW1hZ2U+PiBtX2VkaXRhYmxl
SW1hZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxl
SW1hZ2VDb250cm9sbGVyLm1tCmluZGV4IDUwYTU0ZDIyNTRiMjZhZDEzZThiY2QxNzJmZDQxMDU1
ODllODAyNjguLjZlZWIyMTQ0NWE0NDk5MDY2NjA4NjJiNzk4ZWY1YmJkN2I5MjYxZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFnZUNvbnRy
b2xsZXIubW0KQEAgLTkyLDE2ICs5MiwzMSBAQCB2b2lkIEVkaXRhYmxlSW1hZ2VDb250cm9sbGVy
Ojphc3NvY2lhdGVXaXRoQXR0YWNobWVudChXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbQogICAg
IGF1dG8mIGVkaXRhYmxlSW1hZ2UgPSBlbnN1cmVFZGl0YWJsZUltYWdlKGVtYmVkZGVkVmlld0lE
KTsKICAgICBXZWFrT2JqQ1B0cjxXS0RyYXdpbmdWaWV3PiBkcmF3aW5nVmlldyA9IGVkaXRhYmxl
SW1hZ2UuZHJhd2luZ1ZpZXcuZ2V0KCk7CiAgICAgZWRpdGFibGVJbWFnZS5hdHRhY2htZW50SUQg
PSBhdHRhY2htZW50SUQ7CisKKyAgICBsb2FkU3Ryb2tlc0Zyb21BdHRhY2htZW50KGVkaXRhYmxl
SW1hZ2UsIGF0dGFjaG1lbnQpOworCiAgICAgYXR0YWNobWVudC5zZXRGaWxlV3JhcHBlckdlbmVy
YXRvcihbZHJhd2luZ1ZpZXddKCkgLT4gUmV0YWluUHRyPE5TRmlsZVdyYXBwZXI+IHsKICAgICAg
ICAgaWYgKCFkcmF3aW5nVmlldykKICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIFJl
dGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlciA9IGFkb3B0TlMoW1tOU0ZpbGVXcmFw
cGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6W2RyYXdpbmdWaWV3IFBOR1Jl
cHJlc2VudGF0aW9uXV0pOworICAgICAgICBOU0RhdGEgKmRhdGEgPSBbZHJhd2luZ1ZpZXcgUE5H
UmVwcmVzZW50YXRpb25dOworICAgICAgICBpZiAoIWRhdGEpCisgICAgICAgICAgICByZXR1cm4g
bmlsOworICAgICAgICBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gZmlsZVdyYXBwZXIgPSBhZG9w
dE5TKFtbTlNGaWxlV3JhcHBlciBhbGxvY10gaW5pdFJlZ3VsYXJGaWxlV2l0aENvbnRlbnRzOmRh
dGFdKTsKICAgICAgICAgW2ZpbGVXcmFwcGVyIHNldFByZWZlcnJlZEZpbGVuYW1lOkAiZHJhd2lu
Zy5wbmciXTsKICAgICAgICAgcmV0dXJuIGZpbGVXcmFwcGVyOwogICAgIH0pOwogICAgIGF0dGFj
aG1lbnQuc2V0Q29udGVudFR5cGUoInB1YmxpYy5wbmciKTsKIH0KIAordm9pZCBFZGl0YWJsZUlt
YWdlQ29udHJvbGxlcjo6bG9hZFN0cm9rZXNGcm9tQXR0YWNobWVudChFZGl0YWJsZUltYWdlJiBl
ZGl0YWJsZUltYWdlLCBjb25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCit7CisgICAg
QVNTRVJUKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpID09IGVkaXRhYmxlSW1hZ2UuYXR0YWNobWVu
dElEKTsKKyAgICBOU0ZpbGVXcmFwcGVyICpmaWxlV3JhcHBlciA9IGF0dGFjaG1lbnQuZmlsZVdy
YXBwZXIoKTsKKyAgICBpZiAoIWZpbGVXcmFwcGVyLmlzUmVndWxhckZpbGUpCisgICAgICAgIHJl
dHVybjsKKyAgICBbZWRpdGFibGVJbWFnZS5kcmF3aW5nVmlldyBsb2FkRHJhd2luZ0Zyb21QTkdS
ZXByZXNlbnRhdGlvbjpmaWxlV3JhcHBlci5yZWd1bGFyRmlsZUNvbnRlbnRzXTsKK30KKwogdm9p
ZCBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6aW52YWxpZGF0ZUF0dGFjaG1lbnRGb3JFZGl0YWJs
ZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEIGVtYmVkZGVkVmll
d0lEKQogewogICAgIGlmICghbV93ZWJQYWdlUHJveHkpCkBAIC0xMTksNiArMTM0LDIwIEBAIHZv
aWQgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmludmFsaWRhdGVBdHRhY2htZW50Rm9yRWRpdGFi
bGVJbWFnZShXZWJDb3JlOjpHcmFwCiAgICAgYXR0YWNobWVudC0+aW52YWxpZGF0ZUdlbmVyYXRl
ZEZpbGVXcmFwcGVyKCk7CiB9CiAKK1dlYlBhZ2VQcm94eTo6U2hvdWxkVXBkYXRlQXR0YWNobWVu
dEF0dHJpYnV0ZXMgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OndpbGxVcGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCit7CisgICAgYm9v
bCBhdHRhY2htZW50QmFja3NFZGl0YWJsZUltYWdlID0gZmFsc2U7CisKKyAgICBmb3IgKGF1dG8m
IGVkaXRhYmxlSW1hZ2UgOiBtX2VkaXRhYmxlSW1hZ2VzLnZhbHVlcygpKSB7CisgICAgICAgIGlm
IChlZGl0YWJsZUltYWdlLT5hdHRhY2htZW50SUQgPT0gYXR0YWNobWVudC5pZGVudGlmaWVyKCkp
IHsKKyAgICAgICAgICAgIGxvYWRTdHJva2VzRnJvbUF0dGFjaG1lbnQoKmVkaXRhYmxlSW1hZ2Us
IGF0dGFjaG1lbnQpOworICAgICAgICAgICAgYXR0YWNobWVudEJhY2tzRWRpdGFibGVJbWFnZSA9
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYXR0YWNobWVudEJhY2tzRWRp
dGFibGVJbWFnZSA/IFdlYlBhZ2VQcm94eTo6U2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0
ZXM6Ok5vIDogV2ViUGFnZVByb3h5OjpTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlczo6
WWVzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEhBVkUoUEVOQ0lM
S0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1Zp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3LmgKaW5kZXgg
M2Y0OGJjYTAyYzdlNDkyOTljMTQ4NDNlNjE4NDc4ZDdmZDc0NTY1Yi4uODZiMjMxYTU0M2U2MTA1
ZWY4OTYxZjlmZTVlMWQ1MzhhOWY5NDNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tEcmF3aW5nVmlldy5oCkBAIC0zMyw2ICszMyw3IEBACiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhFbWJlZGRlZFZpZXdJRDooV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3
SUQpZW1iZWRkZWRWaWV3SUQgd2ViUGFnZVByb3h5OihXZWJLaXQ6OldlYlBhZ2VQcm94eSYpd2Vi
UGFnZVByb3h5OwogCiAtIChOU0RhdGEgKilQTkdSZXByZXNlbnRhdGlvbjsKKy0gKHZvaWQpbG9h
ZERyYXdpbmdGcm9tUE5HUmVwcmVzZW50YXRpb246KE5TRGF0YSAqKVBOR0RhdGE7CiAKIEBlbmQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5tbQppbmRleCA3
MGYzYWU3MmFjN2Q3YTM3YzlhYmYxYTdhZDEzNzAwOTAwZjgzYTcyLi5iNjdmNDUyMWEyNzNiN2Nm
YWEzYjYyMzcxMTliZmQ3ZTEwNWY5YjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tEcmF3aW5nVmlldy5tbQpAQCAtMzUsNiArMzUsNyBAQAogCiBTT0ZUX0xJTktfUFJJVkFU
RV9GUkFNRVdPUksoUGVuY2lsS2l0KTsKIFNPRlRfTElOS19DTEFTUyhQZW5jaWxLaXQsIFBLQ2Fu
dmFzVmlldyk7CitTT0ZUX0xJTktfQ0xBU1MoUGVuY2lsS2l0LCBQS0RyYXdpbmcpOwogU09GVF9M
SU5LX0NMQVNTKFBlbmNpbEtpdCwgUEtJbWFnZVJlbmRlcmVyKTsKIAogQGludGVyZmFjZSBXS0Ry
YXdpbmdWaWV3ICgpIDxQS0NhbnZhc1ZpZXdEZWxlZ2F0ZT4KQEAgLTc3LDMxICs3OCw4MSBAQCAt
ICh2b2lkKWxheW91dFN1YnZpZXdzCiAgICAgICAgIC8vIFRoZSByZW5kZXJlciBpcyBpbnN0YW50
aWF0ZWQgZm9yIGEgcGFydGljdWxhciBzaXplIG91dHB1dDsgaWYKICAgICAgICAgLy8gdGhlIHNp
emUgY2hhbmdlcywgd2UgbmVlZCB0byByZS1jcmVhdGUgdGhlIHJlbmRlcmVyLgogICAgICAgICBf
cmVuZGVyZXIgPSBuaWw7CisKKyAgICAgICAgW3NlbGYgaW52YWxpZGF0ZUF0dGFjaG1lbnRdOwog
ICAgIH0KIH0KIAogLSAoTlNEYXRhICopUE5HUmVwcmVzZW50YXRpb24KIHsKKyAgICBpZiAoIXNl
bGYuYm91bmRzLnNpemUud2lkdGggfHwgIXNlbGYuYm91bmRzLnNpemUuaGVpZ2h0IHx8ICFzZWxm
LndpbmRvdy5zY3JlZW4uc2NhbGUpCisgICAgICAgIHJldHVybiBuaWw7CisKICAgICBpZiAoIV9y
ZW5kZXJRdWV1ZSkKICAgICAgICAgX3JlbmRlclF1ZXVlID0gYWRvcHRPU09iamVjdChkaXNwYXRj
aF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV0tEcmF3aW5nVmlldy5SZW5kZXJpbmci
LCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpKTsKIAogICAgIGlmICghX3JlbmRlcmVyKQogICAgICAg
ICBfcmVuZGVyZXIgPSBhZG9wdE5TKFthbGxvY1BLSW1hZ2VSZW5kZXJlckluc3RhbmNlKCkgaW5p
dFdpdGhTaXplOnNlbGYuYm91bmRzLnNpemUgc2NhbGU6c2VsZi53aW5kb3cuc2NyZWVuLnNjYWxl
IHJlbmRlclF1ZXVlOl9yZW5kZXJRdWV1ZS5nZXQoKV0pOwogCisgICAgYXV0byogZHJhd2luZyA9
IFtfcGVuY2lsVmlldyBkcmF3aW5nXTsKKwogICAgIF9fYmxvY2sgUmV0YWluUHRyPFVJSW1hZ2U+
IHJlc3VsdEltYWdlOwotICAgIFtfcmVuZGVyZXIgcmVuZGVyRHJhd2luZzpbX3BlbmNpbFZpZXcg
ZHJhd2luZ10gY29tcGxldGlvbjpeKFVJSW1hZ2UgKmltYWdlKSB7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWV9TSU1VTEFUT1IpCisgICAgLy8gUEtJbWFnZVJlbmRlcmVyIGN1cnJlbnRseSBkb2Vz
bid0IHdvcmsgaW4gdGhlIHNpbXVsYXRvci4gSW4gb3JkZXIgdG8KKyAgICAvLyBhbGxvdyBzdHJv
a2VzIHRvIHBlcnNpc3QgcmVnYXJkbGVzcyAobW9zdGx5IGZvciB0ZXN0aW5nKSwgd2UnbGwKKyAg
ICAvLyBzeW50aGVzaXplIGFuIGVtcHR5IDF4MSBpbWFnZS4KKyAgICBVSUdyYXBoaWNzQmVnaW5J
bWFnZUNvbnRleHQoQ0dTaXplTWFrZSgxLCAxKSk7CisgICAgQ0dDb250ZXh0Q2xlYXJSZWN0KFVJ
R3JhcGhpY3NHZXRDdXJyZW50Q29udGV4dCgpLCBDR1JlY3RNYWtlKDAsIDAsIDEsIDEpKTsKKyAg
ICByZXN1bHRJbWFnZSA9IFVJR3JhcGhpY3NHZXRJbWFnZUZyb21DdXJyZW50SW1hZ2VDb250ZXh0
KCk7CisgICAgVUlHcmFwaGljc0VuZEltYWdlQ29udGV4dCgpOworI2Vsc2UKKyAgICBbX3JlbmRl
cmVyIHJlbmRlckRyYXdpbmc6ZHJhd2luZyBjb21wbGV0aW9uOl4oVUlJbWFnZSAqaW1hZ2UpIHsK
ICAgICAgICAgcmVzdWx0SW1hZ2UgPSBpbWFnZTsKICAgICB9XTsKKyNlbmRpZgogCiAgICAgLy8g
RklYTUU6IElkZWFsbHkgd2Ugd291bGQgbm90IHN5bmNocm9ub3VzbHkgd2FpdCBmb3IgdGhpcyBy
ZW5kZXJpbmcsCiAgICAgLy8gYnV0IE5TRmlsZVdyYXBwZXIgcmVxdWlyZXMgZGF0YSBzeW5jaHJv
bm91c2x5LCBhbmQgb3VyIGNsaWVudHMgZXhwZWN0CiAgICAgLy8gYW4gTlNGaWxlV3JhcHBlciB0
byBiZSBhdmFpbGFibGUgc3luY2hyb25vdXNseS4KICAgICBkaXNwYXRjaF9zeW5jKF9yZW5kZXJR
dWV1ZS5nZXQoKSwgXnsgfSk7CiAKLSAgICByZXR1cm4gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9u
KHJlc3VsdEltYWdlLmdldCgpKTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGF0YT4gUE5HRGF0
YSA9IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRy
PENHSW1hZ2VEZXN0aW5hdGlvblJlZj4gaW1hZ2VEZXN0aW5hdGlvbiA9IGFkb3B0Q0YoQ0dJbWFn
ZURlc3RpbmF0aW9uQ3JlYXRlV2l0aERhdGEoKF9fYnJpZGdlIENGTXV0YWJsZURhdGFSZWYpUE5H
RGF0YS5nZXQoKSwga1VUVHlwZVBORywgMSwgbmlsKSk7CisgICAgTlNTdHJpbmcgKmJhc2U2NERy
YXdpbmcgPSBbW2RyYXdpbmcgc2VyaWFsaXplXSBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlv
bnM6MF07CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHB1dCB0aGlzIHNvbWV3aGVyZSBsZXNz
IHVzZXItZmFjaW5nIHRoYW4gdGhlIEVYSUYgVXNlciBDb21tZW50IGZpZWxkLgorICAgIE5TRGlj
dGlvbmFyeSAqcHJvcGVydGllcyA9IEB7CisgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtD
R0ltYWdlUHJvcGVydHlFeGlmRGljdGlvbmFyeSA6IEB7CisgICAgICAgICAgICAoX19icmlkZ2Ug
TlNTdHJpbmcgKilrQ0dJbWFnZVByb3BlcnR5RXhpZlVzZXJDb21tZW50IDogYmFzZTY0RHJhd2lu
ZworICAgICAgICB9CisgICAgfTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25TZXRQcm9wZXJ0aWVz
KGltYWdlRGVzdGluYXRpb24uZ2V0KCksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcHJvcGVy
dGllcyk7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoaW1hZ2VEZXN0aW5hdGlvbi5n
ZXQoKSwgW3Jlc3VsdEltYWdlIENHSW1hZ2VdLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXBy
b3BlcnRpZXMpOworICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGltYWdlRGVzdGluYXRp
b24uZ2V0KCkpOworCisgICAgcmV0dXJuIFBOR0RhdGEuYXV0b3JlbGVhc2UoKTsKK30KKworLSAo
dm9pZClsb2FkRHJhd2luZ0Zyb21QTkdSZXByZXNlbnRhdGlvbjooTlNEYXRhICopUE5HRGF0YQor
eworICAgIFJldGFpblB0cjxDR0ltYWdlU291cmNlUmVmPiBpbWFnZVNvdXJjZSA9IGFkb3B0Q0Yo
Q0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChfX2JyaWRnZSBDRkRhdGFSZWYpUE5HRGF0YSwg
bnVsbHB0cikpOworICAgIGlmICghaW1hZ2VTb3VyY2UpCisgICAgICAgIHJldHVybjsKKyAgICBS
ZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBwcm9wZXJ0aWVzID0gYWRvcHROUygoX19icmlkZ2UgTlNE
aWN0aW9uYXJ5ICopQ0dJbWFnZVNvdXJjZUNvcHlQcm9wZXJ0aWVzQXRJbmRleChpbWFnZVNvdXJj
ZS5nZXQoKSwgMCwgbmlsKSk7CisgICAgTlNTdHJpbmcgKmJhc2U2NERyYXdpbmcgPSBbW3Byb3Bl
cnRpZXMgb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWtDR0ltYWdlUHJvcGVydHlFeGlmRGljdGlv
bmFyeV0gb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWtDR0ltYWdlUHJvcGVydHlFeGlmVXNlckNv
bW1lbnRdOworICAgIGlmICghYmFzZTY0RHJhd2luZykKKyAgICAgICAgcmV0dXJuOworICAgIFJl
dGFpblB0cjxOU0RhdGE+IGRyYXdpbmdEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5p
dFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmJhc2U2NERyYXdpbmcgb3B0aW9uczowXSk7CisgICAg
UmV0YWluUHRyPFBLRHJhd2luZz4gZHJhd2luZyA9IGFkb3B0TlMoW2FsbG9jUEtEcmF3aW5nSW5z
dGFuY2UoKSBpbml0V2l0aERhdGE6ZHJhd2luZ0RhdGEuZ2V0KCkgZXJyb3I6bmlsXSk7CisgICAg
W19wZW5jaWxWaWV3IHNldERyYXdpbmc6ZHJhd2luZy5nZXQoKV07CiB9CiAKIC0gKHZvaWQpZHJh
d2luZ0RpZENoYW5nZTooUEtDYW52YXNWaWV3ICopY2FudmFzVmlldworeworICAgIFtzZWxmIGlu
dmFsaWRhdGVBdHRhY2htZW50XTsKK30KKworLSAodm9pZClpbnZhbGlkYXRlQXR0YWNobWVudAog
ewogICAgIGlmICghX3dlYlBhZ2VQcm94eSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRjNjE2
NGU4ZjhjMGM3YWI3YTQzZmZkN2U0NGI1MDRkMzhiMTM1ODEuLjc4MDJlYmMwODIwNzQyOWFkOGJi
YzczZDEyZDViNWVkYWFlODY5M2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOC0xMS0yNyAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJpYWxp
emUgYW5kIGRlc2VyaWFsaXplIGVkaXRhYmxlIGltYWdlIHN0cm9rZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjAwMgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzA5MDAxNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy9wYXN0ZS1lZGl0YWJsZS1pbWFnZS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW1hZ2VzL3Bhc3RlLWVkaXRhYmxlLWlt
YWdlLmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgd2UgY2FuIGNvcHkgYW5k
IHBhc3RlIGFuZCBlZGl0YWJsZSBpbWFnZSBhbmQKKyAgICAgICAgY29udGludWUgdG8gZWRpdCBp
dCwgYW5kIGFyZSBhZmZlY3RpbmcgYSBkaWZmZXJlbnQgYXR0YWNobWVudCB0aGFuIHRoZSBvcmln
aW5hbC4KKwogMjAxOC0xMS0yNiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM4MzU3LgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcGFzdGUtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcGFzdGUtZWRpdGFibGUtaW1hZ2UtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxZGY4NjFiMjA3NGFhN2Q3ZDJmMmY1NmNmMGM3NjdhNjM5
Y2VlMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9wYXN0
ZS1lZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitIYWQgMSBzdHJv
a2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy4KK0hhZCAxIHN0cm9rZSBpbiBlZGl0
YWJsZSBpbWFnZSBhZnRlciBjb3B5aW5nIGFuZCBwYXN0aW5nLgorSGFkIDIgc3Ryb2tlcyBpbiBl
ZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nIG9uIHBhc3RlZCBpbWFnZS4KK1Bhc3RlZCBpbWFn
ZSBnb3QgYSBuZXcgYXR0YWNobWVudCBJRDogeWVzLgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvaW1hZ2VzL3Bhc3RlLWVkaXRhYmxlLWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL2ltYWdlcy9wYXN0ZS1lZGl0YWJsZS1pbWFnZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZj
MjY2ZGVhMzM4Y2YwYTM2ZDU0YjhhYTg0ZDZiOTRhZDQzNmI5ZWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9wYXN0ZS1lZGl0YWJsZS1pbWFnZS5odG1sCkBA
IC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsg
ZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBlbmFibGVBdHRhY2htZW50RWxlbWVudD10cnVlIF0g
LS0+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKwor
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKKyAgICBjb25zdCBkaXYgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworCisgICAgY29uc3Qgc2VsZWN0aW9uID0g
d2luZG93LmdldFNlbGVjdGlvbigpOworCisgICAgc2VsZWN0aW9uLnNldFBvc2l0aW9uKGRpdiwg
MCk7CisgICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiSW5zZXJ0RWRpdGFibGVJbWFnZSIpOwor
CisgICAgYXdhaXQgVUlIZWxwZXIuZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpOworICAgIGNv
bnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZyA9IChhd2FpdCBV
SUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7CisgICAgY29uc3QgZmly
c3RJbWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpOworICAgIGNvbnN0IGluaXRp
YWxBdHRhY2htZW50SUQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQuZ2V0QXR0YWNobWVudElkZW50
aWZpZXIoZmlyc3RJbWFnZSk7CisKKyAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRo
ZSBjYW52YXMgZ2V0cyBhIG5vbi16ZXJvIHNpemUgYmVmb3JlIHRyeWluZyB0byBzZXJpYWxpemUg
aXQuCisgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlUHJlc2VudGF0aW9uVXBkYXRlKCk7CisKKyAg
ICBzZWxlY3Rpb24uc2V0QmFzZUFuZEV4dGVudChkaXYuZmlyc3RDaGlsZCwgMCwgZGl2LmZpcnN0
Q2hpbGQsIDEpOworICAgIHRlc3RSdW5uZXIuZXhlY0NvbW1hbmQoIkNvcHkiKTsKKworICAgIHNl
bGVjdGlvbi5jb2xsYXBzZVRvRW5kKCk7CisgICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiUGFz
dGUiKTsKKworICAgIGZpcnN0SW1hZ2UucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChmaXJzdElt
YWdlKTsKKworICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyUGFz
dGluZyA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7
CisKKyAgICBhd2FpdCBVSUhlbHBlci5kcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKCk7CisgICAg
Y29uc3QgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJTZWNvbmREcmF3aW5nID0g
KGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKKyAgICBj
b25zdCBwYXN0ZWRBdHRhY2htZW50SUQgPSBIVE1MQXR0YWNobWVudEVsZW1lbnQuZ2V0QXR0YWNo
bWVudElkZW50aWZpZXIoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiaW1nIikpOworCisgICAgY29u
c3QgYXR0YWNobWVudElEc0FyZURpZmZlcmVudCA9IChpbml0aWFsQXR0YWNobWVudElEICE9IHBh
c3RlZEF0dGFjaG1lbnRJRCkgPyAieWVzIiA6ICJubyI7CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgibG9nIikuaW5uZXJIVE1MID0gYEhhZCAke251bWJlck9mU3Ryb2tlc0luRWRpdGFi
bGVJbWFnZUFmdGVyRHJhd2luZ30gc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdp
bmcuPGJyLz5IYWQgJHtudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlclBhc3Rpbmd9
IHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBjb3B5aW5nIGFuZCBwYXN0aW5nLjxici8+
SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJTZWNvbmREcmF3aW5nfSBz
dHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcgb24gcGFzdGVkIGltYWdlLjxi
ci8+UGFzdGVkIGltYWdlIGdvdCBhIG5ldyBhdHRhY2htZW50IElEOiAke2F0dGFjaG1lbnRJRHNB
cmVEaWZmZXJlbnR9LmA7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9KTsKKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgY29udGVudGVkaXRhYmxlPjxkaXYgaWQ9ImxvZyI+PGJyLz48
L2Rpdj48ZGl2IGlkPSJ0ZXN0Ij48YnIvPjwvZGl2PjwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355754</attachid>
            <date>2018-11-27 11:46:36 -0800</date>
            <delta_ts>2018-11-27 12:20:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192002-20181127114635.patch</filename>
            <type>text/plain</type>
            <size>26622</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTk1MzRmZTQzODkyYjk1
MmJlZDRhNjlkZmRkZTYxODEyNjgyNTBlOS4uM2NmODJkMTQwODRlZTZmNmUyNDk1NzRkYmQwOTFl
OThjMTM5NTc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE4LTExLTI3ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFNlcmlhbGl6ZSBh
bmQgZGVzZXJpYWxpemUgZWRpdGFibGUgaW1hZ2Ugc3Ryb2tlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMDAyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMDkwMDE0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAg
ICAgICAgVGVzdDogZWRpdGluZy9pbWFnZXMvcGFzdGUtZWRpdGFibGUtaW1hZ2UuaHRtbAorCisg
ICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJ
bWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEltYWdlRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpoYXNFZGl0YWJsZUltYWdlQXR0cmlidXRlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnVwZGF0ZUVkaXRhYmxlSW1hZ2Up
OgorICAgICAgICBDYWxsIHVwZGF0ZUVkaXRhYmxlSW1hZ2UoKSBmcm9tIGRpZEZpbmlzaEluc2Vy
dGluZ05vZGUgaW5zdGVhZCBvZiBpbnNlcnRlZEludG9BbmNlc3Rvci4KKyAgICAgICAgVGhpcyBp
cyBoZWxwZnVsIGJlY2F1c2UgaXQgbWVhbnMgd2UgZ2V0IHRoZSBmaW5hbCwgZGVkdXBsaWNhdGVk
IGF0dGFjaG1lbnQgaWRlbnRpZmllcgorICAgICAgICBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCBv
bmUgd2hlbiBjbG9uaW5nIG9yIHBhc3RpbmcuCisKKyAgICAgICAgVGhpcyBhbHNvIG1lYW5zIHRo
YXQgaXNDb25uZWN0ZWQoKSBpcyBub3cgYWx3YXlzIGFjY3VyYXRlIHdoZW4gdXBkYXRlRWRpdGFi
bGVJbWFnZSgpCisgICAgICAgIGlzIGNhbGxlZCwgc28gd2UgY2FuIHJlbW92ZSB0aGUgYXJndW1l
bnQgdGhhdCBhbGxvd2VkIHVzIHRvIGxpZSBmcm9tIGluc2lkZSBpbnNlcnRlZEludG9BbmNlc3Rv
ci4KKworICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZTo6aXNF
ZGl0YWJsZUltYWdlIGNvbnN0KToKKyAgICAgICAgTWFrZSB1c2Ugb2YgaGFzRWRpdGFibGVJbWFn
ZSBpbnN0ZWFkIG9mIHNlcGFyYXRlbHkgY2hlY2tpbmcgZm9yIHRoZSBhdHRyaWJ1dGUuCisKIDIw
MTgtMTEtMjYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzODM1Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzdiY2FkODI5ODlk
NGZkOWM5NTY2MDlmNTk1ZWRiMmEwNjYxYzFjNS4uZDUxYTVjYzMxNmYxMGU5ODlhYTM1MjA2MmQ4
N2VkMWZlNWYwZGQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NCBAQAorMjAxOC0xMS0yNyAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJpYWxpemUg
YW5kIGRlc2VyaWFsaXplIGVkaXRhYmxlIGltYWdlIHN0cm9rZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjAwMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzA5MDAxNDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKEFQSTo6
QXR0YWNobWVudDo6dXBkYXRlQXR0cmlidXRlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2lsbFVwZGF0ZUF0
dGFjaG1lbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgIFdoZW4gYW4gYXR0YWNobWVudCB3b3VsZCB1cGRhdGUgaXRzIERPTSBhdHRyaWJ1
dGVzLCBwbHVtYiBhIG5vdGlmaWNhdGlvbgorICAgICAgICB0byBFZGl0YWJsZUltYWdlQ29udHJv
bGxlciwgYW5kIGFsbG93IGl0IHRvIGJsb2NrIHRoZSB1cGRhdGUgKGJlY2F1c2UKKyAgICAgICAg
d2UgZG9uJ3QgcmVhbGx5IHdhbnQgdG8gc2V0IHNyYyBmb3IgZWRpdGFibGUgaW1hZ2UgYXR0YWNo
bWVudHMsCisgICAgICAgIHdlIGp1c3Qgd2FudCB0aGUgVUkgcHJvY2VzcyB0byBmdWxseSBvd24g
dGhlIGRhdGEpLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9QZW5jaWxLaXRTUEkuaDoK
KyAgICAgICAgQWRkIHNvbWUgU1BJLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9FZGl0YWJs
ZUltYWdlQ29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJLaXQ6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVy
Ojpsb2FkU3Ryb2tlc0Zyb21BdHRhY2htZW50KToKKyAgICAgICAgQWRkIGEgaGVscGVyIHRvIGxv
YWQgc3Ryb2tlcyBmcm9tIGFuIGF0dGFjaG1lbnQuCisKKyAgICAgICAgKFdlYktpdDo6RWRpdGFi
bGVJbWFnZUNvbnRyb2xsZXI6OmFzc29jaWF0ZVdpdGhBdHRhY2htZW50KToKKyAgICAgICAgVHJ5
IHRvIGxvYWQgc3Ryb2tlcyBmcm9tIHRoZSBhdHRhY2htZW50IHdoZW4gaW5pdGlhbGx5IGFzc29j
aWF0ZWQuCisgICAgICAgIERvbid0IGNyZWF0ZSBhIGZpbGUgd3JhcHBlciBhcm91bmQgYSBudWxs
IGltYWdlLCBzbyBpdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIGxhdGVyLgorCisgICAgICAgIChXZWJL
aXQ6OkVkaXRhYmxlSW1hZ2VDb250cm9sbGVyOjp3aWxsVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0
ZXMpOgorICAgICAgICBUaGUgYWZvcmVtZW50aW9uZWQgcGx1bWJpbmcgYXQgdXBkYXRlIHRpbWUu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcubW06CisgICAgICAgICgtW1dLRHJhd2luZ1ZpZXcg
bGF5b3V0U3Vidmlld3NdKToKKyAgICAgICAgSW52YWxpZGF0ZSB0aGUgYXR0YWNobWVudCAoc28g
aXQgd2lsbCBiZSByZWdlbmVyYXRlZCB1cG9uIHJlcXVlc3QpIGlmIHRoZQorICAgICAgICBjYW52
YXMgc2l6ZSBjaGFuZ2VzLgorCisgICAgICAgICgtW1dLRHJhd2luZ1ZpZXcgUE5HUmVwcmVzZW50
YXRpb25dKToKKyAgICAgICAgU2VyaWFsaXplIHN0cm9rZXMgaW50byB0aGUgRVhJRiBVc2VyIENv
bW1lbnQgZmllbGQuCisgICAgICAgIFdlIHdpbGwgZmluZCBhIGRpZmZlcmVudCBmaWVsZCB0byB1
c2UgKGlkZWFsbHkgYSBjdXN0b20gdmVuZG9yLXNwZWNpZmljCisgICAgICAgIGZpZWxkIHRoYXQg
bm9ib2R5IGVsc2Ugd2lsbCB1c2UgZm9yIGFueXRoaW5nKSwgYnV0IHRoaXMgd29ya3MgZm9yIG5v
dy4KKworICAgICAgICBEb24ndCB0cnkgdG8gcmVuZGVyIGFuIGltYWdlIGlmIHdlIGRvbid0IGhh
dmUgYSBzaXplIG9yIHNjYWxlOworICAgICAgICBQS0ltYWdlUmVuZGVyZXIgd2lsbCBqdXN0IGZh
aWwgYW55d2F5LCBzbyBiYWlsIGVhcmx5LgorCisgICAgICAgIEluIHRoZSBpT1MgU2ltdWxhdG9y
LCBQS0ltYWdlUmVuZGVyZXIgY3VycmVudGx5IHJldHVybnMgYW4gdW51c2FibGUgaW1hZ2UuCisg
ICAgICAgIEluc3RlYWQsIHNvIHRoYXQgd2UgaGF2ZSBhIGltYWdlIG9uIHdoaWNoIHRvIHNlcmlh
bGl6ZSB0aGUgc3Ryb2tlcywKKyAgICAgICAgY3JlYXRlIGEgdHJhbnNwYXJlbnQgMXgxIGltYWdl
LiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHNlcmlhbGl6ZSBzdHJva2VzCisgICAgICAgIGV2
ZW4gdGhvdWdoIHdlIGRvbid0IGhhdmUgYSB1c2FibGUgcmVuZGVyZWQgaW1hZ2UsIHNvIHRoYXQg
d2UgY2FuIHN0aWxsIHRlc3QKKyAgICAgICAgdGhpcyBjaGFuZ2UgKGFuZCBmdXR1cmUgY2hhbmdl
cykuCisKKyAgICAgICAgKC1bV0tEcmF3aW5nVmlldyBsb2FkRHJhd2luZ0Zyb21QTkdSZXByZXNl
bnRhdGlvbjpdKToKKyAgICAgICAgSWYgYXZhaWxhYmxlLCBkZXNlcmlhbGl6ZSBzdHJva2VzIGZy
b20gdGhlIEVYSUYgVXNlciBDb21tZW50IGZpZWxkLgorCisgICAgICAgICgtW1dLRHJhd2luZ1Zp
ZXcgZHJhd2luZ0RpZENoYW5nZTpdKToKKyAgICAgICAgKC1bV0tEcmF3aW5nVmlldyBpbnZhbGlk
YXRlQXR0YWNobWVudF0pOgorICAgICAgICBGYWN0b3IgaW52YWxpZGF0ZUF0dGFjaG1lbnQgb3V0
IG9mIGRyYXdpbmdEaWRDaGFuZ2Ugc28gd2UgY2FuIGNhbGwKKyAgICAgICAgaXQgZnJvbSBsYXlv
dXRTdWJ2aWV3cyB0b28hCisKIDIwMTgtMTEtMjYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5zZXJ0IDxhdHRhY2htZW50PiBlbGVtZW50cyB1bmRl
ciBlZGl0YWJsZSBpbWFnZXMgdG8gbWFrZSB0aGVpciBiYWNraW5nIGRhdGEgYWNjZXNzaWJsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggMjNmNWUwNzA3MmQ0
Njk4YmEzYjZhMzk3MzY1ZmU3MDQ3NjkzYTJlYy4uMTljZDcxZDRiMDEyYTQ1NWU0NzY0NjdkOTYy
MDUyZmYwNjFmOWMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3Bw
CkBAIC0yNDMsNyArMjQzLDcgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIKICAgICAgICAgdXBk
YXRlSW1hZ2VDb250cm9scygpOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChuYW1lID09IHhfYXBw
bGVfZWRpdGFibGVfaW1hZ2VBdHRyKQotICAgICAgICB1cGRhdGVFZGl0YWJsZUltYWdlKGlzQ29u
bmVjdGVkKCkgPyBJc0Nvbm5lY3RlZFRvRG9jdW1lbnQ6OlllcyA6IElzQ29ubmVjdGVkVG9Eb2N1
bWVudDo6Tm8pOworICAgICAgICB1cGRhdGVFZGl0YWJsZUltYWdlKCk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIGlmIChuYW1lID09IG5hbWVBdHRyKSB7CiAgICAgICAgICAgICBib29sIHdpbGxIYXZl
TmFtZSA9ICF2YWx1ZS5pc051bGwoKTsKQEAgLTMzMywxMyArMzMzLDEzIEBAIE5vZGU6Okluc2Vy
dGVkSW50b0FuY2VzdG9yUmVzdWx0IEhUTUxJbWFnZUVsZW1lbnQ6Omluc2VydGVkSW50b0FuY2Vz
dG9yKEluc2VydGlvCiAgICAgICAgICAgICBtX2Zvcm0tPnJlZ2lzdGVySW1nRWxlbWVudCh0aGlz
KTsKICAgICB9CiAKLSAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3VtZW50KQot
ICAgICAgICB1cGRhdGVFZGl0YWJsZUltYWdlKElzQ29ubmVjdGVkVG9Eb2N1bWVudDo6WWVzKTsK
LQogICAgIC8vIEluc2VydCBuZWVkcyB0byBjb21wbGV0ZSBmaXJzdCwgYmVmb3JlIHdlIHN0YXJ0
IHVwZGF0aW5nIHRoZSBsb2FkZXIuIExvYWRlciBkaXNwYXRjaGVzIGV2ZW50cyB3aGljaCBjb3Vs
ZCByZXN1bHQKICAgICAvLyBpbiBjYWxsYmFja3MgYmFjayB0byB0aGlzIG5vZGUuCiAgICAgTm9k
ZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0Tm90aWZpY2F0aW9uUmVxdWVzdCA9
IEhUTUxFbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRP
Zkluc2VydGVkVHJlZSk7CiAKKyAgICBpZiAoaW5zZXJ0aW9uVHlwZS5jb25uZWN0ZWRUb0RvY3Vt
ZW50ICYmIGhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUoKSkKKyAgICAgICAgaW5zZXJ0Tm90aWZp
Y2F0aW9uUmVxdWVzdCA9IEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0OjpOZWVkc1Bvc3RJbnNl
cnRpb25DYWxsYmFjazsKKwogICAgIGlmIChpbnNlcnRpb25UeXBlLmNvbm5lY3RlZFRvRG9jdW1l
bnQgJiYgIW1fcGFyc2VkVXNlbWFwLmlzTnVsbCgpKQogICAgICAgICB0cmVlU2NvcGUoKS5hZGRJ
bWFnZUVsZW1lbnRCeVVzZW1hcCgqbV9wYXJzZWRVc2VtYXAuaW1wbCgpLCAqdGhpcyk7CiAKQEAg
LTM1Niw2ICszNTYsMTIgQEAgTm9kZTo6SW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgSFRNTElt
YWdlRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW8KICAgICByZXR1cm4gaW5z
ZXJ0Tm90aWZpY2F0aW9uUmVxdWVzdDsKIH0KIAordm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpkaWRG
aW5pc2hJbnNlcnRpbmdOb2RlKCkKK3sKKyAgICBpZiAoaGFzRWRpdGFibGVJbWFnZUF0dHJpYnV0
ZSgpKQorICAgICAgICB1cGRhdGVFZGl0YWJsZUltYWdlKCk7Cit9CisKIHZvaWQgSFRNTEltYWdl
RWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29u
dGFpbmVyTm9kZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkKIHsKICAgICBpZiAobV9mb3JtKQpA
QCAtMzY4LDEyICszNzQsMTkgQEAgdm9pZCBIVE1MSW1hZ2VFbGVtZW50OjpyZW1vdmVkRnJvbUFu
Y2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2QKICAgICAgICAgc2V0
UGljdHVyZUVsZW1lbnQobnVsbHB0cik7CiAKICAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVj
dGVkRnJvbURvY3VtZW50KQotICAgICAgICB1cGRhdGVFZGl0YWJsZUltYWdlKElzQ29ubmVjdGVk
VG9Eb2N1bWVudDo6Tm8pOworICAgICAgICB1cGRhdGVFZGl0YWJsZUltYWdlKCk7CiAKICAgICBt
X2Zvcm0gPSBudWxscHRyOwogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJl
bW92YWxUeXBlLCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKIH0KIAorYm9vbCBIVE1MSW1hZ2VF
bGVtZW50OjpoYXNFZGl0YWJsZUltYWdlQXR0cmlidXRlKCkgY29uc3QKK3sKKyAgICBpZiAoIWRv
Y3VtZW50KCkuc2V0dGluZ3MoKS5lZGl0YWJsZUltYWdlc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHhfYXBwbGVfZWRpdGFibGVfaW1hZ2VBdHRyKTsKK30KKwogR3JhcGhpY3NMYXllcjo6RW1iZWRk
ZWRWaWV3SUQgSFRNTEltYWdlRWxlbWVudDo6ZWRpdGFibGVJbWFnZVZpZXdJRCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2VkaXRhYmxlSW1hZ2UpCkBAIC0zODEsNyArMzk0LDcgQEAgR3JhcGhpY3NM
YXllcjo6RW1iZWRkZWRWaWV3SUQgSFRNTEltYWdlRWxlbWVudDo6ZWRpdGFibGVJbWFnZVZpZXdJ
RCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZWRpdGFibGVJbWFnZS0+ZW1iZWRkZWRWaWV3SUQoKTsK
IH0KIAotdm9pZCBIVE1MSW1hZ2VFbGVtZW50Ojp1cGRhdGVFZGl0YWJsZUltYWdlKElzQ29ubmVj
dGVkVG9Eb2N1bWVudCBjb25uZWN0ZWQpCit2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnVwZGF0ZUVk
aXRhYmxlSW1hZ2UoKQogewogICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLmVkaXRhYmxl
SW1hZ2VzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0zOTAsOSArNDAzLDkgQEAgdm9p
ZCBIVE1MSW1hZ2VFbGVtZW50Ojp1cGRhdGVFZGl0YWJsZUltYWdlKElzQ29ubmVjdGVkVG9Eb2N1
bWVudCBjb25uZWN0ZWQpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBi
b29sIGhhc0VkaXRhYmxlQXR0cmlidXRlID0gaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbih4X2FwcGxlX2VkaXRhYmxlX2ltYWdlQXR0cik7CisgICAgYm9vbCBoYXNFZGl0YWJsZUF0
dHJpYnV0ZSA9IGhhc0VkaXRhYmxlSW1hZ2VBdHRyaWJ1dGUoKTsKICAgICBib29sIGlzQ3VycmVu
dGx5RWRpdGFibGUgPSAhIW1fZWRpdGFibGVJbWFnZTsKLSAgICBib29sIHNob3VsZEJlRWRpdGFi
bGUgPSAoY29ubmVjdGVkID09IElzQ29ubmVjdGVkVG9Eb2N1bWVudDo6WWVzKSAmJiBoYXNFZGl0
YWJsZUF0dHJpYnV0ZTsKKyAgICBib29sIHNob3VsZEJlRWRpdGFibGUgPSBpc0Nvbm5lY3RlZCgp
ICYmIGhhc0VkaXRhYmxlQXR0cmlidXRlOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKICAgICAvLyBDcmVhdGUgdGhlIGlubmVyIGF0dGFjaG1lbnQgZm9yIGVkaXRhYmxlIGltYWdl
cywgb3Igbm9uLWVkaXRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmlu
ZGV4IDRhNDAwNTc1YzQwOGIxY2JhMmNiOTFkYWM5MzQzYWU0NTM3N2JkMmQuLjEzNTdmOTAzNWVl
NmMyNjJjMTI2N2E0OTBmMTI3MjEyNTFiOGI2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElt
YWdlRWxlbWVudC5oCkBAIC0xMTYsNiArMTE2LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBH
cmFwaGljc0xheWVyOjpFbWJlZGRlZFZpZXdJRCBlZGl0YWJsZUltYWdlVmlld0lEKCkgY29uc3Q7
CisgICAgYm9vbCBoYXNFZGl0YWJsZUltYWdlQXR0cmlidXRlKCkgY29uc3Q7CiAKIHByb3RlY3Rl
ZDoKICAgICBIVE1MSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYs
IEhUTUxGb3JtRWxlbWVudCogPSAwKTsKQEAgLTE0Miw2ICsxNDMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIEluc2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50
b0FuY2VzdG9yKEluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZEZpbmlzaEluc2VydGluZ05vZGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZWRG
cm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgaXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQpAQCAtMTUzLDggKzE1NSw3IEBAIHByaXZhdGU6CiAKICAgICBJbWFnZUNhbmRpZGF0ZSBi
ZXN0Rml0U291cmNlRnJvbVBpY3R1cmVFbGVtZW50KCk7CiAKLSAgICBlbnVtIGNsYXNzIElzQ29u
bmVjdGVkVG9Eb2N1bWVudCA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgdm9pZCB1cGRhdGVFZGl0
YWJsZUltYWdlKElzQ29ubmVjdGVkVG9Eb2N1bWVudCk7CisgICAgdm9pZCB1cGRhdGVFZGl0YWJs
ZUltYWdlKCk7CiAKICAgICB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1l
bnQoY29uc3QgRWxlbWVudCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAppbmRleCBjMmQwNTliMTUyYzVjYjljOTYzN2JlNmU3ZDc2YzZhMjgxNDljMGJk
Li4wNTcyYmZhYWMyZjExNTc3ODRjMjY3MmNlYTRjMjA1MDY0ZjJmOTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTIxNCwxMyArMjE0LDkgQEAgSW1hZ2VT
aXplQ2hhbmdlVHlwZSBSZW5kZXJJbWFnZTo6c2V0SW1hZ2VTaXplRm9yQWx0VGV4dChDYWNoZWRJ
bWFnZSogbmV3SW1hZ2UgLyoKIAogYm9vbCBSZW5kZXJJbWFnZTo6aXNFZGl0YWJsZUltYWdlKCkg
Y29uc3QKIHsKLSAgICBpZiAoIXNldHRpbmdzKCkuZWRpdGFibGVJbWFnZXNFbmFibGVkKCkpCisg
ICAgaWYgKCFlbGVtZW50KCkgfHwgIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGVsZW1lbnQoKSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWxlbWVudCgpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gZWxlbWVudCgpLT5oYXNBdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKHhfYXBwbGVfZWRpdGFibGVfaW1hZ2VBdHRyKTsKKyAgICByZXR1cm4gZG93
bmNhc3Q8SFRNTEltYWdlRWxlbWVudD4oZWxlbWVudCgpKS0+aGFzRWRpdGFibGVJbWFnZUF0dHJp
YnV0ZSgpOwogfQogICAgIAogYm9vbCBSZW5kZXJJbWFnZTo6cmVxdWlyZXNMYXllcigpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvUGVuY2lsS2l0U1BJ
LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvUGVuY2lsS2l0U1BJLmgKaW5kZXgg
MDBhMWU3NTI1YjVlYmYxMWE5NzdkMTgxNGZiYjU0ODJkY2ZiZTRmZi4uZWU5Nzk2YjI3NDlmNDgw
YWE4NjlmZjM3ZWZmYjA1NzhiNDAyNDdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9zcGkvaW9zL1BlbmNpbEtpdFNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
c3BpL2lvcy9QZW5jaWxLaXRTUEkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCiAKICNpbXBvcnQgPFBlbmNpbEtpdC9QZW5jaWxLaXQuaD4KKyNpbXBvcnQg
PFBlbmNpbEtpdC9QS0RyYXdpbmdfUHJpdmF0ZS5oPgogCiAjZWxzZQogCkBAIC0zNyw2ICszOCwx
MiBAQAogCiBAZW5kCiAKK0BpbnRlcmZhY2UgUEtEcmF3aW5nIDogTlNPYmplY3QKKworLSAoTlNE
YXRhICopc2VyaWFsaXplOworCitAZW5kCisKICNlbmRpZgogCiAjZW5kaWYgLy8gSEFWRShQRU5D
SUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAK
aW5kZXggYTEzNGJmYWY2MzVhYmI0NDU3OTM3OTM2NDMxNGE4MDJlMjQ3MjBlNi4uY2Y0YzYyZTc5
Mjc5ZmViMGNlYmQyMWQwM2I0M2JmZDkwMTZkZDcyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtNTUsNiArNTUsMTEgQEAgdm9pZCBBdHRh
Y2htZW50Ojp1cGRhdGVBdHRyaWJ1dGVzKEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG1fd2ViUGFn
ZS0+d2lsbFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKCp0aGlzKSA9PSBXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6U2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXM6Ok5vKSB7CisgICAgICAg
IGNhbGxiYWNrKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKICAgICBtX3dlYlBhZ2UtPnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVz
KCp0aGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDA4MjdiMDIyNzNmOTA2ZTczYzdlZmUxOTk5NzViYWE5ZGM2
Y2M2ZjAuLjYwMWRjZDEyZjRjOTkxMzJhMmYxYmViMjNkNDkzOTY1Yzc0ZDJkNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODA5OSw2ICs4MDk5LDE1IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXJpYWxpemVkQXR0YWNobWVudERhdGFGb3JJZGVudGlmaWVy
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICAgICB9CiB9CiAKK1dlYlBhZ2VQcm94eTo6U2hvdWxk
VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMgV2ViUGFnZVByb3h5Ojp3aWxsVXBkYXRlQXR0YWNo
bWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50KQoreworI2lm
IEhBVkUoUEVOQ0lMS0lUKQorICAgIHJldHVybiBtX2VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLT53
aWxsVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudCk7CisjZWxzZQorICAgIHJl
dHVybiBTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlczo6WWVzOworI2VuZGlmCit9CisK
ICNpZiAhUExBVEZPUk0oQ09DT0EpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybVJlZ2lz
dGVyQXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCBjMTIyYWY1M2Y1MDMyZmExNWFhMWNiNTdjNDcwZmE5MzcxNDI3Y2JjLi4zMmU5ZjVk
MTRkYzk3MWQ3YTAzNzBkYzgzODFlNjA4YmJiODM4YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMTM3MCw2ICsxMzcwLDkgQEAgcHVibGljOgogICAgIHZvaWQg
dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpBdHRhY2htZW50JiwgRnVuY3Rp
b248dm9pZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBzZXJpYWxpemVkQXR0
YWNobWVudERhdGFGb3JJZGVudGlmaWVycyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFZlY3RvcjxX
ZWJDb3JlOjpTZXJpYWxpemVkQXR0YWNobWVudERhdGE+Jik7CiAgICAgdm9pZCByZWdpc3RlckF0
dGFjaG1lbnRJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOworCisgICAgZW51bSBjbGFzcyBTaG91
bGRVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyA6IGJvb2wgeyBObywgWWVzIH07CisgICAgU2hv
dWxkVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMgd2lsbFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1
dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTElD
QVRJT05fTUFOSUZFU1QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
RWRpdGFibGVJbWFnZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9F
ZGl0YWJsZUltYWdlQ29udHJvbGxlci5oCmluZGV4IGFhOWU2Yzg5Zjk5MWIyOTJlOTBmMjIyMjdk
YmExNjNiNDQ3OTkwMGEuLmJiZjkzYzIwMjg2ZWU2YzY2MjhhNzE4MmJhZWQ0NTJmMmJjOGY3NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdl
Q29udHJvbGxlci5oCkBAIC0yNyw3ICsyNyw5IEBACiAKICNpZiBIQVZFKFBFTkNJTEtJVCkKIAor
I2luY2x1ZGUgIkFQSUF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvV2Vha09i
akNQdHIuaD4KQEAgLTM4LDggKzQwLDYgQEAgT0JKQ19DTEFTUyBXS0RyYXdpbmdWaWV3OwogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViUGFnZVByb3h5OwotCiBzdHJ1Y3QgRWRpdGFi
bGVJbWFnZSB7CiAgICAgUmV0YWluUHRyPFdLRHJhd2luZ1ZpZXc+IGRyYXdpbmdWaWV3OwogICAg
IFN0cmluZyBhdHRhY2htZW50SUQ7CkBAIC01OSwxMiArNTksMTYgQEAgcHVibGljOgogCiAgICAg
dm9pZCBpbnZhbGlkYXRlQXR0YWNobWVudEZvckVkaXRhYmxlSW1hZ2UoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6RW1iZWRkZWRWaWV3SUQpOwogCisgICAgV2ViUGFnZVByb3h5OjpTaG91bGRVcGRh
dGVBdHRhY2htZW50QXR0cmlidXRlcyB3aWxsVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29u
c3QgQVBJOjpBdHRhY2htZW50Jik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDcmVhdGVFZGl0
YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVkZGVkVmlld0lEKTsKICAgICB2
b2lkIGRpZERlc3Ryb3lFZGl0YWJsZUltYWdlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lEKTsKIAogICAgIHZvaWQgYXNzb2NpYXRlV2l0aEF0dGFjaG1lbnQoV2ViQ29yZTo6
R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQsIGNvbnN0IFN0cmluZyYgYXR0YWNobWVudElE
KTsKIAorICAgIHZvaWQgbG9hZFN0cm9rZXNGcm9tQXR0YWNobWVudChFZGl0YWJsZUltYWdlJiwg
Y29uc3QgQVBJOjpBdHRhY2htZW50Jik7CisKICAgICBXZWFrUHRyPFdlYlBhZ2VQcm94eT4gbV93
ZWJQYWdlUHJveHk7CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtYmVk
ZGVkVmlld0lELCBzdGQ6OnVuaXF1ZV9wdHI8RWRpdGFibGVJbWFnZT4+IG1fZWRpdGFibGVJbWFn
ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvRWRpdGFibGVJbWFn
ZUNvbnRyb2xsZXIubW0KaW5kZXggNTBhNTRkMjI1NGIyNmFkMTNlOGJjZDE3MmZkNDEwNTU4OWU4
MDI2OC4uMmU1MWUzMTBjYzBiODQ4OWRhYjZhMGJhYzNkZTcyNTI3YmIzNGViMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL0VkaXRhYmxlSW1hZ2VDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9FZGl0YWJsZUltYWdlQ29udHJvbGxl
ci5tbQpAQCAtOTIsMTYgKzkyLDMxIEBAIHZvaWQgRWRpdGFibGVJbWFnZUNvbnRyb2xsZXI6OmFz
c29jaWF0ZVdpdGhBdHRhY2htZW50KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkVtCiAgICAgYXV0
byYgZWRpdGFibGVJbWFnZSA9IGVuc3VyZUVkaXRhYmxlSW1hZ2UoZW1iZWRkZWRWaWV3SUQpOwog
ICAgIFdlYWtPYmpDUHRyPFdLRHJhd2luZ1ZpZXc+IGRyYXdpbmdWaWV3ID0gZWRpdGFibGVJbWFn
ZS5kcmF3aW5nVmlldy5nZXQoKTsKICAgICBlZGl0YWJsZUltYWdlLmF0dGFjaG1lbnRJRCA9IGF0
dGFjaG1lbnRJRDsKKworICAgIGxvYWRTdHJva2VzRnJvbUF0dGFjaG1lbnQoZWRpdGFibGVJbWFn
ZSwgYXR0YWNobWVudCk7CisKICAgICBhdHRhY2htZW50LnNldEZpbGVXcmFwcGVyR2VuZXJhdG9y
KFtkcmF3aW5nVmlld10oKSAtPiBSZXRhaW5QdHI8TlNGaWxlV3JhcHBlcj4gewogICAgICAgICBp
ZiAoIWRyYXdpbmdWaWV3KQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgUmV0YWlu
UHRyPE5TRmlsZVdyYXBwZXI+IGZpbGVXcmFwcGVyID0gYWRvcHROUyhbW05TRmlsZVdyYXBwZXIg
YWxsb2NdIGluaXRSZWd1bGFyRmlsZVdpdGhDb250ZW50czpbZHJhd2luZ1ZpZXcgUE5HUmVwcmVz
ZW50YXRpb25dXSk7CisgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtkcmF3aW5nVmlldyBQTkdSZXBy
ZXNlbnRhdGlvbl07CisgICAgICAgIGlmICghZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7
CisgICAgICAgIFJldGFpblB0cjxOU0ZpbGVXcmFwcGVyPiBmaWxlV3JhcHBlciA9IGFkb3B0TlMo
W1tOU0ZpbGVXcmFwcGVyIGFsbG9jXSBpbml0UmVndWxhckZpbGVXaXRoQ29udGVudHM6ZGF0YV0p
OwogICAgICAgICBbZmlsZVdyYXBwZXIgc2V0UHJlZmVycmVkRmlsZW5hbWU6QCJkcmF3aW5nLnBu
ZyJdOwogICAgICAgICByZXR1cm4gZmlsZVdyYXBwZXI7CiAgICAgfSk7CiAgICAgYXR0YWNobWVu
dC5zZXRDb250ZW50VHlwZSgicHVibGljLnBuZyIpOwogfQogCit2b2lkIEVkaXRhYmxlSW1hZ2VD
b250cm9sbGVyOjpsb2FkU3Ryb2tlc0Zyb21BdHRhY2htZW50KEVkaXRhYmxlSW1hZ2UmIGVkaXRh
YmxlSW1hZ2UsIGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCkKK3sKKyAgICBBU1NF
UlQoYXR0YWNobWVudC5pZGVudGlmaWVyKCkgPT0gZWRpdGFibGVJbWFnZS5hdHRhY2htZW50SUQp
OworICAgIE5TRmlsZVdyYXBwZXIgKmZpbGVXcmFwcGVyID0gYXR0YWNobWVudC5maWxlV3JhcHBl
cigpOworICAgIGlmICghZmlsZVdyYXBwZXIuaXNSZWd1bGFyRmlsZSkKKyAgICAgICAgcmV0dXJu
OworICAgIFtlZGl0YWJsZUltYWdlLmRyYXdpbmdWaWV3IGxvYWREcmF3aW5nRnJvbVBOR1JlcHJl
c2VudGF0aW9uOmZpbGVXcmFwcGVyLnJlZ3VsYXJGaWxlQ29udGVudHNdOworfQorCiB2b2lkIEVk
aXRhYmxlSW1hZ2VDb250cm9sbGVyOjppbnZhbGlkYXRlQXR0YWNobWVudEZvckVkaXRhYmxlSW1h
Z2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6RW1iZWRkZWRWaWV3SUQgZW1iZWRkZWRWaWV3SUQp
CiB7CiAgICAgaWYgKCFtX3dlYlBhZ2VQcm94eSkKQEAgLTExOSw2ICsxMzQsMTkgQEAgdm9pZCBF
ZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6aW52YWxpZGF0ZUF0dGFjaG1lbnRGb3JFZGl0YWJsZUlt
YWdlKFdlYkNvcmU6OkdyYXAKICAgICBhdHRhY2htZW50LT5pbnZhbGlkYXRlR2VuZXJhdGVkRmls
ZVdyYXBwZXIoKTsKIH0KIAorV2ViUGFnZVByb3h5OjpTaG91bGRVcGRhdGVBdHRhY2htZW50QXR0
cmlidXRlcyBFZGl0YWJsZUltYWdlQ29udHJvbGxlcjo6d2lsbFVwZGF0ZUF0dGFjaG1lbnRBdHRy
aWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCkKK3sKKyAgICBmb3IgKGF1
dG8mIGVkaXRhYmxlSW1hZ2UgOiBtX2VkaXRhYmxlSW1hZ2VzLnZhbHVlcygpKSB7CisgICAgICAg
IGlmIChlZGl0YWJsZUltYWdlLT5hdHRhY2htZW50SUQgIT0gYXR0YWNobWVudC5pZGVudGlmaWVy
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBsb2FkU3Ryb2tlc0Zyb21BdHRh
Y2htZW50KCplZGl0YWJsZUltYWdlLCBhdHRhY2htZW50KTsKKyAgICAgICAgcmV0dXJuIFdlYlBh
Z2VQcm94eTo6U2hvdWxkVXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXM6Ok5vOworICAgIH0KKwor
ICAgIHJldHVybiBXZWJQYWdlUHJveHk6OlNob3VsZFVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVz
OjpZZXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gSEFWRShQRU5D
SUxLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5n
Vmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLRHJhd2luZ1ZpZXcuaAppbmRl
eCAzZjQ4YmNhMDJjN2U0OTI5OWMxNDg0M2U2MTg0NzhkN2ZkNzQ1NjViLi44NmIyMzFhNTQzZTYx
MDVlZjg5NjFmOWZlNWUxZDUzOGE5Zjk0M2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0RyYXdpbmdWaWV3LmgKQEAgLTMzLDYgKzMzLDcgQEAKIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEVtYmVkZGVkVmlld0lEOihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpFbWJlZGRlZFZp
ZXdJRCllbWJlZGRlZFZpZXdJRCB3ZWJQYWdlUHJveHk6KFdlYktpdDo6V2ViUGFnZVByb3h5Jil3
ZWJQYWdlUHJveHk7CiAKIC0gKE5TRGF0YSAqKVBOR1JlcHJlc2VudGF0aW9uOworLSAodm9pZCls
b2FkRHJhd2luZ0Zyb21QTkdSZXByZXNlbnRhdGlvbjooTlNEYXRhICopUE5HRGF0YTsKIAogQGVu
ZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tEcmF3aW5nVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1tCmluZGV4
IDcwZjNhZTcyYWM3ZDdhMzdjOWFiZjFhN2FkMTM3MDA5MDBmODNhNzIuLjRlYTc3ZTcwZWJkZTMx
ZWE5OTQ1ZTM0ZjZhYjIxYzM3NGE1ZTY2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0RyYXdpbmdWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0RyYXdpbmdWaWV3Lm1tCkBAIC0zNSw2ICszNSw3IEBACiAKIFNPRlRfTElOS19QUklW
QVRFX0ZSQU1FV09SSyhQZW5jaWxLaXQpOwogU09GVF9MSU5LX0NMQVNTKFBlbmNpbEtpdCwgUEtD
YW52YXNWaWV3KTsKK1NPRlRfTElOS19DTEFTUyhQZW5jaWxLaXQsIFBLRHJhd2luZyk7CiBTT0ZU
X0xJTktfQ0xBU1MoUGVuY2lsS2l0LCBQS0ltYWdlUmVuZGVyZXIpOwogCiBAaW50ZXJmYWNlIFdL
RHJhd2luZ1ZpZXcgKCkgPFBLQ2FudmFzVmlld0RlbGVnYXRlPgpAQCAtNzcsMzEgKzc4LDgzIEBA
IC0gKHZvaWQpbGF5b3V0U3Vidmlld3MKICAgICAgICAgLy8gVGhlIHJlbmRlcmVyIGlzIGluc3Rh
bnRpYXRlZCBmb3IgYSBwYXJ0aWN1bGFyIHNpemUgb3V0cHV0OyBpZgogICAgICAgICAvLyB0aGUg
c2l6ZSBjaGFuZ2VzLCB3ZSBuZWVkIHRvIHJlLWNyZWF0ZSB0aGUgcmVuZGVyZXIuCiAgICAgICAg
IF9yZW5kZXJlciA9IG5pbDsKKworICAgICAgICBbc2VsZiBpbnZhbGlkYXRlQXR0YWNobWVudF07
CiAgICAgfQogfQogCiAtIChOU0RhdGEgKilQTkdSZXByZXNlbnRhdGlvbgogeworICAgIGlmICgh
c2VsZi5ib3VuZHMuc2l6ZS53aWR0aCB8fCAhc2VsZi5ib3VuZHMuc2l6ZS5oZWlnaHQgfHwgIXNl
bGYud2luZG93LnNjcmVlbi5zY2FsZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIGlmICgh
X3JlbmRlclF1ZXVlKQogICAgICAgICBfcmVuZGVyUXVldWUgPSBhZG9wdE9TT2JqZWN0KGRpc3Bh
dGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XS0RyYXdpbmdWaWV3LlJlbmRlcmlu
ZyIsIERJU1BBVENIX1FVRVVFX1NFUklBTCkpOwogCiAgICAgaWYgKCFfcmVuZGVyZXIpCiAgICAg
ICAgIF9yZW5kZXJlciA9IGFkb3B0TlMoW2FsbG9jUEtJbWFnZVJlbmRlcmVySW5zdGFuY2UoKSBp
bml0V2l0aFNpemU6c2VsZi5ib3VuZHMuc2l6ZSBzY2FsZTpzZWxmLndpbmRvdy5zY3JlZW4uc2Nh
bGUgcmVuZGVyUXVldWU6X3JlbmRlclF1ZXVlLmdldCgpXSk7CiAKKyAgICBhdXRvKiBkcmF3aW5n
ID0gW19wZW5jaWxWaWV3IGRyYXdpbmddOworCiAgICAgX19ibG9jayBSZXRhaW5QdHI8VUlJbWFn
ZT4gcmVzdWx0SW1hZ2U7Ci0gICAgW19yZW5kZXJlciByZW5kZXJEcmF3aW5nOltfcGVuY2lsVmll
dyBkcmF3aW5nXSBjb21wbGV0aW9uOl4oVUlJbWFnZSAqaW1hZ2UpIHsKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZX1NJTVVMQVRPUikKKyAgICAvLyBQS0ltYWdlUmVuZGVyZXIgY3VycmVudGx5IGRv
ZXNuJ3Qgd29yayBpbiB0aGUgc2ltdWxhdG9yLiBJbiBvcmRlciB0bworICAgIC8vIGFsbG93IHN0
cm9rZXMgdG8gcGVyc2lzdCByZWdhcmRsZXNzIChtb3N0bHkgZm9yIHRlc3RpbmcpLCB3ZSdsbAor
ICAgIC8vIHN5bnRoZXNpemUgYW4gZW1wdHkgMXgxIGltYWdlLgorICAgIFVJR3JhcGhpY3NCZWdp
bkltYWdlQ29udGV4dChDR1NpemVNYWtlKDEsIDEpKTsKKyAgICBDR0NvbnRleHRDbGVhclJlY3Qo
VUlHcmFwaGljc0dldEN1cnJlbnRDb250ZXh0KCksIENHUmVjdE1ha2UoMCwgMCwgMSwgMSkpOwor
ICAgIHJlc3VsdEltYWdlID0gVUlHcmFwaGljc0dldEltYWdlRnJvbUN1cnJlbnRJbWFnZUNvbnRl
eHQoKTsKKyAgICBVSUdyYXBoaWNzRW5kSW1hZ2VDb250ZXh0KCk7CisjZWxzZQorICAgIFtfcmVu
ZGVyZXIgcmVuZGVyRHJhd2luZzpkcmF3aW5nIGNvbXBsZXRpb246XihVSUltYWdlICppbWFnZSkg
ewogICAgICAgICByZXN1bHRJbWFnZSA9IGltYWdlOwogICAgIH1dOworI2VuZGlmCiAKICAgICAv
LyBGSVhNRTogSWRlYWxseSB3ZSB3b3VsZCBub3Qgc3luY2hyb25vdXNseSB3YWl0IGZvciB0aGlz
IHJlbmRlcmluZywKICAgICAvLyBidXQgTlNGaWxlV3JhcHBlciByZXF1aXJlcyBkYXRhIHN5bmNo
cm9ub3VzbHksIGFuZCBvdXIgY2xpZW50cyBleHBlY3QKICAgICAvLyBhbiBOU0ZpbGVXcmFwcGVy
IHRvIGJlIGF2YWlsYWJsZSBzeW5jaHJvbm91c2x5LgogICAgIGRpc3BhdGNoX3N5bmMoX3JlbmRl
clF1ZXVlLmdldCgpLCBeeyB9KTsKIAotICAgIHJldHVybiBVSUltYWdlUE5HUmVwcmVzZW50YXRp
b24ocmVzdWx0SW1hZ2UuZ2V0KCkpOworICAgIFJldGFpblB0cjxOU011dGFibGVEYXRhPiBQTkdE
YXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5Q
dHI8Q0dJbWFnZURlc3RpbmF0aW9uUmVmPiBpbWFnZURlc3RpbmF0aW9uID0gYWRvcHRDRihDR0lt
YWdlRGVzdGluYXRpb25DcmVhdGVXaXRoRGF0YSgoX19icmlkZ2UgQ0ZNdXRhYmxlRGF0YVJlZilQ
TkdEYXRhLmdldCgpLCBrVVRUeXBlUE5HLCAxLCBuaWwpKTsKKyAgICBOU1N0cmluZyAqYmFzZTY0
RHJhd2luZyA9IFtbZHJhd2luZyBzZXJpYWxpemVdIGJhc2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0
aW9uczowXTsKKyAgICBOU0RpY3Rpb25hcnkgKnByb3BlcnRpZXMgPSBuaWw7CisgICAgaWYgKGJh
c2U2NERyYXdpbmcpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwdXQgdGhpcyBzb21l
d2hlcmUgbGVzcyB1c2VyLWZhY2luZyB0aGFuIHRoZSBFWElGIFVzZXIgQ29tbWVudCBmaWVsZC4K
KyAgICAgICAgcHJvcGVydGllcyA9IEB7CisgICAgICAgICAgICAoX19icmlkZ2UgTlNTdHJpbmcg
KilrQ0dJbWFnZVByb3BlcnR5RXhpZkRpY3Rpb25hcnkgOiBAeworICAgICAgICAgICAgICAgIChf
X2JyaWRnZSBOU1N0cmluZyAqKWtDR0ltYWdlUHJvcGVydHlFeGlmVXNlckNvbW1lbnQgOiBiYXNl
NjREcmF3aW5nCisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIENHSW1hZ2VE
ZXN0aW5hdGlvblNldFByb3BlcnRpZXMoaW1hZ2VEZXN0aW5hdGlvbi5nZXQoKSwgKF9fYnJpZGdl
IENGRGljdGlvbmFyeVJlZilwcm9wZXJ0aWVzKTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJ
bWFnZShpbWFnZURlc3RpbmF0aW9uLmdldCgpLCBbcmVzdWx0SW1hZ2UgQ0dJbWFnZV0sIChfX2Jy
aWRnZSBDRkRpY3Rpb25hcnlSZWYpcHJvcGVydGllcyk7CisgICAgQ0dJbWFnZURlc3RpbmF0aW9u
RmluYWxpemUoaW1hZ2VEZXN0aW5hdGlvbi5nZXQoKSk7CisKKyAgICByZXR1cm4gUE5HRGF0YS5h
dXRvcmVsZWFzZSgpOworfQorCistICh2b2lkKWxvYWREcmF3aW5nRnJvbVBOR1JlcHJlc2VudGF0
aW9uOihOU0RhdGEgKilQTkdEYXRhCit7CisgICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+
IGltYWdlU291cmNlID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlV2l0aERhdGEoKF9fYnJp
ZGdlIENGRGF0YVJlZilQTkdEYXRhLCBudWxscHRyKSk7CisgICAgaWYgKCFpbWFnZVNvdXJjZSkK
KyAgICAgICAgcmV0dXJuOworICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHByb3BlcnRpZXMg
PSBhZG9wdE5TKChfX2JyaWRnZSBOU0RpY3Rpb25hcnkgKilDR0ltYWdlU291cmNlQ29weVByb3Bl
cnRpZXNBdEluZGV4KGltYWdlU291cmNlLmdldCgpLCAwLCBuaWwpKTsKKyAgICBOU1N0cmluZyAq
YmFzZTY0RHJhd2luZyA9IFtbcHJvcGVydGllcyBvYmplY3RGb3JLZXk6KE5TU3RyaW5nICopa0NH
SW1hZ2VQcm9wZXJ0eUV4aWZEaWN0aW9uYXJ5XSBvYmplY3RGb3JLZXk6KE5TU3RyaW5nICopa0NH
SW1hZ2VQcm9wZXJ0eUV4aWZVc2VyQ29tbWVudF07CisgICAgaWYgKCFiYXNlNjREcmF3aW5nKQor
ICAgICAgICByZXR1cm47CisgICAgUmV0YWluUHRyPE5TRGF0YT4gZHJhd2luZ0RhdGEgPSBhZG9w
dE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6YmFzZTY0RHJh
d2luZyBvcHRpb25zOjBdKTsKKyAgICBSZXRhaW5QdHI8UEtEcmF3aW5nPiBkcmF3aW5nID0gYWRv
cHROUyhbYWxsb2NQS0RyYXdpbmdJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkcmF3aW5nRGF0YS5n
ZXQoKSBlcnJvcjpuaWxdKTsKKyAgICBbX3BlbmNpbFZpZXcgc2V0RHJhd2luZzpkcmF3aW5nLmdl
dCgpXTsKIH0KIAogLSAodm9pZClkcmF3aW5nRGlkQ2hhbmdlOihQS0NhbnZhc1ZpZXcgKiljYW52
YXNWaWV3Cit7CisgICAgW3NlbGYgaW52YWxpZGF0ZUF0dGFjaG1lbnRdOworfQorCistICh2b2lk
KWludmFsaWRhdGVBdHRhY2htZW50CiB7CiAgICAgaWYgKCFfd2ViUGFnZVByb3h5KQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNGM2MTY0ZThmOGMwYzdhYjdhNDNmZmQ3ZTQ0YjUwNGQzOGIxMzU4
MS4uOGNmY2FkYTZkYjBiOTM0NjA4YmE0ZGUzOGFiZTk4MmEyMDBmNDg5ZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDE4LTExLTI3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgorCisgICAgICAgIFNlcmlhbGl6ZSBhbmQgZGVzZXJpYWxpemUgZWRpdGFibGUgaW1hZ2Ug
c3Ryb2tlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyMDAyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDkwMDE0OT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy9wYXN0ZS1l
ZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW1h
Z2VzL3Bhc3RlLWVkaXRhYmxlLWltYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgYSB0ZXN0
IHRoYXQgd2UgY2FuIGNvcHkgYW5kIHBhc3RlIGFuZCBlZGl0YWJsZSBpbWFnZSBhbmQKKyAgICAg
ICAgY29udGludWUgdG8gZWRpdCBpdCwgYW5kIGFyZSBhZmZlY3RpbmcgYSBkaWZmZXJlbnQgYXR0
YWNobWVudCB0aGFuIHRoZSBvcmlnaW5hbC4KKwogMjAxOC0xMS0yNiAgUnlhbiBIYWRkYWQgIDxy
eWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjM4MzU3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcGFzdGUtZWRp
dGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcGFz
dGUtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxZGY4NjFiMjA3NGFh
N2Q3ZDJmMmY1NmNmMGM3NjdhNjM5Y2VlMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL2ltYWdlcy9wYXN0ZS1lZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw2IEBACitIYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy4K
K0hhZCAxIHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBjb3B5aW5nIGFuZCBwYXN0aW5n
LgorSGFkIDIgc3Ryb2tlcyBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nIG9uIHBhc3Rl
ZCBpbWFnZS4KK1Bhc3RlZCBpbWFnZSBnb3QgYSBuZXcgYXR0YWNobWVudCBJRDogeWVzLgorCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3Bhc3RlLWVkaXRhYmxlLWlt
YWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9wYXN0ZS1lZGl0YWJsZS1pbWFn
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZjMjY2ZGVhMzM4Y2YwYTM2ZDU0YjhhYTg0ZDZiOTRhZDQzNmI5
ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9wYXN0ZS1l
ZGl0YWJsZS1pbWFnZS5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBlbmFibGVBdHRh
Y2htZW50RWxlbWVudD10cnVlIF0gLS0+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+
IHsKKyAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworCisg
ICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworCisgICAgc2VsZWN0
aW9uLnNldFBvc2l0aW9uKGRpdiwgMCk7CisgICAgdGVzdFJ1bm5lci5leGVjQ29tbWFuZCgiSW5z
ZXJ0RWRpdGFibGVJbWFnZSIpOworCisgICAgYXdhaXQgVUlIZWxwZXIuZHJhd1NxdWFyZUluRWRp
dGFibGVJbWFnZSgpOworICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFm
dGVyRHJhd2luZyA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1h
Z2UoKSk7CisgICAgY29uc3QgZmlyc3RJbWFnZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImlt
ZyIpOworICAgIGNvbnN0IGluaXRpYWxBdHRhY2htZW50SUQgPSBIVE1MQXR0YWNobWVudEVsZW1l
bnQuZ2V0QXR0YWNobWVudElkZW50aWZpZXIoZmlyc3RJbWFnZSk7CisKKyAgICAvLyBXZSBuZWVk
IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBjYW52YXMgZ2V0cyBhIG5vbi16ZXJvIHNpemUgYmVmb3Jl
IHRyeWluZyB0byBzZXJpYWxpemUgaXQuCisgICAgYXdhaXQgVUlIZWxwZXIuZW5zdXJlUHJlc2Vu
dGF0aW9uVXBkYXRlKCk7CisKKyAgICBzZWxlY3Rpb24uc2V0QmFzZUFuZEV4dGVudChkaXYuZmly
c3RDaGlsZCwgMCwgZGl2LmZpcnN0Q2hpbGQsIDEpOworICAgIHRlc3RSdW5uZXIuZXhlY0NvbW1h
bmQoIkNvcHkiKTsKKworICAgIHNlbGVjdGlvbi5jb2xsYXBzZVRvRW5kKCk7CisgICAgdGVzdFJ1
bm5lci5leGVjQ29tbWFuZCgiUGFzdGUiKTsKKworICAgIGZpcnN0SW1hZ2UucGFyZW50RWxlbWVu
dC5yZW1vdmVDaGlsZChmaXJzdEltYWdlKTsKKworICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0lu
RWRpdGFibGVJbWFnZUFmdGVyUGFzdGluZyA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9r
ZXNJbkVkaXRhYmxlSW1hZ2UoKSk7CisKKyAgICBhd2FpdCBVSUhlbHBlci5kcmF3U3F1YXJlSW5F
ZGl0YWJsZUltYWdlKCk7CisgICAgY29uc3QgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdl
QWZ0ZXJTZWNvbmREcmF3aW5nID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0luRWRp
dGFibGVJbWFnZSgpKTsKKyAgICBjb25zdCBwYXN0ZWRBdHRhY2htZW50SUQgPSBIVE1MQXR0YWNo
bWVudEVsZW1lbnQuZ2V0QXR0YWNobWVudElkZW50aWZpZXIoZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigiaW1nIikpOworCisgICAgY29uc3QgYXR0YWNobWVudElEc0FyZURpZmZlcmVudCA9IChpbml0
aWFsQXR0YWNobWVudElEICE9IHBhc3RlZEF0dGFjaG1lbnRJRCkgPyAieWVzIiA6ICJubyI7CisK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJIVE1MID0gYEhhZCAke251
bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZ30gc3Ryb2tlIGluIGVkaXRh
YmxlIGltYWdlIGFmdGVyIGRyYXdpbmcuPGJyLz5IYWQgJHtudW1iZXJPZlN0cm9rZXNJbkVkaXRh
YmxlSW1hZ2VBZnRlclBhc3Rpbmd9IHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBjb3B5
aW5nIGFuZCBwYXN0aW5nLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdl
QWZ0ZXJTZWNvbmREcmF3aW5nfSBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdp
bmcgb24gcGFzdGVkIGltYWdlLjxici8+UGFzdGVkIGltYWdlIGdvdCBhIG5ldyBhdHRhY2htZW50
IElEOiAke2F0dGFjaG1lbnRJRHNBcmVEaWZmZXJlbnR9LmA7CisgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Cit9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgY29udGVudGVkaXRhYmxl
PjxkaXYgaWQ9ImxvZyI+PGJyLz48L2Rpdj48ZGl2IGlkPSJ0ZXN0Ij48YnIvPjwvZGl2PjwvYm9k
eT4K
</data>

          </attachment>
      

    </bug>

</bugzilla>