<?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>221153</bug_id>
          
          <creation_ts>2021-01-29 13:52:37 -0800</creation_ts>
          <short_desc>[iOS][FCR] Add new picker for select elements</short_desc>
          <delta_ts>2021-02-03 12:27:39 -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>Forms</component>
          <version>Other</version>
          <rep_platform>iPhone / iPad</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="Aditya Keerthi">akeerthi</reporter>
          <assigned_to name="Aditya Keerthi">akeerthi</assigned_to>
          <cc>cdumez</cc>
    
    <cc>hi</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1723864</commentid>
    <comment_count>0</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-01-29 13:52:37 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723865</commentid>
    <comment_count>1</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-01-29 13:52:56 -0800</bug_when>
    <thetext>&lt;rdar://problem/73770389&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723867</commentid>
    <comment_count>2</comment_count>
      <attachid>418768</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-01-29 13:56:01 -0800</bug_when>
    <thetext>Created attachment 418768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723883</commentid>
    <comment_count>3</comment_count>
      <attachid>418768</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-01-29 14:24:32 -0800</bug_when>
    <thetext>Comment on attachment 418768
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:8027
&gt; +    // and for select elements.

I feel like these comments are a bit silly :) (I also probably r+&apos;d them)

&gt; Source/WebKit/UIProcess/ios/forms/WKFormSelectPicker.mm:473
&gt; +@interface UIAction (IPI)
&gt; +- (void)_performActionWithSender:(id)sender;
&gt; +@end

This should be in a SPI header, no?

&gt; Source/WebKit/UIProcess/ios/forms/WKFormSelectPicker.mm:476
&gt; +    WKContentView *_view;

Should this be strong (or __weak)? What guarantees we don&apos;t outlive it (and maybe get something accidentally called on us?)?

Even worse, dealloc indirectly calls things on _view, so even just something accidentally extending our lifetime would be disastrous (and there are no guarantees with refcounted objects).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724216</commentid>
    <comment_count>4</comment_count>
      <attachid>418867</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-02-01 06:40:24 -0800</bug_when>
    <thetext>Created attachment 418867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724217</commentid>
    <comment_count>5</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-02-01 06:40:58 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #3)
&gt; Comment on attachment 418768 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418768&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:8027
&gt; &gt; +    // and for select elements.
&gt; 
&gt; I feel like these comments are a bit silly :) (I also probably r+&apos;d them)

Removed the comment.
 
&gt; &gt; Source/WebKit/UIProcess/ios/forms/WKFormSelectPicker.mm:473
&gt; &gt; +@interface UIAction (IPI)
&gt; &gt; +- (void)_performActionWithSender:(id)sender;
&gt; &gt; +@end
&gt; 
&gt; This should be in a SPI header, no?

Moved to an SPI header.
 
&gt; &gt; Source/WebKit/UIProcess/ios/forms/WKFormSelectPicker.mm:476
&gt; &gt; +    WKContentView *_view;
&gt; 
&gt; Should this be strong (or __weak)? What guarantees we don&apos;t outlive it (and
&gt; maybe get something accidentally called on us?)?
&gt; 
&gt; Even worse, dealloc indirectly calls things on _view, so even just something
&gt; accidentally extending our lifetime would be disastrous (and there are no
&gt; guarantees with refcounted objects).

Updated to use __weak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1725281</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-03 12:27:36 -0800</bug_when>
    <thetext>Committed r272334: &lt;https://trac.webkit.org/changeset/272334&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418867.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418768</attachid>
            <date>2021-01-29 13:56:01 -0800</date>
            <delta_ts>2021-02-01 06:40:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221153-20210129165605.patch</filename>
            <type>text/plain</type>
            <size>25901</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU1OGE3YTFlZGMyZTZiY2Yy
OWU5MjE3ZjIwNmNlNTIxMTJkY2ZhMWYuLmQzNmE2NjJkMzM5ODhkYWNhYzE2YTg4YjMwMTRiMjA4
NjVkYTFlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjEtMDEtMjkgIEFkaXR5YSBL
ZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW0ZDUl0gQWRkIG5l
dyBwaWNrZXIgZm9yIHNlbGVjdCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMTUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83Mzc3
MDM4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
YXBwaW5nIG9uIGEgc2VsZWN0IGVsZW1lbnQgc2hvdWxkIGRpc3BsYXkgYW4gY29udGV4dCBtZW51
IHRoYXQgYWxsb3dzCisgICAgICAgIHVzZXJzIHRvIGNob29zZSBvbmUgb2YgdGhlIHNwZWNpZmll
ZCBvcHRpb25zLiBSYXRoZXIgdGhhbiBwcmVzZW50aW5nIGEKKyAgICAgICAgVUlQaWNrZXJWaWV3
LCB0YXBwaW5nIG9uIHNlbGVjdCBlbGVtZW50cyBub3cgY3JlYXRlIFVJQ29udGV4dE1lbnVJbnRl
cmFjdGlvbnMsCisgICAgICAgIHNpbWlsYXIgdG8gZGF0ZSBhbmQgZmlsZSBpbnB1dHMuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9mb3Jtcy9pb3MvZm9ybS1jb250cm9sLXJlZnJlc2gvc2VsZWN0L2No
b29zZS1zZWxlY3Qtb3B0aW9uLmh0bWwKKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Nob3VsZFNob3dB
dXRvbWF0aWNLZXlib2FyZFVJSWdub3JpbmdJbnB1dE1vZGVdKToKKworICAgICAgICBUaGUgbmV3
IHBpY2tlciBkb2VzIG5vdCBicmluZyB1cCB0aGUga2V5Ym9hcmQgdmlldyBvbiBhbGwgZGV2aWNl
cy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9lbGVtZW50VHlwZVJlcXVpcmVzQWNjZXNz
b3J5VmlldzpdKToKKworICAgICAgICBDaGFuZ2VkIGZyb20gYSBzdGF0aWMgbWV0aG9kIHRvIGFu
IGluc3RhbmNlIG1ldGhvZCwgYXMgdGhlIHJldHVybmVkCisgICAgICAgIHZhbHVlIGRlcGVuZHMg
b24gYSBmbGFnIHdoaWNoIGlzIG9ubHkgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBpbnN0YW5jZS4K
KworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVpcmVzQWNjZXNzb3J5Vmlld10pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9mb3JtQ29udHJvbFJlZnJlc2hFbmFibGVkXSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX3Nob3VsZFNob3dLZXlib2FyZEZvckVsZW1lbnQ6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX2VsZW1lbnREaWRGb2N1czp1c2VySXNJbnRlcmFjdGlu
ZzpibHVyUHJldmlvdXNOb2RlOmFjdGl2aXR5U3RhdGVDaGFuZ2VzOnVzZXJPYmplY3Q6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX3JlbW92ZUNvbnRleHRNZW51Vmlld0lmUG9zc2libGVd
KToKKworICAgICAgICBEbyBub3QgcmVtb3ZlIHRoZSBjb250ZXh0IG1lbnUgaWYgYW4gc2VsZWN0
IGVsZW1lbnQgaXMgYWN0aXZlbHkgYmVpbmcKKyAgICAgICAgaW50ZXJhY3RlZCB3aXRoLgorCisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgc2VsZWN0Q29udHJvbF0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5tbToKKyAgICAgICAgKC1bV0tGb3Jt
U2VsZWN0Q29udHJvbCBpbml0V2l0aFZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9ybVNlbGVjdFBpY2tlci5tbToKKyAgICAgICAgKC1bV0tTZWxlY3RQaWNrZXIgaW5pdFdp
dGhWaWV3Ol0pOgorICAgICAgICAoLVtXS1NlbGVjdFBpY2tlciBjb250cm9sVmlld10pOgorICAg
ICAgICAoLVtXS1NlbGVjdFBpY2tlciBjb250cm9sQmVnaW5FZGl0aW5nXSk6CisKKyAgICAgICAg
RW5zdXJlIHRoZSBwb3NpdGlvbiBpbmZvcm1hdGlvbiBpcyB1cC10by1kYXRlIHByaW9yIHRvIHBy
ZXNlbnRpbmcgdGhlCisgICAgICAgIGNvbnRleHQgbWVudS4KKworICAgICAgICAoLVtXS1NlbGVj
dFBpY2tlciBjb250cm9sRW5kRWRpdGluZ10pOgorICAgICAgICAoLVtXS1NlbGVjdFBpY2tlciBk
ZWFsbG9jXSk6CisgICAgICAgICgtW1dLU2VsZWN0UGlja2VyIGRpZFNlbGVjdE9wdGlvbkluZGV4
Ol0pOgorICAgICAgICAoLVtXS1NlbGVjdFBpY2tlciBjcmVhdGVNZW51XSk6CisKKyAgICAgICAg
QnVpbGQgdGhlIG1lbnUgdXNpbmcgVUlBY3Rpb25zIGFuZCBVSU1lbnVzLiBTaW5jZSBvcHRncm91
cCBlbGVtZW50cworICAgICAgICBjYW5ub3QgYmUgbmVzdGVkLCBvbmx5IHRoZSByb290IFVJTWVu
dSBjYW4gY29udGFpbiBVSU1lbnVzLiBTdWJtZW51cworICAgICAgICBjYW4gb25seSBjb250YWlu
IFVJQWN0aW9ucy4KKworICAgICAgICAoLVtXS1NlbGVjdFBpY2tlciBhY3Rpb25Gb3JPcHRpb25J
dGVtOndpdGhJbmRleDpdKToKKyAgICAgICAgKC1bV0tTZWxlY3RQaWNrZXIgY29udGV4dE1lbnVJ
bnRlcmFjdGlvbjpwcmV2aWV3Rm9ySGlnaGxpZ2h0aW5nTWVudVdpdGhDb25maWd1cmF0aW9uOl0p
OgorICAgICAgICAoLVtXS1NlbGVjdFBpY2tlciBfY29udGV4dE1lbnVJbnRlcmFjdGlvbjpzdHls
ZUZvck1lbnVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tTZWxlY3RQaWNrZXIg
Y29udGV4dE1lbnVJbnRlcmFjdGlvbjpjb25maWd1cmF0aW9uRm9yTWVudUF0TG9jYXRpb246XSk6
CisgICAgICAgICgtW1dLU2VsZWN0UGlja2VyIGNvbnRleHRNZW51SW50ZXJhY3Rpb246d2lsbERp
c3BsYXlNZW51Rm9yQ29uZmlndXJhdGlvbjphbmltYXRvcjpdKToKKyAgICAgICAgKC1bV0tTZWxl
Y3RQaWNrZXIgY29udGV4dE1lbnVJbnRlcmFjdGlvbjp3aWxsRW5kRm9yQ29uZmlndXJhdGlvbjph
bmltYXRvcjpdKToKKyAgICAgICAgKC1bV0tTZWxlY3RQaWNrZXIgcmVtb3ZlQ29udGV4dE1lbnVJ
bnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS1NlbGVjdFBpY2tlciBlbnN1cmVDb250ZXh0TWVu
dUludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLU2VsZWN0UGlja2VyIHNob3dTZWxlY3RQaWNr
ZXJdKToKKyAgICAgICAgKC1bV0tTZWxlY3RQaWNrZXIgc2VsZWN0Um93OmluQ29tcG9uZW50OmV4
dGVuZGluZ1NlbGVjdGlvbjpdKToKKworICAgICAgICBJbXBsZW1lbnQgbWV0aG9kIGZvciB0ZXN0
aW5nIHNlbGVjdCBwaWNrZXJzLgorCiAyMDIxLTAxLTI1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVy
dGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBPYnNjdXJlZCBlbGVtZW50cyBzaG91bGQg
bm90IGJlIGZvY3VzYWJsZSB1c2luZyB0aGUgYWNjZXNzb3J5IGJhcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4
IDcyMTQ0ODc0MmIzYzA0Yzg1ZDNjOTQyMzRhZWEwYzU1MTUzNTk2YmYuLmQyMDQ0N2RiYWFiMzYw
MDFjNzQ3MTJlY2JjYTUwZjkzYTExODAzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTEwNyw2ICsxMDcs
NyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiBAY2xhc3MgV0tEYXRlVGltZUlucHV0Q29udHJvbDsK
IEBjbGFzcyBXS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXc7CiBAY2xhc3MgV0tGb3JtSW5wdXRTZXNz
aW9uOworQGNsYXNzIFdLRm9ybVNlbGVjdENvbnRyb2w7CiBAY2xhc3MgV0tIaWdobGlnaHRMb25n
UHJlc3NHZXN0dXJlUmVjb2duaXplcjsKIEBjbGFzcyBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXI7
CiBAY2xhc3MgV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXI7CkBAIC02NzEs
NiArNjcyLDEwIEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFS
RV9XS0NPTlRFTlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtICh2b2lkKV9zZXRNb3VzZUV2
ZW50UG9saWN5OihXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5KXBvbGljeTsKICNlbmRpZgogCisj
aWYgRU5BQkxFKElPU19GT1JNX0NPTlRST0xfUkVGUkVTSCkKKy0gKEJPT0wpX2Zvcm1Db250cm9s
UmVmcmVzaEVuYWJsZWQ7CisjZW5kaWYKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZp
ZXcgKFdLVGVzdGluZykKQEAgLTY5Miw2ICs2OTcsNyBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09O
VEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVX
KQogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqc2VsZWN0Rm9ybVBv
cG92ZXJUaXRsZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmZv
cm1JbnB1dExhYmVsOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0RhdGVUaW1l
SW5wdXRDb250cm9sICpkYXRlVGltZUlucHV0Q29udHJvbDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgV0tGb3JtU2VsZWN0Q29udHJvbCAqc2VsZWN0Q29udHJvbDsKIAogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbQppbmRleCBiMmY3YThiYWE0NTVkMDU2ZDdmZjIyMzhkYTZlYTQ5NTY1NGJk
NmE5Li45MjM3ODg0YzE4ZTlhODMxZDg1NGFjYzdhMjE4NzljN2FkMzJjNGY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KQEAgLTIwMjUsNyArMjAyNSwxMyBAQCAtIChCT09MKV9zaG91bGRTaG93QXV0b21hdGlj
S2V5Ym9hcmRVSUlnbm9yaW5nSW5wdXRNb2RlCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6
RGF0ZVRpbWVMb2NhbDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgogICAgICAg
ICByZXR1cm4gTk87Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VsZWN0OgorICAgIGNh
c2UgV2ViS2l0OjpJbnB1dFR5cGU6OlNlbGVjdDogeworI2lmIEVOQUJMRShJT1NfRk9STV9DT05U
Uk9MX1JFRlJFU0gpCisgICAgICAgIGlmIChbc2VsZiBfZm9ybUNvbnRyb2xSZWZyZXNoRW5hYmxl
ZF0pCisgICAgICAgICAgICByZXR1cm4gTk87CisjZW5kaWYKKyAgICAgICAgcmV0dXJuICFXZWJL
aXQ6OmN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZE9yTWFjKCk7CisgICAgfQogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbG9y
OgogI2VuZGlmCkBAIC0zMDY4LDcgKzMwNzQsNyBAQCAtICh2b2lkKV9kaWRFbmRTY3JvbGxpbmdP
clpvb21pbmcKICNlbmRpZgogfQogCi1zdGF0aWMgYm9vbCBlbGVtZW50VHlwZVJlcXVpcmVzQWNj
ZXNzb3J5VmlldyhXZWJLaXQ6OklucHV0VHlwZSB0eXBlKQorLSAoYm9vbClfZWxlbWVudFR5cGVS
ZXF1aXJlc0FjY2Vzc29yeVZpZXc6KFdlYktpdDo6SW5wdXRUeXBlKXR5cGUKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOb25lOgpAQCAtMzA3OCw2
ICszMDg0LDEzIEBAIHN0YXRpYyBib29sIGVsZW1lbnRUeXBlUmVxdWlyZXNBY2Nlc3NvcnlWaWV3
KFdlYktpdDo6SW5wdXRUeXBlIHR5cGUpCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TW9u
dGg6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGltZToKICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlNlbGVjdDogeworI2lmIEVOQUJMRShJ
T1NfRk9STV9DT05UUk9MX1JFRlJFU0gpCisgICAgICAgIGlmIChbc2VsZiBfZm9ybUNvbnRyb2xS
ZWZyZXNoRW5hYmxlZF0pCisgICAgICAgICAgICByZXR1cm4gTk87CisjZW5kaWYKKyAgICAgICAg
cmV0dXJuICFXZWJLaXQ6OmN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZE9yTWFjKCk7Cisg
ICAgfQogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRleHQ6CiAgICAgY2FzZSBXZWJLaXQ6
OklucHV0VHlwZTo6UGFzc3dvcmQ6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VhcmNo
OgpAQCAtMzA4OCw3ICszMTAxLDYgQEAgc3RhdGljIGJvb2wgZWxlbWVudFR5cGVSZXF1aXJlc0Fj
Y2Vzc29yeVZpZXcoV2ViS2l0OjpJbnB1dFR5cGUgdHlwZSkKICAgICBjYXNlIFdlYktpdDo6SW5w
dXRUeXBlOjpOdW1iZXJQYWQ6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29udGVudEVk
aXRhYmxlOgogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRleHRBcmVhOgotICAgIGNhc2Ug
V2ViS2l0OjpJbnB1dFR5cGU6OlNlbGVjdDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpX
ZWVrOgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIGNhc2UgV2ViS2l0OjpJbnB1
dFR5cGU6OkNvbG9yOgpAQCAtMzEwNSw3ICszMTE3LDcgQEAgLSAoQk9PTClyZXF1aXJlc0FjY2Vz
c29yeVZpZXcKICAgICBpZiAoW19mb3JtSW5wdXRTZXNzaW9uIGN1c3RvbUlucHV0QWNjZXNzb3J5
Vmlld10pCiAgICAgICAgIHJldHVybiBZRVM7CiAKLSAgICByZXR1cm4gZWxlbWVudFR5cGVSZXF1
aXJlc0FjY2Vzc29yeVZpZXcoX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUp
OworICAgIHJldHVybiBbc2VsZiBfZWxlbWVudFR5cGVSZXF1aXJlc0FjY2Vzc29yeVZpZXc6X2Zv
Y3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGVdOwogfQogCiAtIChVSVRleHRJbnB1
dEFzc2lzdGFudEl0ZW0gKilpbnB1dEFzc2lzdGFudEl0ZW0KQEAgLTU5MTMsNiArNTkyNSwxOCBA
QCAtICh2b2lkKV9oaWRlS2V5Ym9hcmQKICAgICAgICAgW3NlbGYgX3VwZGF0ZUFjY2Vzc29yeV07
CiB9CiAKKyNpZiBFTkFCTEUoSU9TX0ZPUk1fQ09OVFJPTF9SRUZSRVNIKQorCistIChCT09MKV9m
b3JtQ29udHJvbFJlZnJlc2hFbmFibGVkCit7CisgICAgaWYgKCFfcGFnZSkKKyAgICAgICAgcmV0
dXJuIE5POworCisgICAgcmV0dXJuIF9wYWdlLT5wcmVmZXJlbmNlcygpLmlPU0Zvcm1Db250cm9s
UmVmcmVzaEVuYWJsZWQoKTsKK30KKworI2VuZGlmCisKIC0gKGNvbnN0IFdlYktpdDo6Rm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbiYpZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbgogewogICAgIHJl
dHVybiBfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbjsKQEAgLTU5NTUsNyArNTk3OSw3IEBAIHN0
YXRpYyBib29sIG1heUNvbnRhaW5TZWxlY3RhYmxlVGV4dChXZWJLaXQ6OklucHV0VHlwZSB0eXBl
KQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkU2hvd0tleWJvYXJkRm9yRWxlbWVudChj
b25zdCBXZWJLaXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mIGluZm9ybWF0aW9uKQorLSAo
Ym9vbClfc2hvdWxkU2hvd0tleWJvYXJkRm9yRWxlbWVudDooY29uc3QgV2ViS2l0OjpGb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uJilpbmZvcm1hdGlvbgogewogICAgIGlmIChpbmZvcm1hdGlvbi5p
bnB1dE1vZGUgPT0gV2ViQ29yZTo6SW5wdXRNb2RlOjpOb25lKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC01OTYzLDcgKzU5ODcsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRTaG93S2V5Ym9hcmRG
b3JFbGVtZW50KGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbgogICAgIGlm
IChtYXlDb250YWluU2VsZWN0YWJsZVRleHQoaW5mb3JtYXRpb24uZWxlbWVudFR5cGUpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHJldHVybiBlbGVtZW50VHlwZVJlcXVpcmVzQWNjZXNz
b3J5VmlldyhpbmZvcm1hdGlvbi5lbGVtZW50VHlwZSk7CisgICAgcmV0dXJuIFtzZWxmIF9lbGVt
ZW50VHlwZVJlcXVpcmVzQWNjZXNzb3J5VmlldzppbmZvcm1hdGlvbi5lbGVtZW50VHlwZV07CiB9
CiAKIHN0YXRpYyBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybVBlcmlwaGVyYWw+PiBjcmVhdGVJ
bnB1dFBlcmlwaGVyYWxXaXRoVmlldyhXZWJLaXQ6OklucHV0VHlwZSB0eXBlLCBXS0NvbnRlbnRW
aWV3ICp2aWV3KQpAQCAtNTk5NCw3ICs2MDE4LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU09iamVj
dCA8V0tGb3JtUGVyaXBoZXJhbD4+IGNyZWF0ZUlucHV0UGVyaXBoZXJhbFdpdGhWaWV3KFdlYksK
IC0gKHZvaWQpX2VsZW1lbnREaWRGb2N1czooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uJilpbmZvcm1hdGlvbiB1c2VySXNJbnRlcmFjdGluZzooQk9PTCl1c2VySXNJbnRl
cmFjdGluZyBibHVyUHJldmlvdXNOb2RlOihCT09MKWJsdXJQcmV2aW91c05vZGUgYWN0aXZpdHlT
dGF0ZUNoYW5nZXM6KE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPilhY3Rp
dml0eVN0YXRlQ2hhbmdlcyB1c2VyT2JqZWN0OihOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICop
dXNlck9iamVjdAogewogICAgIFNldEZvclNjb3BlPEJPT0w+IGlzQ2hhbmdpbmdGb2N1c0ZvclNj
b3BlIHsgX2lzQ2hhbmdpbmdGb2N1cywgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQgfTsKLSAgICBT
ZXRGb3JTY29wZTxCT09MPiBpc0ZvY3VzaW5nRWxlbWVudFdpdGhLZXlib2FyZEZvclNjb3BlIHsg
X2lzRm9jdXNpbmdFbGVtZW50V2l0aEtleWJvYXJkLCBzaG91bGRTaG93S2V5Ym9hcmRGb3JFbGVt
ZW50KGluZm9ybWF0aW9uKSB9OworICAgIFNldEZvclNjb3BlPEJPT0w+IGlzRm9jdXNpbmdFbGVt
ZW50V2l0aEtleWJvYXJkRm9yU2NvcGUgeyBfaXNGb2N1c2luZ0VsZW1lbnRXaXRoS2V5Ym9hcmQs
IFtzZWxmIF9zaG91bGRTaG93S2V5Ym9hcmRGb3JFbGVtZW50OmluZm9ybWF0aW9uXSB9OwogCiAg
ICAgYXV0byBpbnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IHN0ZDo6ZXhjaGFuZ2UoX2lucHV0Vmll
d1VwZGF0ZURlZmVycmVyLCBudWxscHRyKTsKIApAQCAtNzk5Niw5ICs4MDIwLDEzIEBAIC0gKHZv
aWQpX3JlbW92ZUNvbnRleHRNZW51Vmlld0lmUG9zc2libGUKICAgICBpZiAoX2ZpbGVVcGxvYWRQ
YW5lbCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIC8vIGFuZCBmb3IgdGhlIGRhdGUvdGlt
ZSBwaWNrZXIuCisgICAgLy8gYW5kIGZvciB0aGUgZGF0ZS90aW1lIHBpY2tlci4uLgogICAgIGlm
IChbc2VsZiBkYXRlVGltZUlucHV0Q29udHJvbF0pCiAgICAgICAgIHJldHVybjsKKworICAgIC8v
IGFuZCBmb3Igc2VsZWN0IGVsZW1lbnRzLgorICAgIGlmIChbc2VsZiBzZWxlY3RDb250cm9sXSkK
KyAgICAgICAgcmV0dXJuOwogICAgIAogICAgIFtzdGQ6OmV4Y2hhbmdlKF9jb250ZXh0TWVudUhp
bnRDb250YWluZXJWaWV3LCBuaWwpIHJlbW92ZUZyb21TdXBlcnZpZXddOwogfQpAQCAtOTE3OCw2
ICs5MjA2LDEzIEBAIC0gKFdLRGF0ZVRpbWVJbnB1dENvbnRyb2wgKilkYXRlVGltZUlucHV0Q29u
dHJvbAogICAgIHJldHVybiBuaWw7CiB9CiAKKy0gKFdLRm9ybVNlbGVjdENvbnRyb2wgKilzZWxl
Y3RDb250cm9sCit7CisgICAgaWYgKFtfaW5wdXRQZXJpcGhlcmFsIGlzS2luZE9mQ2xhc3M6V0tG
b3JtU2VsZWN0Q29udHJvbC5jbGFzc10pCisgICAgICAgIHJldHVybiAoV0tGb3JtU2VsZWN0Q29u
dHJvbCAqKV9pbnB1dFBlcmlwaGVyYWwuZ2V0KCk7CisgICAgcmV0dXJuIG5pbDsKK30KKwogLSAo
dm9pZClfc2ltdWxhdGVUZXh0RW50ZXJlZDooTlNTdHJpbmcgKil0ZXh0CiB7CiAjaWYgUExBVEZP
Uk0oV0FUQ0hPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0Zvcm1TZWxlY3RDb250cm9sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRm9ybVNlbGVjdENvbnRyb2wubW0KaW5kZXggYzFhZjE2MGY3YjJiNmQxN2YyNTljOTA2
ZmY1OGM2YWMwMGViMzU0MS4uZDYxZTk2ZDlkOTIyNjY0YjdlNmZmNmUxMmNlNzI1MGM5ODM1MTg2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNl
bGVjdENvbnRyb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
Rm9ybVNlbGVjdENvbnRyb2wubW0KQEAgLTc0LDYgKzc0LDE1IEBAIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3CiAgICAgfQogCiAgICAgUmV0YWluUHRy
PE5TT2JqZWN0IDxXS0Zvcm1Db250cm9sPj4gY29udHJvbDsKKworI2lmIEVOQUJMRShJT1NfRk9S
TV9DT05UUk9MX1JFRlJFU0gpCisgICAgaWYgKFt2aWV3IF9mb3JtQ29udHJvbFJlZnJlc2hFbmFi
bGVkXSkgeworICAgICAgICAvLyBGSVhNRTogQWRkIGltcGxlbWVudGF0aW9uIGZvciBtdWx0aS1z
ZWxlY3QgcGlja2VyLgorICAgICAgICBjb250cm9sID0gYWRvcHROUyhbW1dLU2VsZWN0UGlja2Vy
IGFsbG9jXSBpbml0V2l0aFZpZXc6dmlld10pOworICAgICAgICByZXR1cm4gW3N1cGVyIGluaXRX
aXRoVmlldzp2aWV3IGNvbnRyb2w6V1RGTW92ZShjb250cm9sKV07CisgICAgfQorI2VuZGlmCisK
ICAgICBpZiAoY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkT3JNYWMoKSkKICAgICAgICAg
Y29udHJvbCA9IGFkb3B0TlMoW1tXS1NlbGVjdFBvcG92ZXIgYWxsb2NdIGluaXRXaXRoVmlldzp2
aWV3IGhhc0dyb3VwczpoYXNHcm91cHNdKTsKICAgICBlbHNlIGlmICh2aWV3LmZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24uaXNNdWx0aVNlbGVjdCB8fCBoYXNHcm91cHMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2VyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2VyLmgKaW5k
ZXggZDc3MjBmODdkYTg0YWIyMzE3YTQ0YzAzMjE1YTIxODVlOWE5ODNiYS4uY2NjMjU0ZWVhNTQ4
YTEyZWZjNjQyN2U3NmUxNDcyODBhNWY2YTRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIuaApAQCAtMzgsNCArMzgs
MTYgQEAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3
OwogQGVuZAogCisjaWYgRU5BQkxFKElPU19GT1JNX0NPTlRST0xfUkVGUkVTSCkKKworQGludGVy
ZmFjZSBXS1NlbGVjdFBpY2tlciA6IE5TT2JqZWN0IDxXS0Zvcm1Db250cm9sCisjaWYgVVNFKFVJ
Q09OVEVYVE1FTlUpCissIFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbkRlbGVnYXRlCisjZW5kaWYK
Kz4KKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFZpZXc6KFdLQ29udGVudFZpZXcgKil2aWV3Owor
QGVuZAorCisjZW5kaWYKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2Vy
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tl
ci5tbQppbmRleCBjYTg3NzBjMWFlMTg2YTMyODgyNTZmZjNmNGU0NWM0MDI2Yzg1MzRiLi45Mzkw
N2RjYWI3MGI3YTZmMGM1MzUwM2IzOGQwYjY1ZDcwZjJmMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2VyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIubW0KQEAg
LTMzLDcgKzMzLDkgQEAKICNpbXBvcnQgIldLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIgogI2lt
cG9ydCAiV0tGb3JtUG9wb3Zlci5oIgogI2ltcG9ydCAiV0tGb3JtU2VsZWN0Q29udHJvbC5oIgor
I2ltcG9ydCAiV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaCIKICNpbXBvcnQgIldlYlBhZ2VQ
cm94eS5oIgorI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTQ2NCw0ICs0NjYsMjQxIEBAIC0gKHZvaWQpc2VsZWN0Um93
OihOU0ludGVnZXIpcm93SW5kZXggaW5Db21wb25lbnQ6KE5TSW50ZWdlciljb21wb25lbnRJbmRl
eCBleHRlCiAKIEBlbmQKIAorI3ByYWdtYSBtYXJrIC0gRm9ybSBDb250cm9sIFJlZnJlc2gKKwor
QGludGVyZmFjZSBVSUFjdGlvbiAoSVBJKQorLSAodm9pZClfcGVyZm9ybUFjdGlvbldpdGhTZW5k
ZXI6KGlkKXNlbmRlcjsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLU2VsZWN0UGlja2VyIHsK
KyAgICBXS0NvbnRlbnRWaWV3ICpfdmlldzsKKyAgICBDR1BvaW50IF9pbnRlcmFjdGlvblBvaW50
OworCisjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCisgICAgUmV0YWluUHRyPFVJTWVudT4gX3NlbGVj
dE1lbnU7CisgICAgUmV0YWluUHRyPFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbj4gX3NlbGVjdENv
bnRleHRNZW51SW50ZXJhY3Rpb247CisjZW5kaWYKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF92aWV3ID0gdmlldzsKKyAgICBf
aW50ZXJhY3Rpb25Qb2ludCA9IFtfdmlldyBsYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbl07CisjaWYg
VVNFKFVJQ09OVEVYVE1FTlUpCisgICAgX3NlbGVjdE1lbnUgPSBbc2VsZiBjcmVhdGVNZW51XTsK
KyNlbmRpZgorCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKFVJVmlldyAqKWNvbnRyb2xWaWV3
Cit7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAodm9pZCljb250cm9sQmVnaW5FZGl0aW5nCit7
CisgICAgW192aWV3IHN0YXJ0UmVsaW5xdWlzaGluZ0ZpcnN0UmVzcG9uZGVyVG9Gb2N1c2VkRWxl
bWVudF07CisKKyNpZiBVU0UoVUlDT05URVhUTUVOVSkKKyAgICBXZWJLaXQ6OkludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0IHBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHsgV2ViQ29yZTo6
SW50UG9pbnQoX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5sYXN0SW50ZXJhY3Rpb25M
b2NhdGlvbikgfTsKKyAgICBbX3ZpZXcgZG9BZnRlclBvc2l0aW9uSW5mb3JtYXRpb25VcGRhdGU6
XihXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGludGVyYWN0aW9uSW5m
b3JtYXRpb24pIHsKKyAgICAgICAgW3NlbGYgc2hvd1NlbGVjdFBpY2tlcl07CisgICAgfSBmb3JS
ZXF1ZXN0OnBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0XTsKKyNlbmRpZgorfQorCistICh2b2lk
KWNvbnRyb2xFbmRFZGl0aW5nCit7CisgICAgW192aWV3IHN0b3BSZWxpbnF1aXNoaW5nRmlyc3RS
ZXNwb25kZXJUb0ZvY3VzZWRFbGVtZW50XTsKKworI2lmIFVTRShVSUNPTlRFWFRNRU5VKQorICAg
IFtzZWxmIHJlbW92ZUNvbnRleHRNZW51SW50ZXJhY3Rpb25dOworI2VuZGlmCit9CisKKy0gKHZv
aWQpZGVhbGxvYworeworI2lmIFVTRShVSUNPTlRFWFRNRU5VKQorICAgIFtzZWxmIHJlbW92ZUNv
bnRleHRNZW51SW50ZXJhY3Rpb25dOworI2VuZGlmCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQor
CistICh2b2lkKWRpZFNlbGVjdE9wdGlvbkluZGV4OihOU0ludGVnZXIpaW5kZXgKK3sKKyAgICBb
X3ZpZXcgcGFnZV0tPnNldEZvY3VzZWRFbGVtZW50U2VsZWN0ZWRJbmRleChpbmRleCk7Cit9CisK
KyNpZiBVU0UoVUlDT05URVhUTUVOVSkKKworLSAoVUlNZW51ICopY3JlYXRlTWVudQoreworICAg
IGlmICghX3ZpZXcuZm9jdXNlZFNlbGVjdEVsZW1lbnRPcHRpb25zLnNpemUoKSkgeworICAgICAg
ICBVSUFjdGlvbiAqZW1wdHlBY3Rpb24gPSBbVUlBY3Rpb24gYWN0aW9uV2l0aFRpdGxlOldFQl9V
SV9TVFJJTkdfS0VZKCJObyBPcHRpb25zIiwgIk5vIE9wdGlvbnMgU2VsZWN0IFBvcG92ZXIiLCAi
RW1wdHkgc2VsZWN0IGxpc3QiKSBpbWFnZTpuaWwgaWRlbnRpZmllcjpuaWwgaGFuZGxlcjpeKF9f
a2luZG9mIFVJQWN0aW9uICphY3Rpb24pIHsgfV07CisgICAgICAgIGVtcHR5QWN0aW9uLmF0dHJp
YnV0ZXMgPSBVSU1lbnVFbGVtZW50QXR0cmlidXRlc0Rpc2FibGVkOworICAgICAgICByZXR1cm4g
W1VJTWVudSBtZW51V2l0aFRpdGxlOkAiIiBjaGlsZHJlbjpAW2VtcHR5QWN0aW9uXV07CisgICAg
fQorCisgICAgTlNNdXRhYmxlQXJyYXkgKml0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsK
KyAgICBOU0ludGVnZXIgb3B0aW9uSW5kZXggPSAwOworCisgICAgc2l6ZV90IGN1cnJlbnRJbmRl
eCA9IDA7CisgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IF92aWV3LmZvY3VzZWRTZWxlY3RFbGVt
ZW50T3B0aW9ucy5zaXplKCkpIHsKKyAgICAgICAgYXV0byYgb3B0aW9uSXRlbSA9IF92aWV3LmZv
Y3VzZWRTZWxlY3RFbGVtZW50T3B0aW9uc1tjdXJyZW50SW5kZXhdOworICAgICAgICBpZiAob3B0
aW9uSXRlbS5pc0dyb3VwKSB7CisgICAgICAgICAgICBOU1N0cmluZyAqZ3JvdXBUZXh0ID0gb3B0
aW9uSXRlbS50ZXh0OworICAgICAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmdyb3VwZWRJdGVtcyA9
IFtOU011dGFibGVBcnJheSBhcnJheV07CisKKyAgICAgICAgICAgIGN1cnJlbnRJbmRleCsrOwor
ICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IF92aWV3LmZvY3VzZWRTZWxlY3RFbGVt
ZW50T3B0aW9ucy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICBvcHRpb25JdGVtID0gX3ZpZXcu
Zm9jdXNlZFNlbGVjdEVsZW1lbnRPcHRpb25zW2N1cnJlbnRJbmRleF07CisgICAgICAgICAgICAg
ICAgaWYgKG9wdGlvbkl0ZW0uaXNHcm91cCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBVSUFjdGlvbiAqYWN0aW9uID0gW3NlbGYgYWN0aW9uRm9yT3B0aW9u
SXRlbTpvcHRpb25JdGVtIHdpdGhJbmRleDpvcHRpb25JbmRleF07CisgICAgICAgICAgICAgICAg
W2dyb3VwZWRJdGVtcyBhZGRPYmplY3Q6YWN0aW9uXTsKKyAgICAgICAgICAgICAgICBvcHRpb25J
bmRleCsrOworICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCsrOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBVSU1lbnUgKmdyb3VwTWVudSA9IFtVSU1lbnUgbWVudVdpdGhUaXRsZTpn
cm91cFRleHQgY2hpbGRyZW46Z3JvdXBlZEl0ZW1zXTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRP
YmplY3Q6Z3JvdXBNZW51XTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAg
ICAgICAgVUlBY3Rpb24gKmFjdGlvbiA9IFtzZWxmIGFjdGlvbkZvck9wdGlvbkl0ZW06b3B0aW9u
SXRlbSB3aXRoSW5kZXg6b3B0aW9uSW5kZXhdOworICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFj
dGlvbl07CisgICAgICAgIG9wdGlvbkluZGV4Kys7CisgICAgICAgIGN1cnJlbnRJbmRleCsrOwor
ICAgIH0KKworICAgIHJldHVybiBbVUlNZW51IG1lbnVXaXRoVGl0bGU6QCIiIGNoaWxkcmVuOml0
ZW1zXTsKK30KKworLSAoVUlBY3Rpb24gKilhY3Rpb25Gb3JPcHRpb25JdGVtOihjb25zdCBPcHRp
b25JdGVtJilvcHRpb24gd2l0aEluZGV4OihOU0ludGVnZXIpb3B0aW9uSW5kZXgKK3sKKyAgICBV
SUFjdGlvbiAqb3B0aW9uQWN0aW9uID0gW1VJQWN0aW9uIGFjdGlvbldpdGhUaXRsZTpvcHRpb24u
dGV4dCBpbWFnZTpuaWwgaWRlbnRpZmllcjpuaWwgaGFuZGxlcjpeKF9fa2luZG9mIFVJQWN0aW9u
ICphY3Rpb24pIHsKKyAgICAgICAgW3NlbGYgZGlkU2VsZWN0T3B0aW9uSW5kZXg6b3B0aW9uSW5k
ZXhdOworICAgIH1dOworCisgICAgaWYgKG9wdGlvbi5kaXNhYmxlZCkKKyAgICAgICAgb3B0aW9u
QWN0aW9uLmF0dHJpYnV0ZXMgPSBVSU1lbnVFbGVtZW50QXR0cmlidXRlc0Rpc2FibGVkOworCisg
ICAgaWYgKG9wdGlvbi5pc1NlbGVjdGVkKQorICAgICAgICBvcHRpb25BY3Rpb24uc3RhdGUgPSBV
SU1lbnVFbGVtZW50U3RhdGVPbjsKKworICAgIHJldHVybiBvcHRpb25BY3Rpb247Cit9CisKKy0g
KFVJVGFyZ2V0ZWRQcmV2aWV3ICopY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVu
dUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJldmlld0ZvckhpZ2hsaWdodGluZ01lbnVXaXRo
Q29uZmlndXJhdGlvbjooVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9u
Cit7CisgICAgcmV0dXJuIFtfdmlldyBfY3JlYXRlVGFyZ2V0ZWRDb250ZXh0TWVudUhpbnRQcmV2
aWV3SWZQb3NzaWJsZV07Cit9CisKKy0gKF9VSUNvbnRleHRNZW51U3R5bGUgKilfY29udGV4dE1l
bnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gc3R5
bGVGb3JNZW51V2l0aENvbmZpZ3VyYXRpb246KFVJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uICop
Y29uZmlndXJhdGlvbgoreworICAgIF9VSUNvbnRleHRNZW51U3R5bGUgKnN0eWxlID0gW19VSUNv
bnRleHRNZW51U3R5bGUgZGVmYXVsdFN0eWxlXTsKKyAgICBzdHlsZS5wcmVmZXJyZWRMYXlvdXQg
PSBfVUlDb250ZXh0TWVudUxheW91dENvbXBhY3RNZW51OworICAgIHJldHVybiBzdHlsZTsKK30K
KworLSAoVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKiljb250ZXh0TWVudUludGVyYWN0aW9u
OihVSUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBjb25maWd1cmF0aW9uRm9y
TWVudUF0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24KK3sKKyAgICBVSUNvbnRleHRNZW51QWN0
aW9uUHJvdmlkZXIgYWN0aW9uTWVudVByb3ZpZGVyID0gW3dlYWtTZWxmID0gV2Vha09iakNQdHI8
V0tTZWxlY3RQaWNrZXI+KHNlbGYpXSAoTlNBcnJheTxVSU1lbnVFbGVtZW50ICo+ICopIC0+IFVJ
TWVudSAqIHsKKyAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAg
ICAgIGlmICghc3Ryb25nU2VsZikKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAg
cmV0dXJuIHN0cm9uZ1NlbGYtPl9zZWxlY3RNZW51LmdldCgpOworICAgIH07CisKKyAgICByZXR1
cm4gW1VJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb25XaXRoSWRlbnRpZmll
cjpuaWwgcHJldmlld1Byb3ZpZGVyOm5pbCBhY3Rpb25Qcm92aWRlcjphY3Rpb25NZW51UHJvdmlk
ZXJdOworfQorCistICh2b2lkKWNvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJ
bnRlcmFjdGlvbiAqKWludGVyYWN0aW9uIHdpbGxEaXNwbGF5TWVudUZvckNvbmZpZ3VyYXRpb246
KFVJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBhbmltYXRvcjooaWQg
PFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbkFuaW1hdGluZz4pYW5pbWF0b3IKK3sKKyAgICBbYW5p
bWF0b3IgYWRkQ29tcGxldGlvbjpbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1NlbGVjdFBpY2tl
cj4oc2VsZildIHsKKyAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7Cisg
ICAgICAgIGlmIChzdHJvbmdTZWxmKQorICAgICAgICAgICAgW3N0cm9uZ1NlbGYtPl92aWV3Lndl
YlZpZXcgX2RpZFNob3dDb250ZXh0TWVudV07CisgICAgfV07Cit9CisKKy0gKHZvaWQpY29udGV4
dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24g
d2lsbEVuZEZvckNvbmZpZ3VyYXRpb246KFVJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uICopY29u
ZmlndXJhdGlvbiBhbmltYXRvcjooaWQgPFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbkFuaW1hdGlu
Zz4pYW5pbWF0b3IKK3sKKyAgICBbYW5pbWF0b3IgYWRkQ29tcGxldGlvbjpbd2Vha1NlbGYgPSBX
ZWFrT2JqQ1B0cjxXS1NlbGVjdFBpY2tlcj4oc2VsZildIHsKKyAgICAgICAgYXV0byBzdHJvbmdT
ZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAgIGlmIChzdHJvbmdTZWxmKSB7CisgICAgICAg
ICAgICBbc3Ryb25nU2VsZi0+X3ZpZXcgYWNjZXNzb3J5RG9uZV07CisgICAgICAgICAgICBbc3Ry
b25nU2VsZi0+X3ZpZXcud2ViVmlldyBfZGlkRGlzbWlzc0NvbnRleHRNZW51XTsKKyAgICAgICAg
fQorICAgIH1dOworfQorCistICh2b2lkKXJlbW92ZUNvbnRleHRNZW51SW50ZXJhY3Rpb24KK3sK
KyAgICBpZiAoIV9zZWxlY3RDb250ZXh0TWVudUludGVyYWN0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBbX3ZpZXcgcmVtb3ZlSW50ZXJhY3Rpb246X3NlbGVjdENvbnRleHRNZW51SW50ZXJh
Y3Rpb24uZ2V0KCldOworICAgIF9zZWxlY3RDb250ZXh0TWVudUludGVyYWN0aW9uID0gbmlsOwor
ICAgIFtfdmlldyBfcmVtb3ZlQ29udGV4dE1lbnVWaWV3SWZQb3NzaWJsZV07CisgICAgW192aWV3
LndlYlZpZXcgX2RpZERpc21pc3NDb250ZXh0TWVudV07Cit9CisKKy0gKHZvaWQpZW5zdXJlQ29u
dGV4dE1lbnVJbnRlcmFjdGlvbgoreworICAgIGlmIChfc2VsZWN0Q29udGV4dE1lbnVJbnRlcmFj
dGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgX3NlbGVjdENvbnRleHRNZW51SW50ZXJhY3Rp
b24gPSBhZG9wdE5TKFtbVUlDb250ZXh0TWVudUludGVyYWN0aW9uIGFsbG9jXSBpbml0V2l0aERl
bGVnYXRlOnNlbGZdKTsKKyAgICBbX3ZpZXcgYWRkSW50ZXJhY3Rpb246X3NlbGVjdENvbnRleHRN
ZW51SW50ZXJhY3Rpb24uZ2V0KCldOworfQorCistICh2b2lkKXNob3dTZWxlY3RQaWNrZXIKK3sK
KyAgICBbc2VsZiBlbnN1cmVDb250ZXh0TWVudUludGVyYWN0aW9uXTsKKyAgICBbX3NlbGVjdENv
bnRleHRNZW51SW50ZXJhY3Rpb24gX3ByZXNlbnRNZW51QXRMb2NhdGlvbjpfaW50ZXJhY3Rpb25Q
b2ludF07Cit9CisKKyNlbmRpZiAvLyBVU0UoVUlDT05URVhUTUVOVSkKKworLy8gV0tTZWxlY3RU
ZXN0aW5nCistICh2b2lkKXNlbGVjdFJvdzooTlNJbnRlZ2VyKXJvd0luZGV4IGluQ29tcG9uZW50
OihOU0ludGVnZXIpY29tcG9uZW50SW5kZXggZXh0ZW5kaW5nU2VsZWN0aW9uOihCT09MKWV4dGVu
ZGluZ1NlbGVjdGlvbgoreworI2lmIFVTRShVSUNPTlRFWFRNRU5VKQorICAgIE5TSW50ZWdlciBj
dXJyZW50Um93ID0gMDsKKworICAgIE5TQXJyYXk8VUlNZW51RWxlbWVudCAqPiAqbWVudUVsZW1l
bnRzID0gW19zZWxlY3RNZW51IGNoaWxkcmVuXTsKKyAgICBmb3IgKFVJTWVudUVsZW1lbnQgKm1l
bnVFbGVtZW50IGluIG1lbnVFbGVtZW50cykgeworICAgICAgICBpZiAoW21lbnVFbGVtZW50IGlz
S2luZE9mQ2xhc3M6VUlBY3Rpb24uY2xhc3NdKSB7CisgICAgICAgICAgICBpZiAoY3VycmVudFJv
dyA9PSByb3dJbmRleCkgeworICAgICAgICAgICAgICAgIFsoVUlBY3Rpb24gKiltZW51RWxlbWVu
dCBfcGVyZm9ybUFjdGlvbldpdGhTZW5kZXI6bmlsXTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY3VycmVudFJvdysrOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBVSU1lbnUgKmdyb3VwZWRNZW51ID0gKFVJ
TWVudSAqKW1lbnVFbGVtZW50OworICAgICAgICBpZiAoY3VycmVudFJvdyArIGdyb3VwZWRNZW51
LmNoaWxkcmVuLmNvdW50IDw9IChOU1VJbnRlZ2VyKXJvd0luZGV4KQorICAgICAgICAgICAgY3Vy
cmVudFJvdyArPSBncm91cGVkTWVudS5jaGlsZHJlbi5jb3VudDsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBVSUFjdGlvbiAqYWN0aW9uID0gKFVJQWN0aW9uICopW2dyb3VwZWRNZW51LmNo
aWxkcmVuIG9iamVjdEF0SW5kZXg6cm93SW5kZXggLSBjdXJyZW50Um93XTsKKyAgICAgICAgICAg
IFthY3Rpb24gX3BlcmZvcm1BY3Rpb25XaXRoU2VuZGVyOm5pbF07CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKworICAgIFtzZWxmIHJlbW92ZUNvbnRleHRNZW51SW50ZXJh
Y3Rpb25dOworI2VuZGlmCit9CisKK0BlbmQKKwogI2VuZGlmICAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDU0ZmI4ZDA2MTNkODRhZmNiNmI3NDQ5NDFjNzFhZWFiOGQ0ODI3ZjMuLmIy
NDAyOWU2Mjk5MWI1OGZjNWI4NDRlNDY2N2QxZDczNDE0YTk1ZWUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAyMS0wMS0yOSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPU11bRkNSXSBBZGQgbmV3IHBpY2tlciBmb3Igc2VsZWN0IGVsZW1lbnRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjExNTMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczNzcwMzg5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9mb3Jtcy9pb3MvZm9ybS1jb250cm9sLXJl
ZnJlc2gvc2VsZWN0L2Nob29zZS1zZWxlY3Qtb3B0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9mb3Jtcy9pb3MvZm9ybS1jb250cm9sLXJlZnJlc2gvc2VsZWN0L2Nob29z
ZS1zZWxlY3Qtb3B0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHJlc291cmNlcy91aS1oZWxw
ZXIuanM6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIud2FpdEZvckNvbnRleHRNZW51VG9TaG93
KToKKworICAgICAgICBBZGRlZCBhIG5ldyBVSUhlbHBlciBtZXRob2QgdG8gd2FpdCB1bnRpbCBh
IGNvbnRleHQgbWVudSBpcyBkaXNwbGF5ZWQuCisKIDIwMjEtMDEtMjUgIEFkaXR5YSBLZWVydGhp
ICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE9ic2N1cmVkIGVsZW1lbnRz
IHNob3VsZCBub3QgYmUgZm9jdXNhYmxlIHVzaW5nIHRoZSBhY2Nlc3NvcnkgYmFyCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lvcy9mb3JtLWNvbnRyb2wtcmVmcmVzaC9zZWxl
Y3QvY2hvb3NlLXNlbGVjdC1vcHRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9m
b3Jtcy9pb3MvZm9ybS1jb250cm9sLXJlZnJlc2gvc2VsZWN0L2Nob29zZS1zZWxlY3Qtb3B0aW9u
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNjE0YjgxZWExNDI2OWYxYjljOTQzMzFiNWY0MGIx
OTFiOTUyMjg5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9mb3Jtcy9pb3Mv
Zm9ybS1jb250cm9sLXJlZnJlc2gvc2VsZWN0L2Nob29zZS1zZWxlY3Qtb3B0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB0YXBwaW5nIG9u
IGEgc2VsZWN0IGVsZW1lbnQgYW5kIGNob29zaW5nIGFuIG9wdGlvbiB2aWEgdGhlIHByZXNlbnRl
ZCBjb250ZXh0IG1lbnUgdXBkYXRlcyB0aGUgZWxlbWVudCdzIHZhbHVlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBzZWxlY3QudmFsdWUgaXMgIkphbnVhcnkiCitQQVNT
IHNlbGVjdC52YWx1ZSBpcyAiQXByaWwiCitQQVNTIGdyb3VwZWQudmFsdWUgaXMgIkphbnVhcnki
CitQQVNTIGdyb3VwZWQudmFsdWUgaXMgIk9jdG9iZXIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9mb3Jtcy9pb3MvZm9ybS1jb250cm9sLXJlZnJlc2gvc2VsZWN0L2Nob29zZS1zZWxlY3Qtb3B0
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lvcy9mb3JtLWNvbnRyb2wtcmVmcmVz
aC9zZWxlY3QvY2hvb3NlLXNlbGVjdC1vcHRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzAwMTU1NzRk
YjY5NTcyMjNjZjgzMDhjZjNjZThmNDMxZDBhN2JlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9mb3Jtcy9pb3MvZm9ybS1jb250cm9sLXJlZnJlc2gvc2VsZWN0L2Nob29zZS1z
ZWxlY3Qtb3B0aW9uLmh0bWwKQEAgLTAsMCArMSw3MCBAQAorPCFET0NUWVBFIGh0bWw+IDwhLS0g
d2Via2l0LXRlc3QtcnVubmVyIFsgdXNlRmxleGlibGVWaWV3cG9ydD10cnVlIElPU0Zvcm1Db250
cm9sUmVmcmVzaEVuYWJsZWQ9dHJ1ZSBdIC0tPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRp
YWwtc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ubyI+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4K
KyAgICA8L2hlYWQ+Cis8Ym9keT4KKzxzZWxlY3QgaWQ9InNlbGVjdCI+CisgICAgPG9wdGlvbj5K
YW51YXJ5PC9vcHRpb24+CisgICAgPG9wdGlvbj5GZWJydWFyeTwvb3B0aW9uPgorICAgIDxvcHRp
b24+TWFyY2g8L29wdGlvbj4KKyAgICA8b3B0aW9uPkFwcmlsPC9vcHRpb24+CisgICAgPG9wdGlv
bj5NYXk8L29wdGlvbj4KKyAgICA8b3B0aW9uPkp1bmU8L29wdGlvbj4KKyAgICA8b3B0aW9uPkp1
bHk8L29wdGlvbj4KKyAgICA8b3B0aW9uPkF1Z3VzdDwvb3B0aW9uPgorICAgIDxvcHRpb24+U2Vw
dGVtYmVyPC9vcHRpb24+CisgICAgPG9wdGlvbj5PY3RvYmVyPC9vcHRpb24+CisgICAgPG9wdGlv
bj5Ob3ZlbWJlcjwvb3B0aW9uPgorICAgIDxvcHRpb24+RGVjZW1iZXI8L29wdGlvbj4KKzwvc2Vs
ZWN0PgorCis8c2VsZWN0IGlkPSJncm91cGVkIj4KKyAgICA8b3B0Z3JvdXAgbGFiZWw9IldpbnRl
ciI+CisgICAgICAgIDxvcHRpb24+SmFudWFyeTwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPkZl
YnJ1YXJ5PC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+TWFyY2g8L29wdGlvbj4KKyAgICA8L29w
dGdyb3VwPgorICAgIDxvcHRncm91cCBsYWJlbD0iU3ByaW5nIj4KKyAgICAgICAgPG9wdGlvbj5B
cHJpbDwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPk1heTwvb3B0aW9uPgorICAgICAgICA8b3B0
aW9uPkp1bmU8L29wdGlvbj4KKyAgICA8L29wdGdyb3VwPgorICAgIDxvcHRncm91cCBsYWJlbD0i
U3VtbWVyIj4KKyAgICAgICAgPG9wdGlvbj5KdWx5PC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+
QXVndXN0PC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+U2VwdGVtYmVyPC9vcHRpb24+CisgICAg
PC9vcHRncm91cD4KKyAgICA8b3B0Z3JvdXAgbGFiZWw9IkZhbGwiPgorICAgICAgICA8b3B0aW9u
Pk9jdG9iZXI8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj5Ob3ZlbWJlcjwvb3B0aW9uPgorICAg
ICAgICA8b3B0aW9uPkRlY2VtYmVyPC9vcHRpb24+CisgICAgPC9vcHRncm91cD4KKzwvc2VsZWN0
PgorPC9ib2R5PgorPHNjcmlwdD4KK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCithZGRFdmVudExp
c3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4geworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3Qg
dmVyaWZpZXMgdGhhdCB0YXBwaW5nIG9uIGEgc2VsZWN0IGVsZW1lbnQgYW5kIGNob29zaW5nIGFu
IG9wdGlvbiB2aWEgdGhlIHByZXNlbnRlZCBjb250ZXh0IG1lbnUgdXBkYXRlcyB0aGUgZWxlbWVu
dCdzIHZhbHVlLiIpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJzZWxlY3QudmFsdWUi
LCAiSmFudWFyeSIpOworICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRWxlbWVudChzZWxlY3Qp
OworICAgIGF3YWl0IFVJSGVscGVyLndhaXRGb3JDb250ZXh0TWVudVRvU2hvdygpOworICAgIGF3
YWl0IFVJSGVscGVyLnNlbGVjdEZvcm1BY2Nlc3NvcnlQaWNrZXJSb3coMyk7CisgICAgYXdhaXQg
VUlIZWxwZXIud2FpdEZvckNvbnRleHRNZW51VG9IaWRlKCk7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCJzZWxlY3QudmFsdWUiLCAiQXByaWwiKTsKKworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZ3JvdXBlZC52YWx1ZSIsICJKYW51YXJ5Iik7CisgICAgYXdhaXQgVUlIZWxwZXIuYWN0
aXZhdGVFbGVtZW50KGdyb3VwZWQpOworICAgIGF3YWl0IFVJSGVscGVyLndhaXRGb3JDb250ZXh0
TWVudVRvU2hvdygpOworICAgIGF3YWl0IFVJSGVscGVyLnNlbGVjdEZvcm1BY2Nlc3NvcnlQaWNr
ZXJSb3coOSk7CisgICAgYXdhaXQgVUlIZWxwZXIud2FpdEZvckNvbnRleHRNZW51VG9IaWRlKCk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJncm91cGVkLnZhbHVlIiwgIk9jdG9iZXIiKTsK
KworICAgIGZpbmlzaEpTVGVzdCgpOworfSk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9yZXNv
dXJjZXMvdWktaGVscGVyLmpzCmluZGV4IDIyZWU1MmY1MWM1Yjg4MGU3NzMyMGRmNDMyYzYzMDg3
YmU1YmNlM2YuLjM3OTg1YzFlYjJkMDBjYzU0OGY3YjJiN2Y5MzAwYzY4ZWU1ZDVjNzUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKKysrIGIvTGF5b3V0VGVz
dHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwpAQCAtNjUwLDYgKzY1MCwyMiBAQCB3aW5kb3cuVUlI
ZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAgICAgICAgIH0pOwogICAgIH0KIAorICAgIHN0YXRp
YyB3YWl0Rm9yQ29udGV4dE1lbnVUb1Nob3coKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlz
V2ViS2l0MigpIHx8ICF0aGlzLmlzSU9TRmFtaWx5KCkpCisgICAgICAgICAgICByZXR1cm4gUHJv
bWlzZS5yZXNvbHZlKCk7CisKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4g
eworICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgCisgICAgICAgICAgICAgICAg
KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXVpQ29udHJvbGxlci5pc1No
b3dpbmdDb250ZXh0TWVudSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5k
aWRTaG93Q29udGV4dE1lbnVDYWxsYmFjayA9ICgpID0+IHVpQ29udHJvbGxlci51aVNjcmlwdENv
bXBsZXRlKCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7CisgICAgICAgICAgICAgICAgfSko
KWAsIHJlc29sdmUpOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBzdGF0aWMgd2FpdEZvckNv
bnRleHRNZW51VG9IaWRlKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8
fCAhdGhpcy5pc0lPU0ZhbWlseSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418867</attachid>
            <date>2021-02-01 06:40:24 -0800</date>
            <delta_ts>2021-02-03 12:27:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221153-20210201094030.patch</filename>
            <type>text/plain</type>
            <size>26866</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGU1OGE3YTFlZGMyZTZiY2Yy
OWU5MjE3ZjIwNmNlNTIxMTJkY2ZhMWYuLmQzNmE2NjJkMzM5ODhkYWNhYzE2YTg4YjMwMTRiMjA4
NjVkYTFlYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjEtMDEtMjkgIEFkaXR5YSBL
ZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW0ZDUl0gQWRkIG5l
dyBwaWNrZXIgZm9yIHNlbGVjdCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxMTUzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83Mzc3
MDM4OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
YXBwaW5nIG9uIGEgc2VsZWN0IGVsZW1lbnQgc2hvdWxkIGRpc3BsYXkgYW4gY29udGV4dCBtZW51
IHRoYXQgYWxsb3dzCisgICAgICAgIHVzZXJzIHRvIGNob29zZSBvbmUgb2YgdGhlIHNwZWNpZmll
ZCBvcHRpb25zLiBSYXRoZXIgdGhhbiBwcmVzZW50aW5nIGEKKyAgICAgICAgVUlQaWNrZXJWaWV3
LCB0YXBwaW5nIG9uIHNlbGVjdCBlbGVtZW50cyBub3cgY3JlYXRlIFVJQ29udGV4dE1lbnVJbnRl
cmFjdGlvbnMsCisgICAgICAgIHNpbWlsYXIgdG8gZGF0ZSBhbmQgZmlsZSBpbnB1dHMuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9mb3Jtcy9pb3MvZm9ybS1jb250cm9sLXJlZnJlc2gvc2VsZWN0L2No
b29zZS1zZWxlY3Qtb3B0aW9uLmh0bWwKKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Nob3VsZFNob3dB
dXRvbWF0aWNLZXlib2FyZFVJSWdub3JpbmdJbnB1dE1vZGVdKToKKworICAgICAgICBUaGUgbmV3
IHBpY2tlciBkb2VzIG5vdCBicmluZyB1cCB0aGUga2V5Ym9hcmQgdmlldyBvbiBhbGwgZGV2aWNl
cy4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9lbGVtZW50VHlwZVJlcXVpcmVzQWNjZXNz
b3J5VmlldzpdKToKKworICAgICAgICBDaGFuZ2VkIGZyb20gYSBzdGF0aWMgbWV0aG9kIHRvIGFu
IGluc3RhbmNlIG1ldGhvZCwgYXMgdGhlIHJldHVybmVkCisgICAgICAgIHZhbHVlIGRlcGVuZHMg
b24gYSBmbGFnIHdoaWNoIGlzIG9ubHkgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBpbnN0YW5jZS4K
KworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHJlcXVpcmVzQWNjZXNzb3J5Vmlld10pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9mb3JtQ29udHJvbFJlZnJlc2hFbmFibGVkXSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX3Nob3VsZFNob3dLZXlib2FyZEZvckVsZW1lbnQ6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX2VsZW1lbnREaWRGb2N1czp1c2VySXNJbnRlcmFjdGlu
ZzpibHVyUHJldmlvdXNOb2RlOmFjdGl2aXR5U3RhdGVDaGFuZ2VzOnVzZXJPYmplY3Q6XSk6Cisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgX3JlbW92ZUNvbnRleHRNZW51Vmlld0lmUG9zc2libGVd
KToKKworICAgICAgICBEbyBub3QgcmVtb3ZlIHRoZSBjb250ZXh0IG1lbnUgaWYgYW4gc2VsZWN0
IGVsZW1lbnQgaXMgYWN0aXZlbHkgYmVpbmcKKyAgICAgICAgaW50ZXJhY3RlZCB3aXRoLgorCisg
ICAgICAgICgtW1dLQ29udGVudFZpZXcgc2VsZWN0Q29udHJvbF0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5tbToKKyAgICAgICAgKC1bV0tGb3Jt
U2VsZWN0Q29udHJvbCBpbml0V2l0aFZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRm9ybVNlbGVjdFBpY2tlci5tbToKKyAgICAgICAgKC1bV0tTZWxlY3RQaWNrZXIgaW5pdFdp
dGhWaWV3Ol0pOgorICAgICAgICAoLVtXS1NlbGVjdFBpY2tlciBjb250cm9sVmlld10pOgorICAg
ICAgICAoLVtXS1NlbGVjdFBpY2tlciBjb250cm9sQmVnaW5FZGl0aW5nXSk6CisKKyAgICAgICAg
RW5zdXJlIHRoZSBwb3NpdGlvbiBpbmZvcm1hdGlvbiBpcyB1cC10by1kYXRlIHByaW9yIHRvIHBy
ZXNlbnRpbmcgdGhlCisgICAgICAgIGNvbnRleHQgbWVudS4KKworICAgICAgICAoLVtXS1NlbGVj
dFBpY2tlciBjb250cm9sRW5kRWRpdGluZ10pOgorICAgICAgICAoLVtXS1NlbGVjdFBpY2tlciBk
ZWFsbG9jXSk6CisgICAgICAgICgtW1dLU2VsZWN0UGlja2VyIGRpZFNlbGVjdE9wdGlvbkluZGV4
Ol0pOgorICAgICAgICAoLVtXS1NlbGVjdFBpY2tlciBjcmVhdGVNZW51XSk6CisKKyAgICAgICAg
QnVpbGQgdGhlIG1lbnUgdXNpbmcgVUlBY3Rpb25zIGFuZCBVSU1lbnVzLiBTaW5jZSBvcHRncm91
cCBlbGVtZW50cworICAgICAgICBjYW5ub3QgYmUgbmVzdGVkLCBvbmx5IHRoZSByb290IFVJTWVu
dSBjYW4gY29udGFpbiBVSU1lbnVzLiBTdWJtZW51cworICAgICAgICBjYW4gb25seSBjb250YWlu
IFVJQWN0aW9ucy4KKworICAgICAgICAoLVtXS1NlbGVjdFBpY2tlciBhY3Rpb25Gb3JPcHRpb25J
dGVtOndpdGhJbmRleDpdKToKKyAgICAgICAgKC1bV0tTZWxlY3RQaWNrZXIgY29udGV4dE1lbnVJ
bnRlcmFjdGlvbjpwcmV2aWV3Rm9ySGlnaGxpZ2h0aW5nTWVudVdpdGhDb25maWd1cmF0aW9uOl0p
OgorICAgICAgICAoLVtXS1NlbGVjdFBpY2tlciBfY29udGV4dE1lbnVJbnRlcmFjdGlvbjpzdHls
ZUZvck1lbnVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tTZWxlY3RQaWNrZXIg
Y29udGV4dE1lbnVJbnRlcmFjdGlvbjpjb25maWd1cmF0aW9uRm9yTWVudUF0TG9jYXRpb246XSk6
CisgICAgICAgICgtW1dLU2VsZWN0UGlja2VyIGNvbnRleHRNZW51SW50ZXJhY3Rpb246d2lsbERp
c3BsYXlNZW51Rm9yQ29uZmlndXJhdGlvbjphbmltYXRvcjpdKToKKyAgICAgICAgKC1bV0tTZWxl
Y3RQaWNrZXIgY29udGV4dE1lbnVJbnRlcmFjdGlvbjp3aWxsRW5kRm9yQ29uZmlndXJhdGlvbjph
bmltYXRvcjpdKToKKyAgICAgICAgKC1bV0tTZWxlY3RQaWNrZXIgcmVtb3ZlQ29udGV4dE1lbnVJ
bnRlcmFjdGlvbl0pOgorICAgICAgICAoLVtXS1NlbGVjdFBpY2tlciBlbnN1cmVDb250ZXh0TWVu
dUludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLU2VsZWN0UGlja2VyIHNob3dTZWxlY3RQaWNr
ZXJdKToKKyAgICAgICAgKC1bV0tTZWxlY3RQaWNrZXIgc2VsZWN0Um93OmluQ29tcG9uZW50OmV4
dGVuZGluZ1NlbGVjdGlvbjpdKToKKworICAgICAgICBJbXBsZW1lbnQgbWV0aG9kIGZvciB0ZXN0
aW5nIHNlbGVjdCBwaWNrZXJzLgorCiAyMDIxLTAxLTI1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVy
dGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBPYnNjdXJlZCBlbGVtZW50cyBzaG91bGQg
bm90IGJlIGZvY3VzYWJsZSB1c2luZyB0aGUgYWNjZXNzb3J5IGJhcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCA2NWY3YzQ2NDNjYTA4ODcwYjc0MWE3MGU2
MGQxNWNjMjNlMzM1Nzg0Li41YTY2ZWJiZDY2ZGJhODY1ZDViZjJmOGM2NmIwZjhhODhkY2E0Njlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtMTI2NCw3
ICsxMjY0LDE0IEBAIHR5cGVkZWYgTlNfRU5VTShOU1VJbnRlZ2VyLCBfVUlDb250ZXh0TWVudUxh
eW91dCkgewogQGVuZAogI2VuZGlmIC8vIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKLSNpZiBIQVZF
KExJTktfUFJFVklFVykgJiYgVVNFKFVJQ09OVEVYVE1FTlUpCisjaWYgVVNFKFVJQ09OVEVYVE1F
TlUpCisKK0BpbnRlcmZhY2UgVUlBY3Rpb24gKElQSSkKKy0gKHZvaWQpX3BlcmZvcm1BY3Rpb25X
aXRoU2VuZGVyOihpZClzZW5kZXI7CitAZW5kCisKKyNpZiBIQVZFKExJTktfUFJFVklFVykKKwog
QGludGVyZmFjZSBVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbiAoSVBJKQogQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIFVJQ29udGV4dE1lbnVDb250ZW50UHJldmlld1Byb3ZpZGVyIHByZXZp
ZXdQcm92aWRlcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBVSUNvbnRleHRNZW51QWN0
aW9uUHJvdmlkZXIgYWN0aW9uUHJvdmlkZXI7CkBAIC0xMjg3LDcgKzEyOTQsOSBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNVSW50ZWdlciwgX1VJQ29udGV4dE1lbnVMYXlvdXQpIHsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzdHJvbmcpIF9VSUNsaWNrUHJlc2VudGF0aW9uSW50ZXJhY3Rpb24gKnByZXNl
bnRhdGlvbkludGVyYWN0aW9uOwogQGVuZAogCi0jZW5kaWYgLy8gSEFWRShMSU5LX1BSRVZJRVcp
ICYmIFVTRShVSUNPTlRFWFRNRU5VKQorI2VuZGlmIC8vIEhBVkUoTElOS19QUkVWSUVXKQorCisj
ZW5kaWYgLy8gVVNFKFVJQ09OVEVYVE1FTlUpCiAKIEBpbnRlcmZhY2UgVUlQaHlzaWNhbEtleWJv
YXJkRXZlbnQgOiBVSVByZXNzZXNFdmVudAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCmluZGV4IDcyMTQ0ODc0
MmIzYzA0Yzg1ZDNjOTQyMzRhZWEwYzU1MTUzNTk2YmYuLmQyMDQ0N2RiYWFiMzYwMDFjNzQ3MTJl
Y2JjYTUwZjkzYTExODAzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKQEAgLTEwNyw2ICsxMDcsNyBAQCBjbGFz
cyBXZWJQYWdlUHJveHk7CiBAY2xhc3MgV0tEYXRlVGltZUlucHV0Q29udHJvbDsKIEBjbGFzcyBX
S0ZvY3VzZWRGb3JtQ29udHJvbFZpZXc7CiBAY2xhc3MgV0tGb3JtSW5wdXRTZXNzaW9uOworQGNs
YXNzIFdLRm9ybVNlbGVjdENvbnRyb2w7CiBAY2xhc3MgV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0
dXJlUmVjb2duaXplcjsKIEBjbGFzcyBXS01vdXNlR2VzdHVyZVJlY29nbml6ZXI7CiBAY2xhc3Mg
V0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXI7CkBAIC02NzEsNiArNjcyLDEw
IEBAIEZPUl9FQUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oREVDTEFSRV9XS0NPTlRF
TlRWSUVXX0FDVElPTl9GT1JfV0VCX1ZJRVcpCiAtICh2b2lkKV9zZXRNb3VzZUV2ZW50UG9saWN5
OihXZWJDb3JlOjpNb3VzZUV2ZW50UG9saWN5KXBvbGljeTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KElPU19GT1JNX0NPTlRST0xfUkVGUkVTSCkKKy0gKEJPT0wpX2Zvcm1Db250cm9sUmVmcmVzaEVu
YWJsZWQ7CisjZW5kaWYKKwogQGVuZAogCiBAaW50ZXJmYWNlIFdLQ29udGVudFZpZXcgKFdLVGVz
dGluZykKQEAgLTY5Miw2ICs2OTcsNyBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdf
QUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqc2VsZWN0Rm9ybVBvcG92ZXJUaXRs
ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKmZvcm1JbnB1dExh
YmVsOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS0RhdGVUaW1lSW5wdXRDb250
cm9sICpkYXRlVGltZUlucHV0Q29udHJvbDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgV0tGb3JtU2VsZWN0Q29udHJvbCAqc2VsZWN0Q29udHJvbDsKIAogQGVuZAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQppbmRleCBiMmY3YThiYWE0NTVkMDU2ZDdmZjIyMzhkYTZlYTQ5NTY1NGJkNmE5Li41NjVm
ZmJjNmRiMGI5OWRmNTFlNzU0YzhlZTg3YjgyOTYyMjBhYjZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAg
LTIwMjUsNyArMjAyNSwxMyBAQCAtIChCT09MKV9zaG91bGRTaG93QXV0b21hdGljS2V5Ym9hcmRV
SUlnbm9yaW5nSW5wdXRNb2RlCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6RGF0ZVRpbWVM
b2NhbDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpUaW1lOgogICAgICAgICByZXR1cm4g
Tk87Ci0gICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VsZWN0OgorICAgIGNhc2UgV2ViS2l0
OjpJbnB1dFR5cGU6OlNlbGVjdDogeworI2lmIEVOQUJMRShJT1NfRk9STV9DT05UUk9MX1JFRlJF
U0gpCisgICAgICAgIGlmIChbc2VsZiBfZm9ybUNvbnRyb2xSZWZyZXNoRW5hYmxlZF0pCisgICAg
ICAgICAgICByZXR1cm4gTk87CisjZW5kaWYKKyAgICAgICAgcmV0dXJuICFXZWJLaXQ6OmN1cnJl
bnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZE9yTWFjKCk7CisgICAgfQogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbG9yOgogI2VuZGlm
CkBAIC0zMDY4LDcgKzMwNzQsNyBAQCAtICh2b2lkKV9kaWRFbmRTY3JvbGxpbmdPclpvb21pbmcK
ICNlbmRpZgogfQogCi1zdGF0aWMgYm9vbCBlbGVtZW50VHlwZVJlcXVpcmVzQWNjZXNzb3J5Vmll
dyhXZWJLaXQ6OklucHV0VHlwZSB0eXBlKQorLSAoYm9vbClfZWxlbWVudFR5cGVSZXF1aXJlc0Fj
Y2Vzc29yeVZpZXc6KFdlYktpdDo6SW5wdXRUeXBlKXR5cGUKIHsKICAgICBzd2l0Y2ggKHR5cGUp
IHsKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpOb25lOgpAQCAtMzA3OCw2ICszMDg0LDEz
IEBAIHN0YXRpYyBib29sIGVsZW1lbnRUeXBlUmVxdWlyZXNBY2Nlc3NvcnlWaWV3KFdlYktpdDo6
SW5wdXRUeXBlIHR5cGUpCiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6TW9udGg6CiAgICAg
Y2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6VGltZToKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlNlbGVjdDogeworI2lmIEVOQUJMRShJT1NfRk9STV9D
T05UUk9MX1JFRlJFU0gpCisgICAgICAgIGlmIChbc2VsZiBfZm9ybUNvbnRyb2xSZWZyZXNoRW5h
YmxlZF0pCisgICAgICAgICAgICByZXR1cm4gTk87CisjZW5kaWYKKyAgICAgICAgcmV0dXJuICFX
ZWJLaXQ6OmN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZE9yTWFjKCk7CisgICAgfQogICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRleHQ6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlw
ZTo6UGFzc3dvcmQ6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6U2VhcmNoOgpAQCAtMzA4
OCw3ICszMTAxLDYgQEAgc3RhdGljIGJvb2wgZWxlbWVudFR5cGVSZXF1aXJlc0FjY2Vzc29yeVZp
ZXcoV2ViS2l0OjpJbnB1dFR5cGUgdHlwZSkKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpO
dW1iZXJQYWQ6CiAgICAgY2FzZSBXZWJLaXQ6OklucHV0VHlwZTo6Q29udGVudEVkaXRhYmxlOgog
ICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OlRleHRBcmVhOgotICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OlNlbGVjdDoKICAgICBjYXNlIFdlYktpdDo6SW5wdXRUeXBlOjpXZWVrOgogI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNv
bG9yOgpAQCAtMzEwNSw3ICszMTE3LDcgQEAgLSAoQk9PTClyZXF1aXJlc0FjY2Vzc29yeVZpZXcK
ICAgICBpZiAoW19mb3JtSW5wdXRTZXNzaW9uIGN1c3RvbUlucHV0QWNjZXNzb3J5Vmlld10pCiAg
ICAgICAgIHJldHVybiBZRVM7CiAKLSAgICByZXR1cm4gZWxlbWVudFR5cGVSZXF1aXJlc0FjY2Vz
c29yeVZpZXcoX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpOworICAgIHJl
dHVybiBbc2VsZiBfZWxlbWVudFR5cGVSZXF1aXJlc0FjY2Vzc29yeVZpZXc6X2ZvY3VzZWRFbGVt
ZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGVdOwogfQogCiAtIChVSVRleHRJbnB1dEFzc2lzdGFu
dEl0ZW0gKilpbnB1dEFzc2lzdGFudEl0ZW0KQEAgLTU5MTMsNiArNTkyNSwxOCBAQCAtICh2b2lk
KV9oaWRlS2V5Ym9hcmQKICAgICAgICAgW3NlbGYgX3VwZGF0ZUFjY2Vzc29yeV07CiB9CiAKKyNp
ZiBFTkFCTEUoSU9TX0ZPUk1fQ09OVFJPTF9SRUZSRVNIKQorCistIChCT09MKV9mb3JtQ29udHJv
bFJlZnJlc2hFbmFibGVkCit7CisgICAgaWYgKCFfcGFnZSkKKyAgICAgICAgcmV0dXJuIE5POwor
CisgICAgcmV0dXJuIF9wYWdlLT5wcmVmZXJlbmNlcygpLmlPU0Zvcm1Db250cm9sUmVmcmVzaEVu
YWJsZWQoKTsKK30KKworI2VuZGlmCisKIC0gKGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJ
bmZvcm1hdGlvbiYpZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbgogewogICAgIHJldHVybiBfZm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbjsKQEAgLTU5NTUsNyArNTk3OSw3IEBAIHN0YXRpYyBib29s
IG1heUNvbnRhaW5TZWxlY3RhYmxlVGV4dChXZWJLaXQ6OklucHV0VHlwZSB0eXBlKQogICAgIH0K
IH0KIAotc3RhdGljIGJvb2wgc2hvdWxkU2hvd0tleWJvYXJkRm9yRWxlbWVudChjb25zdCBXZWJL
aXQ6OkZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24mIGluZm9ybWF0aW9uKQorLSAoYm9vbClfc2hv
dWxkU2hvd0tleWJvYXJkRm9yRWxlbWVudDooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uJilpbmZvcm1hdGlvbgogewogICAgIGlmIChpbmZvcm1hdGlvbi5pbnB1dE1vZGUg
PT0gV2ViQ29yZTo6SW5wdXRNb2RlOjpOb25lKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01
OTYzLDcgKzU5ODcsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRTaG93S2V5Ym9hcmRGb3JFbGVtZW50
KGNvbnN0IFdlYktpdDo6Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbgogICAgIGlmIChtYXlDb250
YWluU2VsZWN0YWJsZVRleHQoaW5mb3JtYXRpb24uZWxlbWVudFR5cGUpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIHJldHVybiBlbGVtZW50VHlwZVJlcXVpcmVzQWNjZXNzb3J5Vmlldyhp
bmZvcm1hdGlvbi5lbGVtZW50VHlwZSk7CisgICAgcmV0dXJuIFtzZWxmIF9lbGVtZW50VHlwZVJl
cXVpcmVzQWNjZXNzb3J5VmlldzppbmZvcm1hdGlvbi5lbGVtZW50VHlwZV07CiB9CiAKIHN0YXRp
YyBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybVBlcmlwaGVyYWw+PiBjcmVhdGVJbnB1dFBlcmlw
aGVyYWxXaXRoVmlldyhXZWJLaXQ6OklucHV0VHlwZSB0eXBlLCBXS0NvbnRlbnRWaWV3ICp2aWV3
KQpAQCAtNTk5NCw3ICs2MDE4LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU09iamVjdCA8V0tGb3Jt
UGVyaXBoZXJhbD4+IGNyZWF0ZUlucHV0UGVyaXBoZXJhbFdpdGhWaWV3KFdlYksKIC0gKHZvaWQp
X2VsZW1lbnREaWRGb2N1czooY29uc3QgV2ViS2l0OjpGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9u
JilpbmZvcm1hdGlvbiB1c2VySXNJbnRlcmFjdGluZzooQk9PTCl1c2VySXNJbnRlcmFjdGluZyBi
bHVyUHJldmlvdXNOb2RlOihCT09MKWJsdXJQcmV2aW91c05vZGUgYWN0aXZpdHlTdGF0ZUNoYW5n
ZXM6KE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPilhY3Rpdml0eVN0YXRl
Q2hhbmdlcyB1c2VyT2JqZWN0OihOU09iamVjdCA8TlNTZWN1cmVDb2Rpbmc+ICopdXNlck9iamVj
dAogewogICAgIFNldEZvclNjb3BlPEJPT0w+IGlzQ2hhbmdpbmdGb2N1c0ZvclNjb3BlIHsgX2lz
Q2hhbmdpbmdGb2N1cywgc2VsZi5faGFzRm9jdXNlZEVsZW1lbnQgfTsKLSAgICBTZXRGb3JTY29w
ZTxCT09MPiBpc0ZvY3VzaW5nRWxlbWVudFdpdGhLZXlib2FyZEZvclNjb3BlIHsgX2lzRm9jdXNp
bmdFbGVtZW50V2l0aEtleWJvYXJkLCBzaG91bGRTaG93S2V5Ym9hcmRGb3JFbGVtZW50KGluZm9y
bWF0aW9uKSB9OworICAgIFNldEZvclNjb3BlPEJPT0w+IGlzRm9jdXNpbmdFbGVtZW50V2l0aEtl
eWJvYXJkRm9yU2NvcGUgeyBfaXNGb2N1c2luZ0VsZW1lbnRXaXRoS2V5Ym9hcmQsIFtzZWxmIF9z
aG91bGRTaG93S2V5Ym9hcmRGb3JFbGVtZW50OmluZm9ybWF0aW9uXSB9OwogCiAgICAgYXV0byBp
bnB1dFZpZXdVcGRhdGVEZWZlcnJlciA9IHN0ZDo6ZXhjaGFuZ2UoX2lucHV0Vmlld1VwZGF0ZURl
ZmVycmVyLCBudWxscHRyKTsKIApAQCAtNzk5OSw2ICs4MDIzLDkgQEAgLSAodm9pZClfcmVtb3Zl
Q29udGV4dE1lbnVWaWV3SWZQb3NzaWJsZQogICAgIC8vIGFuZCBmb3IgdGhlIGRhdGUvdGltZSBw
aWNrZXIuCiAgICAgaWYgKFtzZWxmIGRhdGVUaW1lSW5wdXRDb250cm9sXSkKICAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKFtzZWxmIHNlbGVjdENvbnRyb2xdKQorICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgW3N0ZDo6ZXhjaGFuZ2UoX2NvbnRleHRNZW51SGludENvbnRhaW5lclZpZXcsIG5p
bCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiB9CkBAIC05MTc4LDYgKzkyMDUsMTMgQEAgLSAoV0tE
YXRlVGltZUlucHV0Q29udHJvbCAqKWRhdGVUaW1lSW5wdXRDb250cm9sCiAgICAgcmV0dXJuIG5p
bDsKIH0KIAorLSAoV0tGb3JtU2VsZWN0Q29udHJvbCAqKXNlbGVjdENvbnRyb2wKK3sKKyAgICBp
ZiAoW19pbnB1dFBlcmlwaGVyYWwgaXNLaW5kT2ZDbGFzczpXS0Zvcm1TZWxlY3RDb250cm9sLmNs
YXNzXSkKKyAgICAgICAgcmV0dXJuIChXS0Zvcm1TZWxlY3RDb250cm9sICopX2lucHV0UGVyaXBo
ZXJhbC5nZXQoKTsKKyAgICByZXR1cm4gbmlsOworfQorCiAtICh2b2lkKV9zaW11bGF0ZVRleHRF
bnRlcmVkOihOU1N0cmluZyAqKXRleHQKIHsKICNpZiBQTEFURk9STShXQVRDSE9TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdENvbnRy
b2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29u
dHJvbC5tbQppbmRleCBjMWFmMTYwZjdiMmI2ZDE3ZjI1OWM5MDZmZjU4YzZhYzAwZWIzNTQxLi5k
NjFlOTZkOWQ5MjI2NjRiN2U2ZmY2ZTEyY2U3MjUwYzk4MzUxODZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0Q29udHJvbC5t
bQpAQCAtNzQsNiArNzQsMTUgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVmlldzooV0tDb250
ZW50VmlldyAqKXZpZXcKICAgICB9CiAKICAgICBSZXRhaW5QdHI8TlNPYmplY3QgPFdLRm9ybUNv
bnRyb2w+PiBjb250cm9sOworCisjaWYgRU5BQkxFKElPU19GT1JNX0NPTlRST0xfUkVGUkVTSCkK
KyAgICBpZiAoW3ZpZXcgX2Zvcm1Db250cm9sUmVmcmVzaEVuYWJsZWRdKSB7CisgICAgICAgIC8v
IEZJWE1FOiBBZGQgaW1wbGVtZW50YXRpb24gZm9yIG11bHRpLXNlbGVjdCBwaWNrZXIuCisgICAg
ICAgIGNvbnRyb2wgPSBhZG9wdE5TKFtbV0tTZWxlY3RQaWNrZXIgYWxsb2NdIGluaXRXaXRoVmll
dzp2aWV3XSk7CisgICAgICAgIHJldHVybiBbc3VwZXIgaW5pdFdpdGhWaWV3OnZpZXcgY29udHJv
bDpXVEZNb3ZlKGNvbnRyb2wpXTsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChjdXJyZW50VXNl
ckludGVyZmFjZUlkaW9tSXNQYWRPck1hYygpKQogICAgICAgICBjb250cm9sID0gYWRvcHROUyhb
W1dLU2VsZWN0UG9wb3ZlciBhbGxvY10gaW5pdFdpdGhWaWV3OnZpZXcgaGFzR3JvdXBzOmhhc0dy
b3Vwc10pOwogICAgIGVsc2UgaWYgKHZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pc011
bHRpU2VsZWN0IHx8IGhhc0dyb3VwcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIuaAppbmRleCBkNzcyMGY4N2RhODRhYjIz
MTdhNDRjMDMyMTVhMjE4NWU5YTk4M2JhLi5jY2MyNTRlZWE1NDhhMTJlZmM2NDI3ZTc2ZTE0NzI4
MGE1ZjZhNGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGb3JtU2VsZWN0UGlja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRm9ybVNlbGVjdFBpY2tlci5oCkBAIC0zOCw0ICszOCwxNiBAQAogLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXc7CiBAZW5kCiAKKyNpZiBFTkFC
TEUoSU9TX0ZPUk1fQ09OVFJPTF9SRUZSRVNIKQorCitAaW50ZXJmYWNlIFdLU2VsZWN0UGlja2Vy
IDogTlNPYmplY3QgPFdLRm9ybUNvbnRyb2wKKyNpZiBVU0UoVUlDT05URVhUTUVOVSkKKywgVUlD
b250ZXh0TWVudUludGVyYWN0aW9uRGVsZWdhdGUKKyNlbmRpZgorPgorLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoVmlldzooV0tDb250ZW50VmlldyAqKXZpZXc7CitAZW5kCisKKyNlbmRpZgorCiAj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UGlja2VyLm1tCmluZGV4IGNhODc3MGMx
YWUxODZhMzI4ODI1NmZmM2Y0ZTQ1YzQwMjZjODUzNGIuLmY2OGRhMWFhY2YwY2FjM2YxMDkzYTBm
ODRmZDMwYjRlMzM5NmNiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNrZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5tbQpAQCAtMzMsNyArMzMsOSBAQAogI2lt
cG9ydCAiV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCiAjaW1wb3J0ICJXS0Zvcm1Qb3BvdmVy
LmgiCiAjaW1wb3J0ICJXS0Zvcm1TZWxlY3RDb250cm9sLmgiCisjaW1wb3J0ICJXS1dlYlZpZXdQ
cml2YXRlRm9yVGVzdGluZy5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0IDxX
ZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApA
QCAtNDY0LDQgKzQ2NiwyMzcgQEAgLSAodm9pZClzZWxlY3RSb3c6KE5TSW50ZWdlcilyb3dJbmRl
eCBpbkNvbXBvbmVudDooTlNJbnRlZ2VyKWNvbXBvbmVudEluZGV4IGV4dGUKIAogQGVuZAogCi0j
ZW5kaWYgIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCisjcHJhZ21hIG1hcmsgLSBGb3JtIENvbnRy
b2wgUmVmcmVzaAorCitAaW1wbGVtZW50YXRpb24gV0tTZWxlY3RQaWNrZXIgeworICAgIF9fd2Vh
ayBXS0NvbnRlbnRWaWV3ICpfdmlldzsKKyAgICBDR1BvaW50IF9pbnRlcmFjdGlvblBvaW50Owor
CisjaWYgVVNFKFVJQ09OVEVYVE1FTlUpCisgICAgUmV0YWluUHRyPFVJTWVudT4gX3NlbGVjdE1l
bnU7CisgICAgUmV0YWluUHRyPFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbj4gX3NlbGVjdENvbnRl
eHRNZW51SW50ZXJhY3Rpb247CisjZW5kaWYKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
VmlldzooV0tDb250ZW50VmlldyAqKXZpZXcKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGlu
aXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF92aWV3ID0gdmlldzsKKyAgICBfaW50
ZXJhY3Rpb25Qb2ludCA9IFtfdmlldyBsYXN0SW50ZXJhY3Rpb25Mb2NhdGlvbl07CisjaWYgVVNF
KFVJQ09OVEVYVE1FTlUpCisgICAgX3NlbGVjdE1lbnUgPSBbc2VsZiBjcmVhdGVNZW51XTsKKyNl
bmRpZgorCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKFVJVmlldyAqKWNvbnRyb2xWaWV3Cit7
CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAodm9pZCljb250cm9sQmVnaW5FZGl0aW5nCit7Cisg
ICAgW192aWV3IHN0YXJ0UmVsaW5xdWlzaGluZ0ZpcnN0UmVzcG9uZGVyVG9Gb2N1c2VkRWxlbWVu
dF07CisKKyNpZiBVU0UoVUlDT05URVhUTUVOVSkKKyAgICBXZWJLaXQ6OkludGVyYWN0aW9uSW5m
b3JtYXRpb25SZXF1ZXN0IHBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0IHsgV2ViQ29yZTo6SW50
UG9pbnQoX3ZpZXcuZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5sYXN0SW50ZXJhY3Rpb25Mb2Nh
dGlvbikgfTsKKyAgICBbX3ZpZXcgZG9BZnRlclBvc2l0aW9uSW5mb3JtYXRpb25VcGRhdGU6XihX
ZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIGludGVyYWN0aW9uSW5mb3Jt
YXRpb24pIHsKKyAgICAgICAgW3NlbGYgc2hvd1NlbGVjdFBpY2tlcl07CisgICAgfSBmb3JSZXF1
ZXN0OnBvc2l0aW9uSW5mb3JtYXRpb25SZXF1ZXN0XTsKKyNlbmRpZgorfQorCistICh2b2lkKWNv
bnRyb2xFbmRFZGl0aW5nCit7CisgICAgW192aWV3IHN0b3BSZWxpbnF1aXNoaW5nRmlyc3RSZXNw
b25kZXJUb0ZvY3VzZWRFbGVtZW50XTsKKworI2lmIFVTRShVSUNPTlRFWFRNRU5VKQorICAgIFtz
ZWxmIHJlbW92ZUNvbnRleHRNZW51SW50ZXJhY3Rpb25dOworI2VuZGlmCit9CisKKy0gKHZvaWQp
ZGVhbGxvYworeworI2lmIFVTRShVSUNPTlRFWFRNRU5VKQorICAgIFtzZWxmIHJlbW92ZUNvbnRl
eHRNZW51SW50ZXJhY3Rpb25dOworI2VuZGlmCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCist
ICh2b2lkKWRpZFNlbGVjdE9wdGlvbkluZGV4OihOU0ludGVnZXIpaW5kZXgKK3sKKyAgICBbX3Zp
ZXcgcGFnZV0tPnNldEZvY3VzZWRFbGVtZW50U2VsZWN0ZWRJbmRleChpbmRleCk7Cit9CisKKyNp
ZiBVU0UoVUlDT05URVhUTUVOVSkKKworLSAoVUlNZW51ICopY3JlYXRlTWVudQoreworICAgIGlm
ICghX3ZpZXcuZm9jdXNlZFNlbGVjdEVsZW1lbnRPcHRpb25zLnNpemUoKSkgeworICAgICAgICBV
SUFjdGlvbiAqZW1wdHlBY3Rpb24gPSBbVUlBY3Rpb24gYWN0aW9uV2l0aFRpdGxlOldFQl9VSV9T
VFJJTkdfS0VZKCJObyBPcHRpb25zIiwgIk5vIE9wdGlvbnMgU2VsZWN0IFBvcG92ZXIiLCAiRW1w
dHkgc2VsZWN0IGxpc3QiKSBpbWFnZTpuaWwgaWRlbnRpZmllcjpuaWwgaGFuZGxlcjpeKF9fa2lu
ZG9mIFVJQWN0aW9uICphY3Rpb24pIHsgfV07CisgICAgICAgIGVtcHR5QWN0aW9uLmF0dHJpYnV0
ZXMgPSBVSU1lbnVFbGVtZW50QXR0cmlidXRlc0Rpc2FibGVkOworICAgICAgICByZXR1cm4gW1VJ
TWVudSBtZW51V2l0aFRpdGxlOkAiIiBjaGlsZHJlbjpAW2VtcHR5QWN0aW9uXV07CisgICAgfQor
CisgICAgTlNNdXRhYmxlQXJyYXkgKml0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAg
ICBOU0ludGVnZXIgb3B0aW9uSW5kZXggPSAwOworCisgICAgc2l6ZV90IGN1cnJlbnRJbmRleCA9
IDA7CisgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IF92aWV3LmZvY3VzZWRTZWxlY3RFbGVtZW50
T3B0aW9ucy5zaXplKCkpIHsKKyAgICAgICAgYXV0byYgb3B0aW9uSXRlbSA9IF92aWV3LmZvY3Vz
ZWRTZWxlY3RFbGVtZW50T3B0aW9uc1tjdXJyZW50SW5kZXhdOworICAgICAgICBpZiAob3B0aW9u
SXRlbS5pc0dyb3VwKSB7CisgICAgICAgICAgICBOU1N0cmluZyAqZ3JvdXBUZXh0ID0gb3B0aW9u
SXRlbS50ZXh0OworICAgICAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmdyb3VwZWRJdGVtcyA9IFtO
U011dGFibGVBcnJheSBhcnJheV07CisKKyAgICAgICAgICAgIGN1cnJlbnRJbmRleCsrOworICAg
ICAgICAgICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IF92aWV3LmZvY3VzZWRTZWxlY3RFbGVtZW50
T3B0aW9ucy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICBvcHRpb25JdGVtID0gX3ZpZXcuZm9j
dXNlZFNlbGVjdEVsZW1lbnRPcHRpb25zW2N1cnJlbnRJbmRleF07CisgICAgICAgICAgICAgICAg
aWYgKG9wdGlvbkl0ZW0uaXNHcm91cCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBVSUFjdGlvbiAqYWN0aW9uID0gW3NlbGYgYWN0aW9uRm9yT3B0aW9uSXRl
bTpvcHRpb25JdGVtIHdpdGhJbmRleDpvcHRpb25JbmRleF07CisgICAgICAgICAgICAgICAgW2dy
b3VwZWRJdGVtcyBhZGRPYmplY3Q6YWN0aW9uXTsKKyAgICAgICAgICAgICAgICBvcHRpb25JbmRl
eCsrOworICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCsrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBVSU1lbnUgKmdyb3VwTWVudSA9IFtVSU1lbnUgbWVudVdpdGhUaXRsZTpncm91
cFRleHQgY2hpbGRyZW46Z3JvdXBlZEl0ZW1zXTsKKyAgICAgICAgICAgIFtpdGVtcyBhZGRPYmpl
Y3Q6Z3JvdXBNZW51XTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAg
ICAgVUlBY3Rpb24gKmFjdGlvbiA9IFtzZWxmIGFjdGlvbkZvck9wdGlvbkl0ZW06b3B0aW9uSXRl
bSB3aXRoSW5kZXg6b3B0aW9uSW5kZXhdOworICAgICAgICBbaXRlbXMgYWRkT2JqZWN0OmFjdGlv
bl07CisgICAgICAgIG9wdGlvbkluZGV4Kys7CisgICAgICAgIGN1cnJlbnRJbmRleCsrOworICAg
IH0KKworICAgIHJldHVybiBbVUlNZW51IG1lbnVXaXRoVGl0bGU6QCIiIGNoaWxkcmVuOml0ZW1z
XTsKK30KKworLSAoVUlBY3Rpb24gKilhY3Rpb25Gb3JPcHRpb25JdGVtOihjb25zdCBPcHRpb25J
dGVtJilvcHRpb24gd2l0aEluZGV4OihOU0ludGVnZXIpb3B0aW9uSW5kZXgKK3sKKyAgICBVSUFj
dGlvbiAqb3B0aW9uQWN0aW9uID0gW1VJQWN0aW9uIGFjdGlvbldpdGhUaXRsZTpvcHRpb24udGV4
dCBpbWFnZTpuaWwgaWRlbnRpZmllcjpuaWwgaGFuZGxlcjpeKF9fa2luZG9mIFVJQWN0aW9uICph
Y3Rpb24pIHsKKyAgICAgICAgW3NlbGYgZGlkU2VsZWN0T3B0aW9uSW5kZXg6b3B0aW9uSW5kZXhd
OworICAgIH1dOworCisgICAgaWYgKG9wdGlvbi5kaXNhYmxlZCkKKyAgICAgICAgb3B0aW9uQWN0
aW9uLmF0dHJpYnV0ZXMgPSBVSU1lbnVFbGVtZW50QXR0cmlidXRlc0Rpc2FibGVkOworCisgICAg
aWYgKG9wdGlvbi5pc1NlbGVjdGVkKQorICAgICAgICBvcHRpb25BY3Rpb24uc3RhdGUgPSBVSU1l
bnVFbGVtZW50U3RhdGVPbjsKKworICAgIHJldHVybiBvcHRpb25BY3Rpb247Cit9CisKKy0gKFVJ
VGFyZ2V0ZWRQcmV2aWV3ICopY29udGV4dE1lbnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUlu
dGVyYWN0aW9uICopaW50ZXJhY3Rpb24gcHJldmlld0ZvckhpZ2hsaWdodGluZ01lbnVXaXRoQ29u
ZmlndXJhdGlvbjooVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCit7
CisgICAgcmV0dXJuIFtfdmlldyBfY3JlYXRlVGFyZ2V0ZWRDb250ZXh0TWVudUhpbnRQcmV2aWV3
SWZQb3NzaWJsZV07Cit9CisKKy0gKF9VSUNvbnRleHRNZW51U3R5bGUgKilfY29udGV4dE1lbnVJ
bnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gc3R5bGVG
b3JNZW51V2l0aENvbmZpZ3VyYXRpb246KFVJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uICopY29u
ZmlndXJhdGlvbgoreworICAgIF9VSUNvbnRleHRNZW51U3R5bGUgKnN0eWxlID0gW19VSUNvbnRl
eHRNZW51U3R5bGUgZGVmYXVsdFN0eWxlXTsKKyAgICBzdHlsZS5wcmVmZXJyZWRMYXlvdXQgPSBf
VUlDb250ZXh0TWVudUxheW91dENvbXBhY3RNZW51OworICAgIHJldHVybiBzdHlsZTsKK30KKwor
LSAoVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb24gKiljb250ZXh0TWVudUludGVyYWN0aW9uOihV
SUNvbnRleHRNZW51SW50ZXJhY3Rpb24gKilpbnRlcmFjdGlvbiBjb25maWd1cmF0aW9uRm9yTWVu
dUF0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24KK3sKKyAgICBVSUNvbnRleHRNZW51QWN0aW9u
UHJvdmlkZXIgYWN0aW9uTWVudVByb3ZpZGVyID0gW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tT
ZWxlY3RQaWNrZXI+KHNlbGYpXSAoTlNBcnJheTxVSU1lbnVFbGVtZW50ICo+ICopIC0+IFVJTWVu
dSAqIHsKKyAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAg
IGlmICghc3Ryb25nU2VsZikKKyAgICAgICAgICAgIHJldHVybiBuaWw7CisKKyAgICAgICAgcmV0
dXJuIHN0cm9uZ1NlbGYtPl9zZWxlY3RNZW51LmdldCgpOworICAgIH07CisKKyAgICByZXR1cm4g
W1VJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb25XaXRoSWRlbnRpZmllcjpu
aWwgcHJldmlld1Byb3ZpZGVyOm5pbCBhY3Rpb25Qcm92aWRlcjphY3Rpb25NZW51UHJvdmlkZXJd
OworfQorCistICh2b2lkKWNvbnRleHRNZW51SW50ZXJhY3Rpb246KFVJQ29udGV4dE1lbnVJbnRl
cmFjdGlvbiAqKWludGVyYWN0aW9uIHdpbGxEaXNwbGF5TWVudUZvckNvbmZpZ3VyYXRpb246KFVJ
Q29udGV4dE1lbnVDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBhbmltYXRvcjooaWQgPFVJ
Q29udGV4dE1lbnVJbnRlcmFjdGlvbkFuaW1hdGluZz4pYW5pbWF0b3IKK3sKKyAgICBbYW5pbWF0
b3IgYWRkQ29tcGxldGlvbjpbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS1NlbGVjdFBpY2tlcj4o
c2VsZildIHsKKyAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7CisgICAg
ICAgIGlmIChzdHJvbmdTZWxmKQorICAgICAgICAgICAgW3N0cm9uZ1NlbGYtPl92aWV3LndlYlZp
ZXcgX2RpZFNob3dDb250ZXh0TWVudV07CisgICAgfV07Cit9CisKKy0gKHZvaWQpY29udGV4dE1l
bnVJbnRlcmFjdGlvbjooVUlDb250ZXh0TWVudUludGVyYWN0aW9uICopaW50ZXJhY3Rpb24gd2ls
bEVuZEZvckNvbmZpZ3VyYXRpb246KFVJQ29udGV4dE1lbnVDb25maWd1cmF0aW9uICopY29uZmln
dXJhdGlvbiBhbmltYXRvcjooaWQgPFVJQ29udGV4dE1lbnVJbnRlcmFjdGlvbkFuaW1hdGluZz4p
YW5pbWF0b3IKK3sKKyAgICBbYW5pbWF0b3IgYWRkQ29tcGxldGlvbjpbd2Vha1NlbGYgPSBXZWFr
T2JqQ1B0cjxXS1NlbGVjdFBpY2tlcj4oc2VsZildIHsKKyAgICAgICAgYXV0byBzdHJvbmdTZWxm
ID0gd2Vha1NlbGYuZ2V0KCk7CisgICAgICAgIGlmIChzdHJvbmdTZWxmKSB7CisgICAgICAgICAg
ICBbc3Ryb25nU2VsZi0+X3ZpZXcgYWNjZXNzb3J5RG9uZV07CisgICAgICAgICAgICBbc3Ryb25n
U2VsZi0+X3ZpZXcud2ViVmlldyBfZGlkRGlzbWlzc0NvbnRleHRNZW51XTsKKyAgICAgICAgfQor
ICAgIH1dOworfQorCistICh2b2lkKXJlbW92ZUNvbnRleHRNZW51SW50ZXJhY3Rpb24KK3sKKyAg
ICBpZiAoIV9zZWxlY3RDb250ZXh0TWVudUludGVyYWN0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBbX3ZpZXcgcmVtb3ZlSW50ZXJhY3Rpb246X3NlbGVjdENvbnRleHRNZW51SW50ZXJhY3Rp
b24uZ2V0KCldOworICAgIF9zZWxlY3RDb250ZXh0TWVudUludGVyYWN0aW9uID0gbmlsOworICAg
IFtfdmlldyBfcmVtb3ZlQ29udGV4dE1lbnVWaWV3SWZQb3NzaWJsZV07CisgICAgW192aWV3Lndl
YlZpZXcgX2RpZERpc21pc3NDb250ZXh0TWVudV07Cit9CisKKy0gKHZvaWQpZW5zdXJlQ29udGV4
dE1lbnVJbnRlcmFjdGlvbgoreworICAgIGlmIChfc2VsZWN0Q29udGV4dE1lbnVJbnRlcmFjdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisgICAgX3NlbGVjdENvbnRleHRNZW51SW50ZXJhY3Rpb24g
PSBhZG9wdE5TKFtbVUlDb250ZXh0TWVudUludGVyYWN0aW9uIGFsbG9jXSBpbml0V2l0aERlbGVn
YXRlOnNlbGZdKTsKKyAgICBbX3ZpZXcgYWRkSW50ZXJhY3Rpb246X3NlbGVjdENvbnRleHRNZW51
SW50ZXJhY3Rpb24uZ2V0KCldOworfQorCistICh2b2lkKXNob3dTZWxlY3RQaWNrZXIKK3sKKyAg
ICBbc2VsZiBlbnN1cmVDb250ZXh0TWVudUludGVyYWN0aW9uXTsKKyAgICBbX3NlbGVjdENvbnRl
eHRNZW51SW50ZXJhY3Rpb24gX3ByZXNlbnRNZW51QXRMb2NhdGlvbjpfaW50ZXJhY3Rpb25Qb2lu
dF07Cit9CisKKyNlbmRpZiAvLyBVU0UoVUlDT05URVhUTUVOVSkKKworLy8gV0tTZWxlY3RUZXN0
aW5nCistICh2b2lkKXNlbGVjdFJvdzooTlNJbnRlZ2VyKXJvd0luZGV4IGluQ29tcG9uZW50OihO
U0ludGVnZXIpY29tcG9uZW50SW5kZXggZXh0ZW5kaW5nU2VsZWN0aW9uOihCT09MKWV4dGVuZGlu
Z1NlbGVjdGlvbgoreworI2lmIFVTRShVSUNPTlRFWFRNRU5VKQorICAgIE5TSW50ZWdlciBjdXJy
ZW50Um93ID0gMDsKKworICAgIE5TQXJyYXk8VUlNZW51RWxlbWVudCAqPiAqbWVudUVsZW1lbnRz
ID0gW19zZWxlY3RNZW51IGNoaWxkcmVuXTsKKyAgICBmb3IgKFVJTWVudUVsZW1lbnQgKm1lbnVF
bGVtZW50IGluIG1lbnVFbGVtZW50cykgeworICAgICAgICBpZiAoW21lbnVFbGVtZW50IGlzS2lu
ZE9mQ2xhc3M6VUlBY3Rpb24uY2xhc3NdKSB7CisgICAgICAgICAgICBpZiAoY3VycmVudFJvdyA9
PSByb3dJbmRleCkgeworICAgICAgICAgICAgICAgIFsoVUlBY3Rpb24gKiltZW51RWxlbWVudCBf
cGVyZm9ybUFjdGlvbldpdGhTZW5kZXI6bmlsXTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgY3VycmVudFJvdysrOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICBVSU1lbnUgKmdyb3VwZWRNZW51ID0gKFVJTWVu
dSAqKW1lbnVFbGVtZW50OworICAgICAgICBpZiAoY3VycmVudFJvdyArIGdyb3VwZWRNZW51LmNo
aWxkcmVuLmNvdW50IDw9IChOU1VJbnRlZ2VyKXJvd0luZGV4KQorICAgICAgICAgICAgY3VycmVu
dFJvdyArPSBncm91cGVkTWVudS5jaGlsZHJlbi5jb3VudDsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBVSUFjdGlvbiAqYWN0aW9uID0gKFVJQWN0aW9uICopW2dyb3VwZWRNZW51LmNoaWxk
cmVuIG9iamVjdEF0SW5kZXg6cm93SW5kZXggLSBjdXJyZW50Um93XTsKKyAgICAgICAgICAgIFth
Y3Rpb24gX3BlcmZvcm1BY3Rpb25XaXRoU2VuZGVyOm5pbF07CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKworICAgIFtzZWxmIHJlbW92ZUNvbnRleHRNZW51SW50ZXJhY3Rp
b25dOworI2VuZGlmCit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNTRmYjhkMDYxM2Q4NGFmY2I2Yjc0NDk0MWM3MWFlYWI4ZDQ4MjdmMy4uYjI0MDI5
ZTYyOTkxYjU4ZmM1Yjg0NGU0NjY3ZDFkNzM0MTRhOTVlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBA
CisyMDIxLTAxLTI5ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbaU9TXVtGQ1JdIEFkZCBuZXcgcGlja2VyIGZvciBzZWxlY3QgZWxlbWVudHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTE1MworICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNzM3NzAzODk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Zvcm1zL2lvcy9mb3JtLWNvbnRyb2wtcmVmcmVz
aC9zZWxlY3QvY2hvb3NlLXNlbGVjdC1vcHRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Zvcm1zL2lvcy9mb3JtLWNvbnRyb2wtcmVmcmVzaC9zZWxlY3QvY2hvb3NlLXNl
bGVjdC1vcHRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5q
czoKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci53YWl0Rm9yQ29udGV4dE1lbnVUb1Nob3cpOgor
CisgICAgICAgIEFkZGVkIGEgbmV3IFVJSGVscGVyIG1ldGhvZCB0byB3YWl0IHVudGlsIGEgY29u
dGV4dCBtZW51IGlzIGRpc3BsYXllZC4KKwogMjAyMS0wMS0yNSAgQWRpdHlhIEtlZXJ0aGkgIDxh
a2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gT2JzY3VyZWQgZWxlbWVudHMgc2hv
dWxkIG5vdCBiZSBmb2N1c2FibGUgdXNpbmcgdGhlIGFjY2Vzc29yeSBiYXIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW9zL2Zvcm0tY29udHJvbC1yZWZyZXNoL3NlbGVjdC9j
aG9vc2Utc2VsZWN0LW9wdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1z
L2lvcy9mb3JtLWNvbnRyb2wtcmVmcmVzaC9zZWxlY3QvY2hvb3NlLXNlbGVjdC1vcHRpb24tZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2MTRiODFlYTE0MjY5ZjFiOWM5NDMzMWI1ZjQwYjE5MWI5
NTIyODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zvcm1zL2lvcy9mb3Jt
LWNvbnRyb2wtcmVmcmVzaC9zZWxlY3QvY2hvb3NlLXNlbGVjdC1vcHRpb24tZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHRhcHBpbmcgb24gYSBz
ZWxlY3QgZWxlbWVudCBhbmQgY2hvb3NpbmcgYW4gb3B0aW9uIHZpYSB0aGUgcHJlc2VudGVkIGNv
bnRleHQgbWVudSB1cGRhdGVzIHRoZSBlbGVtZW50J3MgdmFsdWUuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIHNlbGVjdC52YWx1ZSBpcyAiSmFudWFyeSIKK1BBU1Mgc2Vs
ZWN0LnZhbHVlIGlzICJBcHJpbCIKK1BBU1MgZ3JvdXBlZC52YWx1ZSBpcyAiSmFudWFyeSIKK1BB
U1MgZ3JvdXBlZC52YWx1ZSBpcyAiT2N0b2JlciIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Zv
cm1zL2lvcy9mb3JtLWNvbnRyb2wtcmVmcmVzaC9zZWxlY3QvY2hvb3NlLXNlbGVjdC1vcHRpb24u
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZm9ybXMvaW9zL2Zvcm0tY29udHJvbC1yZWZyZXNoL3Nl
bGVjdC9jaG9vc2Utc2VsZWN0LW9wdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljMDAxNTU3NGRiNjk1
NzIyM2NmODMwOGNmM2NlOGY0MzFkMGE3YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2Zvcm1zL2lvcy9mb3JtLWNvbnRyb2wtcmVmcmVzaC9zZWxlY3QvY2hvb3NlLXNlbGVj
dC1vcHRpb24uaHRtbApAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgSU9TRm9ybUNvbnRyb2xS
ZWZyZXNoRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1z
Y2FsZT0xLCB1c2VyLXNjYWxhYmxlPW5vIj4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKzxib2R5PgorPHNlbGVjdCBpZD0ic2VsZWN0Ij4KKyAgICA8b3B0aW9uPkphbnVh
cnk8L29wdGlvbj4KKyAgICA8b3B0aW9uPkZlYnJ1YXJ5PC9vcHRpb24+CisgICAgPG9wdGlvbj5N
YXJjaDwvb3B0aW9uPgorICAgIDxvcHRpb24+QXByaWw8L29wdGlvbj4KKyAgICA8b3B0aW9uPk1h
eTwvb3B0aW9uPgorICAgIDxvcHRpb24+SnVuZTwvb3B0aW9uPgorICAgIDxvcHRpb24+SnVseTwv
b3B0aW9uPgorICAgIDxvcHRpb24+QXVndXN0PC9vcHRpb24+CisgICAgPG9wdGlvbj5TZXB0ZW1i
ZXI8L29wdGlvbj4KKyAgICA8b3B0aW9uPk9jdG9iZXI8L29wdGlvbj4KKyAgICA8b3B0aW9uPk5v
dmVtYmVyPC9vcHRpb24+CisgICAgPG9wdGlvbj5EZWNlbWJlcjwvb3B0aW9uPgorPC9zZWxlY3Q+
CisKKzxzZWxlY3QgaWQ9Imdyb3VwZWQiPgorICAgIDxvcHRncm91cCBsYWJlbD0iV2ludGVyIj4K
KyAgICAgICAgPG9wdGlvbj5KYW51YXJ5PC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+RmVicnVh
cnk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj5NYXJjaDwvb3B0aW9uPgorICAgIDwvb3B0Z3Jv
dXA+CisgICAgPG9wdGdyb3VwIGxhYmVsPSJTcHJpbmciPgorICAgICAgICA8b3B0aW9uPkFwcmls
PC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+TWF5PC9vcHRpb24+CisgICAgICAgIDxvcHRpb24+
SnVuZTwvb3B0aW9uPgorICAgIDwvb3B0Z3JvdXA+CisgICAgPG9wdGdyb3VwIGxhYmVsPSJTdW1t
ZXIiPgorICAgICAgICA8b3B0aW9uPkp1bHk8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj5BdWd1
c3Q8L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj5TZXB0ZW1iZXI8L29wdGlvbj4KKyAgICA8L29w
dGdyb3VwPgorICAgIDxvcHRncm91cCBsYWJlbD0iRmFsbCI+CisgICAgICAgIDxvcHRpb24+T2N0
b2Jlcjwvb3B0aW9uPgorICAgICAgICA8b3B0aW9uPk5vdmVtYmVyPC9vcHRpb24+CisgICAgICAg
IDxvcHRpb24+RGVjZW1iZXI8L29wdGlvbj4KKyAgICA8L29wdGdyb3VwPgorPC9zZWxlY3Q+Cis8
L2JvZHk+Cis8c2NyaXB0PgoranNUZXN0SXNBc3luYyA9IHRydWU7CisKK2FkZEV2ZW50TGlzdGVu
ZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJp
ZmllcyB0aGF0IHRhcHBpbmcgb24gYSBzZWxlY3QgZWxlbWVudCBhbmQgY2hvb3NpbmcgYW4gb3B0
aW9uIHZpYSB0aGUgcHJlc2VudGVkIGNvbnRleHQgbWVudSB1cGRhdGVzIHRoZSBlbGVtZW50J3Mg
dmFsdWUuIik7CisKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoInNlbGVjdC52YWx1ZSIsICJK
YW51YXJ5Iik7CisgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVFbGVtZW50KHNlbGVjdCk7Cisg
ICAgYXdhaXQgVUlIZWxwZXIud2FpdEZvckNvbnRleHRNZW51VG9TaG93KCk7CisgICAgYXdhaXQg
VUlIZWxwZXIuc2VsZWN0Rm9ybUFjY2Vzc29yeVBpY2tlclJvdygzKTsKKyAgICBhd2FpdCBVSUhl
bHBlci53YWl0Rm9yQ29udGV4dE1lbnVUb0hpZGUoKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoInNlbGVjdC52YWx1ZSIsICJBcHJpbCIpOworCisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJncm91cGVkLnZhbHVlIiwgIkphbnVhcnkiKTsKKyAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0
ZUVsZW1lbnQoZ3JvdXBlZCk7CisgICAgYXdhaXQgVUlIZWxwZXIud2FpdEZvckNvbnRleHRNZW51
VG9TaG93KCk7CisgICAgYXdhaXQgVUlIZWxwZXIuc2VsZWN0Rm9ybUFjY2Vzc29yeVBpY2tlclJv
dyg5KTsKKyAgICBhd2FpdCBVSUhlbHBlci53YWl0Rm9yQ29udGV4dE1lbnVUb0hpZGUoKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImdyb3VwZWQudmFsdWUiLCAiT2N0b2JlciIpOworCisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9KTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNl
cy91aS1oZWxwZXIuanMKaW5kZXggMjJlZTUyZjUxYzViODgwZTc3MzIwZGY0MzJjNjMwODdiZTVi
Y2UzZi4uMzc5ODVjMWViMmQwMGNjNTQ4ZjdiMmI3ZjkzMDBjNjhlZTVkNWM3NSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcworKysgYi9MYXlvdXRUZXN0cy9y
ZXNvdXJjZXMvdWktaGVscGVyLmpzCkBAIC02NTAsNiArNjUwLDIyIEBAIHdpbmRvdy5VSUhlbHBl
ciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICAgICAgfSk7CiAgICAgfQogCisgICAgc3RhdGljIHdh
aXRGb3JDb250ZXh0TWVudVRvU2hvdygpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaXNXZWJL
aXQyKCkgfHwgIXRoaXMuaXNJT1NGYW1pbHkoKSkKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNl
LnJlc29sdmUoKTsKKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKKyAgICAgICAgICAgICAgICAoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghdWlDb250cm9sbGVyLmlzU2hvd2lu
Z0NvbnRleHRNZW51KQorICAgICAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRpZFNo
b3dDb250ZXh0TWVudUNhbGxiYWNrID0gKCkgPT4gdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxl
dGUoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
dWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoKTsKKyAgICAgICAgICAgICAgICB9KSgpYCwg
cmVzb2x2ZSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIHN0YXRpYyB3YWl0Rm9yQ29udGV4
dE1lbnVUb0hpZGUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpIHx8ICF0
aGlzLmlzSU9TRmFtaWx5KCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>