<?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>237835</bug_id>
          
          <creation_ts>2022-03-14 10:00:49 -0700</creation_ts>
          <short_desc>[iOS] Indefinite hang when printing using a UIPrintPageRenderer</short_desc>
          <delta_ts>2022-03-15 10:40:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Printing</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>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>megan_gardner</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>1850918</commentid>
    <comment_count>0</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-03-14 10:00:49 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850919</commentid>
    <comment_count>1</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-03-14 10:01:04 -0700</bug_when>
    <thetext>rdar://90002387</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850922</commentid>
    <comment_count>2</comment_count>
      <attachid>454602</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-03-14 10:04:03 -0700</bug_when>
    <thetext>Created attachment 454602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850940</commentid>
    <comment_count>3</comment_count>
      <attachid>454602</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-03-14 10:54:37 -0700</bug_when>
    <thetext>Comment on attachment 454602
Patch

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

r=me, thanks for fixing!

&gt; Source/WebKit/UIProcess/ios/WKContentView.mm:692
&gt; +    if (_pdfPrintCallbackID) {

NIT: Do we need to check for `_pdfPrintCallbackID` here?  I feel like the inner `if` is enough.

&gt; Source/WebKit/UIProcess/ios/WKContentView.mm:932
&gt; +        _pdfPrintCompletionSemaphore = makeUnique&lt;BinarySemaphore&gt;();

NIT: should we `ASSERT(!_pdfPrintCompletionSemaphore);`?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewPrintFormatter.mm:99
&gt; +TEST(WKWebView, PrintToPDF)

Is there a way for us to test the non-main-thread path as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850989</commentid>
    <comment_count>4</comment_count>
      <attachid>454618</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-03-14 13:30:24 -0700</bug_when>
    <thetext>Created attachment 454618
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850991</commentid>
    <comment_count>5</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2022-03-14 13:32:42 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #3)
&gt; Comment on attachment 454602 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=454602&amp;action=review
&gt; 
&gt; r=me, thanks for fixing!

Thanks for the review!
 
&gt; &gt; Source/WebKit/UIProcess/ios/WKContentView.mm:692
&gt; &gt; +    if (_pdfPrintCallbackID) {
&gt; 
&gt; NIT: Do we need to check for `_pdfPrintCallbackID` here?  I feel like the
&gt; inner `if` is enough.

Removed, the inner `if` is enough due to the null check.
 
&gt; &gt; Source/WebKit/UIProcess/ios/WKContentView.mm:932
&gt; &gt; +        _pdfPrintCompletionSemaphore = makeUnique&lt;BinarySemaphore&gt;();
&gt; 
&gt; NIT: should we `ASSERT(!_pdfPrintCompletionSemaphore);`?

Added an assertion.
 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewPrintFormatter.mm:99
&gt; &gt; +TEST(WKWebView, PrintToPDF)
&gt; 
&gt; Is there a way for us to test the non-main-thread path as well?

Added a test which exercises the non-main-thread path using UIPrintInteractionController.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851376</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-15 10:40:40 -0700</bug_when>
    <thetext>Committed r291304 (248443@main): &lt;https://commits.webkit.org/248443@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454618.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454602</attachid>
            <date>2022-03-14 10:04:03 -0700</date>
            <delta_ts>2022-03-14 13:30:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237835-20220314100402.patch</filename>
            <type>text/plain</type>
            <size>19628</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc0MjBkMTYwMDhhMWVkODAzZDEzYTRi
NTU3MTlmM2E1ZjU5MTZmOWIuLjRmMDNiMTkyNzA3YzE0ODA2NjIzOWEyYjcxNjEzOTQyMTY0ODk3
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDMtMTMgIEFkaXR5YSBLZWVydGhpICA8YWtl
ZXJ0aGlAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEluZGVmaW5pdGUgaGFuZyB3aGVuIHBy
aW50aW5nIHVzaW5nIGEgVUlQcmludFBhZ2VSZW5kZXJlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3ODM1CisgICAgICAgIHJkYXI6Ly85MDAwMjM4
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92
ZSB1bnVzZWQgSEFWRSBtYWNyby4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUuaDoKKwog
MjAyMi0wMy0xMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gQWRkIGEgdW5pdCB0ZXN0cyB0byBjaGVjayB0aGUgcmVtb3RlIGluc3Bl
Y3RvciBIVFRQIHNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjMjQ1MzAxY2VjMDkxZWNhNWU1Yzk4NjI3NDY0
ODUyNThlYWRiZjY5Li40YTMyODQ2ZmZjNTcxNDhhM2UyZDczMTU3NTBhZTA3YzI0MGFkMDE0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIyLTAzLTEzICBBZGl0eWEgS2VlcnRoaSAgPGFr
ZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbmRlZmluaXRlIGhhbmcgd2hlbiBw
cmludGluZyB1c2luZyBhIFVJUHJpbnRQYWdlUmVuZGVyZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzgzNQorICAgICAgICByZGFyOi8vOTAwMDIz
ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICByMjkw
MTg2IGFkb3B0ZWQgVUlLaXQgQVBJIHRvIHN1cHBvcnQgcHJpbnRpbmcgd2ViIGNvbnRlbnQgb24g
YQorICAgICAgICBiYWNrZ3JvdW5kIHRocmVhZCwgdG8gYXZvaWQgYmxvY2tpbmcgdGhlIG1haW4g
dGhyZWFkIHdoaWxlIHdhaXRpbmcKKyAgICAgICAgb24gUERGIGRhdGEgZnJvbSB0aGUgd2ViIHBy
b2Nlc3MuIEhvd2V2ZXIsIHRoZSBjaGFuZ2VzIG1hZGUgdGhlCisgICAgICAgIGFzc3VtcHRpb24g
dGhhdCwgd2l0aCB0aGUgbmV3IEFQSSwgYWxsIHByaW50aW5nIHdvdWxkIGJlIHBlcmZvcm1lZCBv
bgorICAgICAgICBhIGJhY2tncm91bmQgdGhyZWFkLiBXaGlsZSB0aGlzIGlzIHRoZSBjYXNlIHdo
ZW4gdXNpbmcKKyAgICAgICAgVUlQcmludEludGVyYWN0aW9uQ29udHJvbGxlciwgY2xpZW50cyBj
YW4gYWxzbyBwcmludCB1c2luZworICAgICAgICBVSVByaW50UGFnZVJlbmRlcmVyIG9uIHRoZSBt
YWluIHRocmVhZC4gVGhlIGJhY2tncm91bmQgdGhyZWFkIGxvZ2ljCisgICAgICAgIHdhaXRzIG9u
IGEgc2VtYXBob3JlLCB1bnRpbCBQREYgZGF0YSBpcyByZWNlaXZlZCBvbiB0aGUgbWFpbiB0aHJl
YWQuCisgICAgICAgIEhvd2V2ZXIsIGlmIHRoZSBsb2dpYyBydW5zIG9uIHRoZSBtYWluIHRocmVh
ZCwgaXQgd2lsbCB3YWl0IG9uIHRoZQorICAgICAgICBzZW1hcGhvcmUgaW5kZWZpbml0ZWx5Lgor
CisgICAgICAgIFRvIGZpeCwgcmVzdG9yZSB0aGUgb3JpZ2luYWwgc3luYyBJUEMgY29kZXBhdGgg
d2hlbiBwZXJmb3JtaW5nIHByaW50aW5nCisgICAgICAgIG9uIHRoZSBtYWluIHRocmVhZC4gQWRk
aXRpb25hbGx5LCBtYWtlIHRoZSBCaW5hcnlTZW1hcGhvcmUgYQorICAgICAgICB1bmlxdWVfcHRy
LCBzbyB0aGF0IGl0IGNhbiBiZSBzaWduYWxsZWQgYW5kIHJlc2V0IGluIGZhaWx1cmUgc2NlbmFy
aW9zLAorICAgICAgICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYSB0aHJlYWQgd2FzIHdhaXRpbmcg
b24gdGhlIHNlbWFwaG9yZS4gVGhpcworICAgICAgICBjaGFuZ2UgYWxzbyBhbGxvd3MgdXMgdG8g
YXZvaWQgY3JlYXRpbmcgdGhlIEJpbmFyeVNlbWFwaG9yZSB1bmxlc3MgaXQKKyAgICAgICAgaXMg
YWN0dWFsbHkgbmVlZGVkLgorCisgICAgICAgIEFsbCB1c2VzIG9mIEhBVkUoVUlLSVRfQkFDS0dS
T1VORF9USFJFQURfUFJJTlRJTkcpIGFyZSByZW1vdmVkLCBhcyB0aGUKKyAgICAgICAgQVBJIGFk
b3B0aW9uIG9ubHkgaW52b2x2ZXMgYSBtZXRob2Qgb3ZlcnJpZGUsIHdoaWNoIGlzIGhhcm1sZXNz
IGluCisgICAgICAgIGJ1aWxkcyB0aGF0IGxhY2sgc3VwcG9ydCBmb3IgdGhlIG5ldyBBUEkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L19XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvX1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3Byb2Nlc3NEaWRFeGl0
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0
dGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF93YWl0Rm9yRHJhd1RvUERGQ2FsbGJh
Y2tJZk5lZWRlZF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF93a19wcmludGVkRG9jdW1l
bnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKwogMjAyMi0wMy0xMSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNv
bT4KIAogICAgICAgICBbV2luQ2Fpcm9dIERyYXdpbmdBcmVhV0M6OnNlbmRVcGRhdGVBQyBzaG91
bGQga2VlcCBhIFdlYWtQdHIgb2YgdGhpcyBmb3IgdGhlIHJlcGx5IGhhbmRsZXIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZv
cm1IYXZlLmgKaW5kZXggZTJlZjQ1NzBiNGUxNDgwODk1YTdkOWZiNWUzZGJkNDkxODFlYTc4My4u
MTZkN2FjYTRkODJhYmYyZjgzNmM0YmJhMzZiZjc3MDQ2NDI3NmYyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1I
YXZlLmgKQEAgLTEyMjMsNyArMTIyMywzIEBACiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMzAwMDApIHx8IChQTEFURk9STShJT1MpICYm
IF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE2MDAwMCkgfHwgKFBMQVRGT1JN
KFdBVENIT1MpICYmIF9fV0FUQ0hfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gOTAwMDApCiAj
ZGVmaW5lIEhBVkVfU0FGRV9CUk9XU0lOR19SRVNVTFRfREVUQUlMUyAxCiAjZW5kaWYKLQotI2lm
IChQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE2
MDAwMCkKLSNkZWZpbmUgSEFWRV9VSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORyAxCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMDNjMDNkNTFj
ZTQ3M2I0NzIzMDc1OWQ4Yjc1YjRlODM0YWJmMDg3MC4uMDk0ZGFmNDkzYzYxM2ZjZDhmMmU5NTFl
ZjJhMDQxZGVlZjNlMTBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTE0MTcsOSArMTQxNyw3IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCBkcmF3UGFnZXNUb1BE
RihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQz
Ml90IGNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFQSTo6RGF0YSopPiYmKTsKICAgICB2
b2lkIGRyYXdUb1BERihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6RmxvYXRSZWN0PiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBD
OjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jaWYg
IUhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCiAgICAgc2l6ZV90IGNvbXB1
dGVQYWdlc0ZvclByaW50aW5naU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJp
bnRJbmZvJik7Ci0jZW5kaWYKICAgICB1aW50NjRfdCBkcmF3VG9QREZpT1MoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyLCBjb25zdCBQcmludEluZm8mLCBzaXplX3QgcGFnZUNvdW50LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6U2hhcmVkQnVmZmVyQ29weSYpPiYmKTsKICNlbmRp
ZgogI2VsaWYgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
X1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tCmluZGV4IGI2YTU1NDFmM2Q4ZWRiZmQzNzM5N2Ni
ZTIzNDQ5NzgzZDkzY2ZiNmYuLjE2Yzk1ZjY3NTcxNTAyZDUzMDU3NzNiZGYwOWNiMGEzNWI1MGRi
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZv
cm1hdHRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRG
b3JtYXR0ZXIubW0KQEAgLTQ0LDE1ICs0NCwxMSBAQAogICAgIEJPT0wgX3N1cHByZXNzUGFnZUNv
dW50UmVjYWxjOwogfQogCi0jaWYgSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElO
RykKLQogLSAoQk9PTClyZXF1aXJlc01haW5UaHJlYWQKIHsKICAgICByZXR1cm4gc2VsZi5fd2Vi
Vmlldy5fcHJpbnRQcm92aWRlci5fd2tfcHJpbnRGb3JtYXR0ZXJSZXF1aXJlc01haW5UaHJlYWQ7
CiB9CiAKLSNlbmRpZiAvLyBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQot
CiAtIChfV0tGcmFtZUhhbmRsZSAqKWZyYW1lVG9QcmludAogewogICAgIHJldHVybiBfZnJhbWVU
b1ByaW50LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19X
S1dlYlZpZXdQcmludEZvcm1hdHRlckludGVybmFsLmgKaW5kZXggN2NkMzVjMGZkODRjY2FjOTM2
NmRhYzQzNTA4MDU4Nzc4NGIwMmY0NC4uNTZkZDc5MTZlMzczMWUzZTVkNmU2ZTVmZTFmZWNkNmNk
ZTNiOTJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1By
aW50Rm9ybWF0dGVySW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tX
ZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oCkBAIC0zNywxMCArMzcsOCBAQAogQGVuZAog
CiBAcHJvdG9jb2wgX1dLV2ViVmlld1ByaW50UHJvdmlkZXIgPE5TT2JqZWN0PgotI2lmIEhBVkUo
VUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCi1AcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIEJPT0wgX3drX3ByaW50Rm9ybWF0dGVyUmVxdWlyZXNNYWluVGhyZWFkOwotI2Vu
ZGlmCiAtIChOU1VJbnRlZ2VyKV93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyICopcHJpbnRGb3JtYXR0ZXI7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIEJPT0wgX3drX3ByaW50Rm9ybWF0dGVyUmVxdWlyZXNNYWluVGhyZWFkOwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1BERkRvY3VtZW50UmVmIF93a19wcmlu
dGVkRG9jdW1lbnQ7CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW0KaW5kZXggZDlhNDRjNGMyYTEzOTkwZTFkOTBlYTVjZjQwNGJlMDIyNGIwOTA1
YS4uZjViZTZiMTc0YjEwYTUxZTU1MTgwNTc1Y2M3YTcyNGEzZGIwYTE4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTE0OCw5ICsxNDgsNyBA
QAogICAgIFJldGFpblB0cjxOU1VuZG9NYW5hZ2VyPiBfdW5kb01hbmFnZXI7CiAgICAgUmV0YWlu
UHRyPFdLUXVpcmt5TlNVbmRvTWFuYWdlcj4gX3F1aXJreVVuZG9NYW5hZ2VyOwogCi0jaWYgSEFW
RShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKLSAgICBCaW5hcnlTZW1hcGhvcmUg
X3BkZlByaW50Q29tcGxldGlvblNlbWFwaG9yZTsKLSNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0
cjxCaW5hcnlTZW1hcGhvcmU+IF9wZGZQcmludENvbXBsZXRpb25TZW1hcGhvcmU7CiAgICAgdWlu
dDY0X3QgX3BkZlByaW50Q2FsbGJhY2tJRDsKICAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJl
Zj4gX3ByaW50ZWREb2N1bWVudDsKICAgICBWZWN0b3I8UmV0YWluUHRyPE5TVVJMPj4gX3RlbXBv
cmFyeVVSTHNUb0RlbGV0ZVdoZW5EZWFsbG9jYXRlZDsKQEAgLTY5MSwxMCArNjg5LDExIEBAIHN0
YXRpYyB2b2lkIHN0b3JlQWNjZXNzaWJpbGl0eVJlbW90ZUNvbm5lY3Rpb25JbmZvcm1hdGlvbihp
ZCBlbGVtZW50LCBwaWRfdCBwaWQsCiAgICAgW3NlbGYgX3JlbW92ZVZpc2liaWxpdHlQcm9wYWdh
dGlvblZpZXdGb3JXZWJQcm9jZXNzXTsKICNlbmRpZgogCi0jaWYgSEFWRShVSUtJVF9CQUNLR1JP
VU5EX1RIUkVBRF9QUklOVElORykKLSAgICBpZiAoX3BkZlByaW50Q2FsbGJhY2tJRCkKLSAgICAg
ICAgX3BkZlByaW50Q29tcGxldGlvblNlbWFwaG9yZS5zaWduYWwoKTsKLSNlbmRpZgorICAgIGlm
IChfcGRmUHJpbnRDYWxsYmFja0lEKSB7CisgICAgICAgIGlmIChhdXRvIHBkZlByaW50Q29tcGxl
dGlvblNlbWFwaG9yZSA9IHN0ZDo6ZXhjaGFuZ2UoX3BkZlByaW50Q29tcGxldGlvblNlbWFwaG9y
ZSwgbnVsbHB0cikpCisgICAgICAgICAgICBwZGZQcmludENvbXBsZXRpb25TZW1hcGhvcmUtPnNp
Z25hbCgpOworICAgIH0KKwogICAgIF9wZGZQcmludENhbGxiYWNrSUQgPSAwOwogfQogCkBAIC04
NjksMjAgKzg2OCwxNCBAQCBzdGF0aWMgdm9pZCBzdG9yZUFjY2Vzc2liaWxpdHlSZW1vdGVDb25u
ZWN0aW9uSW5mb3JtYXRpb24oaWQgZWxlbWVudCwgcGlkX3QgcGlkLAogCiBAaW1wbGVtZW50YXRp
b24gV0tDb250ZW50VmlldyAoX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyKQogCi0jaWYgSEFWRShV
SUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKLQogLSAoQk9PTClfd2tfcHJpbnRGb3Jt
YXR0ZXJSZXF1aXJlc01haW5UaHJlYWQKIHsKICAgICByZXR1cm4gTk87CiB9CiAKLSNlbmRpZiAv
LyBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQotCiAtIChOU1VJbnRlZ2Vy
KV93a19wYWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
ICopcHJpbnRGb3JtYXR0ZXIKIHsKLSNpZiBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BS
SU5USU5HKQotICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSNlbmRpZgorICAgIGJvb2wg
aXNQcmludGluZ09uQmFja2dyb3VuZFRocmVhZCA9ICFpc01haW5SdW5Mb29wKCk7CiAKICAgICBb
c2VsZiBfd2FpdEZvckRyYXdUb1BERkNhbGxiYWNrSWZOZWVkZWRdOwogCkBAIC05MjAsMjIgKzkx
MywyNCBAQCBzdGF0aWMgdm9pZCBzdG9yZUFjY2Vzc2liaWxpdHlSZW1vdGVDb25uZWN0aW9uSW5m
b3JtYXRpb24oaWQgZWxlbWVudCwgcGlkX3QgcGlkLAogICAgIGlmIChwcmludEluZm8uc25hcHNo
b3RGaXJzdFBhZ2UpCiAgICAgICAgIHBhZ2VDb3VudCA9IDE7CiAgICAgZWxzZSB7Ci0jaWYgSEFW
RShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKLSAgICAgICAgQmluYXJ5U2VtYXBo
b3JlIGNvbXB1dGVQYWdlc1NlbWFwaG9yZTsKLSAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3Nl
bGYsIGZyYW1lSUQsIHByaW50SW5mbywgJnBhZ2VDb3VudCwgJmNvbXB1dGVQYWdlc1NlbWFwaG9y
ZV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIF9wYWdlLT5jb21wdXRlUGFnZXNGb3JQcmludGlu
ZyhmcmFtZUlELCBwcmludEluZm8sIFsmcGFnZUNvdW50LCAmY29tcHV0ZVBhZ2VzU2VtYXBob3Jl
XShjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIC8qIHRv
dGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyAqLywgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRl
bnQmIC8qIGNvbXB1dGVkUGFnZU1hcmdpbiAqLykgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKHBhZ2VSZWN0cy5zaXplKCkgPj0gMSk7Ci0gICAgICAgICAgICAgICAgcGFnZUNvdW50
ID0gcGFnZVJlY3RzLnNpemUoKTsKLQotICAgICAgICAgICAgICAgIGNvbXB1dGVQYWdlc1NlbWFw
aG9yZS5zaWduYWwoKTsKKyAgICAgICAgaWYgKGlzUHJpbnRpbmdPbkJhY2tncm91bmRUaHJlYWQp
IHsKKyAgICAgICAgICAgIEJpbmFyeVNlbWFwaG9yZSBjb21wdXRlUGFnZXNTZW1hcGhvcmU7Cisg
ICAgICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbc2VsZiwgZnJhbWVJRCwgcHJpbnRJbmZvLCAm
cGFnZUNvdW50LCAmY29tcHV0ZVBhZ2VzU2VtYXBob3JlXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgICAgIF9wYWdlLT5jb21wdXRlUGFnZXNGb3JQcmludGluZyhmcmFtZUlELCBwcmludEluZm8s
IFsmcGFnZUNvdW50LCAmY29tcHV0ZVBhZ2VzU2VtYXBob3JlXShjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6SW50UmVjdD4mIHBhZ2VSZWN0cywgZG91YmxlIC8qIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmlu
dGluZyAqLywgY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIC8qIGNvbXB1dGVkUGFnZU1h
cmdpbiAqLykgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwYWdlUmVjdHMu
c2l6ZSgpID49IDEpOworICAgICAgICAgICAgICAgICAgICBwYWdlQ291bnQgPSBwYWdlUmVjdHMu
c2l6ZSgpOworCisgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVQYWdlc1NlbWFwaG9yZS5zaWdu
YWwoKTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsK
LSAgICAgICAgY29tcHV0ZVBhZ2VzU2VtYXBob3JlLndhaXQoKTsKLSNlbHNlCi0gICAgICAgIHBh
Z2VDb3VudCA9IF9wYWdlLT5jb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhmcmFtZUlELCBwcmlu
dEluZm8pOwotI2VuZGlmCisgICAgICAgICAgICBjb21wdXRlUGFnZXNTZW1hcGhvcmUud2FpdCgp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHBhZ2VDb3VudCA9IF9wYWdlLT5jb21wdXRl
UGFnZXNGb3JQcmludGluZ2lPUyhmcmFtZUlELCBwcmludEluZm8pOwogICAgIH0KIAorICAgIGlm
IChpc1ByaW50aW5nT25CYWNrZ3JvdW5kVGhyZWFkKQorICAgICAgICBfcGRmUHJpbnRDb21wbGV0
aW9uU2VtYXBob3JlID0gbWFrZVVuaXF1ZTxCaW5hcnlTZW1hcGhvcmU+KCk7CisKICAgICAvLyBC
ZWdpbiBnZW5lcmF0aW5nIHRoZSBQREYgaW4gZXhwZWN0YXRpb24gb2YgYSAoZXZlbnR1YWwpIHJl
cXVlc3QgZm9yIHRoZSBkcmF3biBkYXRhLgogICAgIF9wZGZQcmludENhbGxiYWNrSUQgPSBfcGFn
ZS0+ZHJhd1RvUERGaU9TKGZyYW1lSUQsIHByaW50SW5mbywgcGFnZUNvdW50LCBbcmV0YWluZWRT
ZWxmID0gcmV0YWluUHRyKHNlbGYpXShjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmIHBkZkRh
dGEpIHsKICAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKQpAQCAtOTQ2LDkgKzk0MSw5IEBA
IHN0YXRpYyB2b2lkIHN0b3JlQWNjZXNzaWJpbGl0eVJlbW90ZUNvbm5lY3Rpb25JbmZvcm1hdGlv
bihpZCBlbGVtZW50LCBwaWRfdCBwaWQsCiAgICAgICAgICAgICByZXRhaW5lZFNlbGYtPl9wcmlu
dGVkRG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0
YVByb3ZpZGVyLmdldCgpKSk7CiAgICAgICAgIH0KIAotI2lmIEhBVkUoVUlLSVRfQkFDS0dST1VO
RF9USFJFQURfUFJJTlRJTkcpCi0gICAgICAgIHJldGFpbmVkU2VsZi0+X3BkZlByaW50Q29tcGxl
dGlvblNlbWFwaG9yZS5zaWduYWwoKTsKLSNlbmRpZgorICAgICAgICBpZiAoYXV0byBwZGZQcmlu
dENvbXBsZXRpb25TZW1hcGhvcmUgPSBzdGQ6OmV4Y2hhbmdlKHJldGFpbmVkU2VsZi0+X3BkZlBy
aW50Q29tcGxldGlvblNlbWFwaG9yZSwgbnVsbHB0cikpCisgICAgICAgICAgICBwZGZQcmludENv
bXBsZXRpb25TZW1hcGhvcmUtPnNpZ25hbCgpOworCiAgICAgICAgIHJldGFpbmVkU2VsZi0+X3Bk
ZlByaW50Q2FsbGJhY2tJRCA9IDA7CiAgICAgfSk7CiAKQEAgLTk1OCwxMyArOTUzLDEwIEBAIHN0
YXRpYyB2b2lkIHN0b3JlQWNjZXNzaWJpbGl0eVJlbW90ZUNvbm5lY3Rpb25JbmZvcm1hdGlvbihp
ZCBlbGVtZW50LCBwaWRfdCBwaWQsCiAtIChCT09MKV93YWl0Rm9yRHJhd1RvUERGQ2FsbGJhY2tJ
Zk5lZWRlZAogewogICAgIGlmIChhdXRvIGNhbGxiYWNrSUQgPSBzdGQ6OmV4Y2hhbmdlKF9wZGZQ
cmludENhbGxiYWNrSUQsIDApKSB7Ci0jaWYgSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9Q
UklOVElORykKLSAgICAgICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotICAgICAgICBfcGRm
UHJpbnRDb21wbGV0aW9uU2VtYXBob3JlLndhaXQoKTsKLSNlbHNlCi0gICAgICAgIGlmICghX3Bh
Z2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBc3luY0NhbGxiYWNrQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1RvUERGaU9TPihjYWxsYmFja0lE
LCBTZWNvbmRzOjppbmZpbml0eSgpKSkKKyAgICAgICAgaWYgKF9wZGZQcmludENvbXBsZXRpb25T
ZW1hcGhvcmUpCisgICAgICAgICAgICBfcGRmUHJpbnRDb21wbGV0aW9uU2VtYXBob3JlLT53YWl0
KCk7CisgICAgICAgIGVsc2UgaWYgKCFfcGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2Fp
dEZvckFzeW5jQ2FsbGJhY2tBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdl
OjpEcmF3VG9QREZpT1M+KGNhbGxiYWNrSUQsIFNlY29uZHM6OmluZmluaXR5KCkpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiAgICAgfQogICAgIEFTU0VSVCghX3BkZlByaW50
Q2FsbGJhY2tJRCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC05NzIsMTAgKzk2NCw2IEBAIHN0YXRp
YyB2b2lkIHN0b3JlQWNjZXNzaWJpbGl0eVJlbW90ZUNvbm5lY3Rpb25JbmZvcm1hdGlvbihpZCBl
bGVtZW50LCBwaWRfdCBwaWQsCiAKIC0gKENHUERGRG9jdW1lbnRSZWYpX3drX3ByaW50ZWREb2N1
bWVudAogewotI2lmIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCi0gICAg
QVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotI2VuZGlmCi0KICAgICBpZiAoIVtzZWxmIF93YWl0
Rm9yRHJhd1RvUERGQ2FsbGJhY2tJZk5lZWRlZF0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRleCAxNzIxMjcwZDAw
NjZiNGI5ZTE5OTExNGVlNzM3YzBlM2NlYTc5ZDFjLi5jYTMxNzA3ODc1Njg2MDg2YWM2YWRkZWM5
MDg4YzdmNzFmZDI0ZTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
V0tQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcu
bW0KQEAgLTYyOSwxNSArNjI5LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAogICAgIHJldHVybiBfZG9jdW1lbnRGb3JQcmludGluZy5nZXQoKTsKIH0KIAotI2lmIEhBVkUo
VUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCi0KIC0gKEJPT0wpX3drX3ByaW50Rm9y
bWF0dGVyUmVxdWlyZXNNYWluVGhyZWFkCiB7CiAgICAgcmV0dXJuIFlFUzsKIH0KIAotI2VuZGlm
IC8vIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCi0KIC0gKE5TVUludGVn
ZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3JtYXR0
ZXIgKilwcmludEZvcm1hdHRlcgogewogICAgIENHUERGRG9jdW1lbnRSZWYgZG9jdW1lbnRGb3JQ
cmludGluZyA9IFtzZWxmIF9lbnN1cmVEb2N1bWVudEZvclByaW50aW5nXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGQ4YTVkMjk2YjA0
NTQ4NDkyNWYzNzg0NjJkZjM0NjE3ZGJhMDU0MDcuLjc3YWZhZTg3Y2ZmNDc5N2U4MWM5YTdjNDA3
MTUzZWNlNzY1ODQ0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQpAQCAtMTAyOCw4ICsxMDI4LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omhh
bmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50aWFsVGFwKFdlYktpdDo6
VGEKICAgICBwYWdlQ2xpZW50KCkuaGFuZGxlU21hcnRNYWduaWZpY2F0aW9uSW5mb3JtYXRpb25G
b3JQb3RlbnRpYWxUYXAocmVxdWVzdElELCByZW5kZXJSZWN0LCBmaXRFbnRpcmVSZWN0LCB2aWV3
cG9ydE1pbmltdW1TY2FsZSwgdmlld3BvcnRNYXhpbXVtU2NhbGUsIG5vZGVJc1Jvb3RMZXZlbCk7
CiB9CiAKLSNpZiAhSEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKLQogc2l6
ZV90IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvKQogewogICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UoIXByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSwgIklmIHdlIGFyZSBqdXN0
IHNuYXBzaG90dGluZyB0aGUgZmlyc3QgcGFnZSwgd2UgZG9uJ3QgbmVlZCBhIHN5bmNocm9ub3Vz
IG1lc3NhZ2UgdG8gZGV0ZXJtaW5lIHRoZSBwYWdlIGNvdW50LCB3aGljaCBpcyAxLiIpOwpAQCAt
MTA0Miw4ICsxMDQwLDYgQEAgc2l6ZV90IFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmdpT1MoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFAKICAgICByZXR1cm4gcGFn
ZUNvdW50OwogfQogCi0jZW5kaWYgLy8gIUhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJ
TlRJTkcpCi0KIHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6ZHJhd1RvUERGaU9TKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgc2l6ZV90IHBhZ2VDb3Vu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA4YTBjMjYw
NGI1OWQxNzFkOGI0YTEyMGI2OTc5NWFkYTdiNDA0MWJjLi43ZTZhN2ZkODRmYzZmMDc5ZTE2Zjcx
MjM4OTUzZjExNTdhNzY1NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0xMDM4LDkgKzEwMzgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0jaWYgIUhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJ
TlRJTkcpCiAgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRl
UGFnZXNGb3JQcmludGluZ2lPU0RlbGF5ZWRSZXBseSYmKTsKLSNlbmRpZgogICAgIHZvaWQgZHJh
d1RvUERGaU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgUHJpbnRJbmZvJiwgc2l6
ZV90LCBNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1RvUERGaU9TQXN5bmNSZXBseSYmKTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCBlMGUzOTI5NzRlN2RmYmZmYTQ5MGI4YjMyMGE1ZGY3ZDU1YmY4MDJl
Li44MDZlNzNjMGViMmIxZmE3OWZkODM5MDJjYWExZjIwNWMwYzQ5NzZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAg
LTQzMyw5ICs0MzMsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWlu
dDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIERyYXdSZWN0VG9J
bWFnZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJp
bnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBXZWJDb3JlOjpJbnRTaXpl
IGltYWdlU2l6ZSkgLT4gKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaW1hZ2UpCiAg
ICAgRHJhd1BhZ2VzVG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVj
dCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBj
b3VudCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0jaWYgIUhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCiAgICAg
Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8pIC0+IChzaXplX3QgcGFnZUNv
dW50KSBTeW5jaHJvbm91cwotI2VuZGlmCiAgICAgRHJhd1RvUERGaU9TKFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBz
aXplX3QgcGFnZUNvdW50KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEpCiAjZW5kaWYK
ICAgICBEcmF3VG9QREYoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiByZWN0KSAtPiAoSVBDOjpTaGFyZWRCdWZmZXJDb3B5
IGRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IDRmNGMwYWY4NzhmMTQ0MzgwNTZlNWViOWMwZmFiMjhjNGY2ZmMwODQu
Ljc5YjIyZTc4MTFkMzY3ZGMxOTliY2JlNmEzYTU5MDhmMTJkYjUxNzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00Mjgy
LDggKzQyODIsNiBAQCB2b2lkIFdlYlBhZ2U6OmNhbmNlbEFzeW5jaHJvbm91c1RvdWNoRXZlbnRz
KFZlY3RvcjxzdGQ6OnBhaXI8V2ViVG91Y2hFdmVudCwgQ29tcAogfQogI2VuZGlmCiAKLSNpZiAh
SEFWRShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKLQogdm9pZCBXZWJQYWdlOjpj
b21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRl
UGFnZXNGb3JQcmludGluZ2lPUzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghcHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlLCAiSWYgd2UgYXJlIGp1
c3Qgc25hcHNob3R0aW5nIHRoZSBmaXJzdCBwYWdlLCB3ZSBkb24ndCBuZWVkIGEgc3luY2hyb25v
dXMgbWVzc2FnZSB0byBkZXRlcm1pbmUgdGhlIHBhZ2UgY291bnQsIHdoaWNoIGlzIDEuIik7CkBA
IC00Mjk3LDggKzQyOTUsNiBAQCB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5n
aU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdAogICAgIHJlcGx5KHBh
Z2VSZWN0cy5zaXplKCkpOwogfQogCi0jZW5kaWYgLy8gIUhBVkUoVUlLSVRfQkFDS0dST1VORF9U
SFJFQURfUFJJTlRJTkcpCi0KIHZvaWQgV2ViUGFnZTo6ZHJhd1RvUERGaU9TKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgc2l6ZV90
IHBhZ2VDb3VudCwgTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdUb1BERmlPU0FzeW5jUmVwbHkmJiBy
ZXBseSkKIHsKICAgICBpZiAocHJpbnRJbmZvLnNuYXBzaG90Rmlyc3RQYWdlKSB7CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjAwN2ZjYmFiMzQx
YWM1MTM4ZTA4YzZmNzAxODU4MDk2ZTQ4NWM5YS4uODk2NzE2ZDc3MmMxOTU1ODMzOTNkYjhlM2Fh
Y2JjMzFhMmU4NjEwNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAzLTEzICBBZGl0eWEgS2VlcnRoaSAgPGFr
ZWVydGhpQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBJbmRlZmluaXRlIGhhbmcgd2hlbiBw
cmludGluZyB1c2luZyBhIFVJUHJpbnRQYWdlUmVuZGVyZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzgzNQorICAgICAgICByZGFyOi8vOTAwMDIz
ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
QVBJIHRlc3QgY292ZXJhZ2UgZm9yIHByaW50aW5nIHdlYiBjb250ZW50IHRvIGEgUERGLCB1c2lu
ZyBhCisgICAgICAgIFVJUHJpbnRQYWdlUmVuZGVyZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tOgorICAgICAg
ICAoVEVTVCk6CisKIDIwMjItMDMtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBhIHVuaXQgdGVzdHMgdG8gY2hlY2sgdGhl
IHJlbW90ZSBpbnNwZWN0b3IgSFRUUCBzZXJ2ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
Lm1tCmluZGV4IGI0YWMwMjY0Y2EyZWU1NGZjOTI3ZDVjOTc0YzY4MWMxM2MxZmFkNzkuLjI4ZGI4
MGVmOWMyM2I1YjhjMmI1N2UyNGVkMGM0OTE4ZjlkMmY1ZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdQcmlu
dEZvcm1hdHRlci5tbQpAQCAtOTYsNCArOTYsMzIgQEAgVEVTVChXS1dlYlZpZXcsIFByaW50Rm9y
bWF0dGVySGFuZ3NJZldlYlByb2Nlc3NDcmFzaGVzQmVmb3JlV2FpdGluZykKICAgICB9XTsKIH0K
IAorVEVTVChXS1dlYlZpZXcsIFByaW50VG9QREYpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCldKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAInNpbXBsZSJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBk
YXRlXTsKKworICAgIENHUmVjdCBwYWdlUmVjdCA9IENHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDAp
OworICAgIGF1dG8gcHJpbnRQYWdlUmVuZGVyZXIgPSBhZG9wdE5TKFtbVUlQcmludFBhZ2VSZW5k
ZXJlciBhbGxvY10gaW5pdF0pOworICAgIFtwcmludFBhZ2VSZW5kZXJlciBhZGRQcmludEZvcm1h
dHRlcjpbd2ViVmlldyB2aWV3UHJpbnRGb3JtYXR0ZXJdIHN0YXJ0aW5nQXRQYWdlQXRJbmRleDow
XTsKKyAgICBbcHJpbnRQYWdlUmVuZGVyZXIgc2V0UGFwZXJSZWN0OnBhZ2VSZWN0XTsKKyAgICBb
cHJpbnRQYWdlUmVuZGVyZXIgc2V0UHJpbnRhYmxlUmVjdDpwYWdlUmVjdF07CisKKyAgICBOU011
dGFibGVEYXRhICpwZGZEYXRhID0gW05TTXV0YWJsZURhdGEgZGF0YV07CisgICAgVUlHcmFwaGlj
c0JlZ2luUERGQ29udGV4dFRvRGF0YShwZGZEYXRhLCBwYWdlUmVjdCwgbmlsKTsKKworICAgIE5T
SW50ZWdlciBudW1iZXJPZlBhZ2VzID0gW3ByaW50UGFnZVJlbmRlcmVyIG51bWJlck9mUGFnZXNd
OworICAgIGZvciAoTlNJbnRlZ2VyIGkgPSAwOyBpIDwgbnVtYmVyT2ZQYWdlczsgaSsrKSB7Cisg
ICAgICAgIFVJR3JhcGhpY3NCZWdpblBERlBhZ2UoKTsKKyAgICAgICAgQ0dSZWN0IGJvdW5kcyA9
IFVJR3JhcGhpY3NHZXRQREZDb250ZXh0Qm91bmRzKCk7CisgICAgICAgIFtwcmludFBhZ2VSZW5k
ZXJlciBkcmF3UGFnZUF0SW5kZXg6aSBpblJlY3Q6Ym91bmRzXTsKKyAgICB9CisKKyAgICBVSUdy
YXBoaWNzRW5kUERGQ29udGV4dCgpOworCisgICAgRVhQRUNUX05FKFtwZGZEYXRhIGxlbmd0aF0s
IDBVTCk7Cit9CisKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454618</attachid>
            <date>2022-03-14 13:30:24 -0700</date>
            <delta_ts>2022-03-15 10:40:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-237835-20220314133023.patch</filename>
            <type>text/plain</type>
            <size>21558</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc0MjBkMTYwMDhhMWVkODAzZDEzYTRi
NTU3MTlmM2E1ZjU5MTZmOWIuLmJkM2NjOTgzZDJjYTFkZWJjMTgzYzJmODg4YzYxNmI4MTBkYTRh
YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDMtMTMgIEFkaXR5YSBLZWVydGhpICA8YWtl
ZXJ0aGlAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIEluZGVmaW5pdGUgaGFuZyB3aGVuIHBy
aW50aW5nIHVzaW5nIGEgVUlQcmludFBhZ2VSZW5kZXJlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3ODM1CisgICAgICAgIHJkYXI6Ly85MDAwMjM4
NworCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAgICBSZW1vdmUg
dW51c2VkIEhBVkUgbWFjcm8uCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIw
MjItMDMtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIEFkZCBhIHVuaXQgdGVzdHMgdG8gY2hlY2sgdGhlIHJlbW90ZSBpbnNwZWN0
b3IgSFRUUCBzZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzI0NTMwMWNlYzA5MWVjYTVlNWM5ODYyNzQ2NDg1
MjU4ZWFkYmY2OS4uNGZkZjU0NzU4MzdhZTg0MWRiNTAyMzdkMGEzMzVhZmYyNGQ2NWI4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAyMi0wMy0xMyAgQWRpdHlhIEtlZXJ0aGkgIDxha2Vl
cnRoaUBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW5kZWZpbml0ZSBoYW5nIHdoZW4gcHJp
bnRpbmcgdXNpbmcgYSBVSVByaW50UGFnZVJlbmRlcmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MzUKKyAgICAgICAgcmRhcjovLzkwMDAyMzg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIHIyOTAxODYg
YWRvcHRlZCBVSUtpdCBBUEkgdG8gc3VwcG9ydCBwcmludGluZyB3ZWIgY29udGVudCBvbiBhCisg
ICAgICAgIGJhY2tncm91bmQgdGhyZWFkLCB0byBhdm9pZCBibG9ja2luZyB0aGUgbWFpbiB0aHJl
YWQgd2hpbGUgd2FpdGluZworICAgICAgICBvbiBQREYgZGF0YSBmcm9tIHRoZSB3ZWIgcHJvY2Vz
cy4gSG93ZXZlciwgdGhlIGNoYW5nZXMgbWFkZSB0aGUKKyAgICAgICAgYXNzdW1wdGlvbiB0aGF0
LCB3aXRoIHRoZSBuZXcgQVBJLCBhbGwgcHJpbnRpbmcgd291bGQgYmUgcGVyZm9ybWVkIG9uCisg
ICAgICAgIGEgYmFja2dyb3VuZCB0aHJlYWQuIFdoaWxlIHRoaXMgaXMgdGhlIGNhc2Ugd2hlbiB1
c2luZworICAgICAgICBVSVByaW50SW50ZXJhY3Rpb25Db250cm9sbGVyLCBjbGllbnRzIGNhbiBh
bHNvIHByaW50IHVzaW5nCisgICAgICAgIFVJUHJpbnRQYWdlUmVuZGVyZXIgb24gdGhlIG1haW4g
dGhyZWFkLiBUaGUgYmFja2dyb3VuZCB0aHJlYWQgbG9naWMKKyAgICAgICAgd2FpdHMgb24gYSBz
ZW1hcGhvcmUsIHVudGlsIFBERiBkYXRhIGlzIHJlY2VpdmVkIG9uIHRoZSBtYWluIHRocmVhZC4K
KyAgICAgICAgSG93ZXZlciwgaWYgdGhlIGxvZ2ljIHJ1bnMgb24gdGhlIG1haW4gdGhyZWFkLCBp
dCB3aWxsIHdhaXQgb24gdGhlCisgICAgICAgIHNlbWFwaG9yZSBpbmRlZmluaXRlbHkuCisKKyAg
ICAgICAgVG8gZml4LCByZXN0b3JlIHRoZSBvcmlnaW5hbCBzeW5jIElQQyBjb2RlcGF0aCB3aGVu
IHBlcmZvcm1pbmcgcHJpbnRpbmcKKyAgICAgICAgb24gdGhlIG1haW4gdGhyZWFkLiBBZGRpdGlv
bmFsbHksIG1ha2UgdGhlIEJpbmFyeVNlbWFwaG9yZSBhCisgICAgICAgIHVuaXF1ZV9wdHIsIHNv
IHRoYXQgaXQgY2FuIGJlIHNpZ25hbGxlZCBhbmQgcmVzZXQgaW4gZmFpbHVyZSBzY2VuYXJpb3Ms
CisgICAgICAgIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBhIHRocmVhZCB3YXMgd2FpdGluZyBvbiB0
aGUgc2VtYXBob3JlLiBUaGlzCisgICAgICAgIGNoYW5nZSBhbHNvIGFsbG93cyB1cyB0byBhdm9p
ZCBjcmVhdGluZyB0aGUgQmluYXJ5U2VtYXBob3JlIHVubGVzcyBpdAorICAgICAgICBpcyBhY3R1
YWxseSBuZWVkZWQuCisKKyAgICAgICAgQWxsIHVzZXMgb2YgSEFWRShVSUtJVF9CQUNLR1JPVU5E
X1RIUkVBRF9QUklOVElORykgYXJlIHJlbW92ZWQsIGFzIHRoZQorICAgICAgICBBUEkgYWRvcHRp
b24gb25seSBpbnZvbHZlcyBhIG1ldGhvZCBvdmVycmlkZSwgd2hpY2ggaXMgaGFybWxlc3MgaW4K
KyAgICAgICAgYnVpbGRzIHRoYXQgbGFjayBzdXBwb3J0IGZvciB0aGUgbmV3IEFQSS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvX1dL
V2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9fV0tXZWJWaWV3
UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcHJvY2Vzc0RpZEV4aXRdKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfd2tfcGFnZUNvdW50Rm9yUHJpbnRGb3JtYXR0ZXI6
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3dhaXRGb3JEcmF3VG9QREZDYWxsYmFja0lm
TmVlZGVkXSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3drX3ByaW50ZWREb2N1bWVudF0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgor
CiAyMDIyLTAzLTExICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgog
CiAgICAgICAgIFtXaW5DYWlyb10gRHJhd2luZ0FyZWFXQzo6c2VuZFVwZGF0ZUFDIHNob3VsZCBr
ZWVwIGEgV2Vha1B0ciBvZiB0aGlzIGZvciB0aGUgcmVwbHkgaGFuZGxlcgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhh
dmUuaAppbmRleCBlMmVmNDU3MGI0ZTE0ODA4OTVhN2Q5ZmI1ZTNkYmQ0OTE4MWVhNzgzLi4xNmQ3
YWNhNGQ4MmFiZjJmODM2YzRiYmEzNmJmNzcwNDY0Mjc2ZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aApAQCAtMTIyMyw3ICsxMjIzLDMgQEAKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEzMDAwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgX19J
UEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTYwMDAwKSB8fCAoUExBVEZPUk0oV0FU
Q0hPUykgJiYgX19XQVRDSF9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA5MDAwMCkKICNkZWZp
bmUgSEFWRV9TQUZFX0JST1dTSU5HX1JFU1VMVF9ERVRBSUxTIDEKICNlbmRpZgotCi0jaWYgKFBM
QVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTYwMDAw
KQotI2RlZmluZSBIQVZFX1VJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HIDEKLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwM2MwM2Q1MWNlNDcz
YjQ3MjMwNzU5ZDhiNzViNGU4MzRhYmYwODcwLi4wOTRkYWY0OTNjNjEzZmNkOGYyZTk1MWVmMmEw
NDFkZWVmM2UxMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MTQxNyw5ICsxNDE3LDcgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IGRyYXdQYWdlc1RvUERGKFdl
YkZyYW1lUHJveHkqLCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQVBJOjpEYXRhKik+JiYpOwogICAgIHZvaWQg
ZHJhd1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3Qgc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpGbG9hdFJlY3Q+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OlNo
YXJlZEJ1ZmZlckNvcHkmKT4mJik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpZiAhSEFW
RShVSUtJVF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKICAgICBzaXplX3QgY29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBQcmludElu
Zm8mKTsKLSNlbmRpZgogICAgIHVpbnQ2NF90IGRyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHNpemVfdCBwYWdlQ291bnQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYpOwogI2VuZGlmCiAj
ZWxpZiBQTEFURk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9f
V0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tX
ZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0KaW5kZXggYjZhNTU0MWYzZDhlZGJmZDM3Mzk3Y2JlMjM0
NDk3ODNkOTNjZmI2Zi4uMTZjOTVmNjc1NzE1MDJkNTMwNTc3M2JkZjA5Y2IwYTM1YjUwZGJlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLV2ViVmlld1ByaW50Rm9ybWF0
dGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1dlYlZpZXdQcmludEZvcm1h
dHRlci5tbQpAQCAtNDQsMTUgKzQ0LDExIEBACiAgICAgQk9PTCBfc3VwcHJlc3NQYWdlQ291bnRS
ZWNhbGM7CiB9CiAKLSNpZiBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQot
CiAtIChCT09MKXJlcXVpcmVzTWFpblRocmVhZAogewogICAgIHJldHVybiBzZWxmLl93ZWJWaWV3
Ll9wcmludFByb3ZpZGVyLl93a19wcmludEZvcm1hdHRlclJlcXVpcmVzTWFpblRocmVhZDsKIH0K
IAotI2VuZGlmIC8vIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCi0KIC0g
KF9XS0ZyYW1lSGFuZGxlICopZnJhbWVUb1ByaW50CiB7CiAgICAgcmV0dXJuIF9mcmFtZVRvUHJp
bnQuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3
UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvX1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaAppbmRleCA3Y2QzNWMwZmQ4NGNjYWM5MzY2ZGFj
NDM1MDgwNTg3Nzg0YjAyZjQ0Li41NmRkNzkxNmUzNzMxZTNlNWQ2ZTZlNWZlMWZlY2Q2Y2RlM2I5
MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9fV0tXZWJWaWV3UHJpbnRG
b3JtYXR0ZXJJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL19XS1dlYlZp
ZXdQcmludEZvcm1hdHRlckludGVybmFsLmgKQEAgLTM3LDEwICszNyw4IEBACiBAZW5kCiAKIEBw
cm90b2NvbCBfV0tXZWJWaWV3UHJpbnRQcm92aWRlciA8TlNPYmplY3Q+Ci0jaWYgSEFWRShVSUtJ
VF9CQUNLR1JPVU5EX1RIUkVBRF9QUklOVElORykKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgQk9PTCBfd2tfcHJpbnRGb3JtYXR0ZXJSZXF1aXJlc01haW5UaHJlYWQ7Ci0jZW5kaWYK
IC0gKE5TVUludGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3
UHJpbnRGb3JtYXR0ZXIgKilwcmludEZvcm1hdHRlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQk9PTCBfd2tfcHJpbnRGb3JtYXR0ZXJSZXF1aXJlc01haW5UaHJlYWQ7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENHUERGRG9jdW1lbnRSZWYgX3drX3ByaW50ZWRE
b2N1bWVudDsKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbQppbmRleCBkOWE0NGM0YzJhMTM5OTBlMWQ5MGVhNWNmNDA0YmUwMjI0YjA5MDVhLi4z
YjQ2N2Y0NWI5ODAzYjYwM2QyYTVlZDZhMDg3NTViN2ZiNTQxOGRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtMTQ4LDkgKzE0OCw3IEBACiAg
ICAgUmV0YWluUHRyPE5TVW5kb01hbmFnZXI+IF91bmRvTWFuYWdlcjsKICAgICBSZXRhaW5QdHI8
V0tRdWlya3lOU1VuZG9NYW5hZ2VyPiBfcXVpcmt5VW5kb01hbmFnZXI7CiAKLSNpZiBIQVZFKFVJ
S0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQotICAgIEJpbmFyeVNlbWFwaG9yZSBfcGRm
UHJpbnRDb21wbGV0aW9uU2VtYXBob3JlOwotI2VuZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPEJp
bmFyeVNlbWFwaG9yZT4gX3BkZlByaW50Q29tcGxldGlvblNlbWFwaG9yZTsKICAgICB1aW50NjRf
dCBfcGRmUHJpbnRDYWxsYmFja0lEOwogICAgIFJldGFpblB0cjxDR1BERkRvY3VtZW50UmVmPiBf
cHJpbnRlZERvY3VtZW50OwogICAgIFZlY3RvcjxSZXRhaW5QdHI8TlNVUkw+PiBfdGVtcG9yYXJ5
VVJMc1RvRGVsZXRlV2hlbkRlYWxsb2NhdGVkOwpAQCAtNjkxLDEwICs2ODksOSBAQCBzdGF0aWMg
dm9pZCBzdG9yZUFjY2Vzc2liaWxpdHlSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRpb24oaWQgZWxl
bWVudCwgcGlkX3QgcGlkLAogICAgIFtzZWxmIF9yZW1vdmVWaXNpYmlsaXR5UHJvcGFnYXRpb25W
aWV3Rm9yV2ViUHJvY2Vzc107CiAjZW5kaWYKIAotI2lmIEhBVkUoVUlLSVRfQkFDS0dST1VORF9U
SFJFQURfUFJJTlRJTkcpCi0gICAgaWYgKF9wZGZQcmludENhbGxiYWNrSUQpCi0gICAgICAgIF9w
ZGZQcmludENvbXBsZXRpb25TZW1hcGhvcmUuc2lnbmFsKCk7Ci0jZW5kaWYKKyAgICBpZiAoYXV0
byBwZGZQcmludENvbXBsZXRpb25TZW1hcGhvcmUgPSBzdGQ6OmV4Y2hhbmdlKF9wZGZQcmludENv
bXBsZXRpb25TZW1hcGhvcmUsIG51bGxwdHIpKQorICAgICAgICBwZGZQcmludENvbXBsZXRpb25T
ZW1hcGhvcmUtPnNpZ25hbCgpOworCiAgICAgX3BkZlByaW50Q2FsbGJhY2tJRCA9IDA7CiB9CiAK
QEAgLTg2OSwyMCArODY2LDE0IEBAIHN0YXRpYyB2b2lkIHN0b3JlQWNjZXNzaWJpbGl0eVJlbW90
ZUNvbm5lY3Rpb25JbmZvcm1hdGlvbihpZCBlbGVtZW50LCBwaWRfdCBwaWQsCiAKIEBpbXBsZW1l
bnRhdGlvbiBXS0NvbnRlbnRWaWV3IChfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIpCiAKLSNpZiBI
QVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQotCiAtIChCT09MKV93a19wcmlu
dEZvcm1hdHRlclJlcXVpcmVzTWFpblRocmVhZAogewogICAgIHJldHVybiBOTzsKIH0KIAotI2Vu
ZGlmIC8vIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCi0KIC0gKE5TVUlu
dGVnZXIpX3drX3BhZ2VDb3VudEZvclByaW50Rm9ybWF0dGVyOihfV0tXZWJWaWV3UHJpbnRGb3Jt
YXR0ZXIgKilwcmludEZvcm1hdHRlcgogewotI2lmIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJF
QURfUFJJTlRJTkcpCi0gICAgQVNTRVJUKCFpc01haW5SdW5Mb29wKCkpOwotI2VuZGlmCisgICAg
Ym9vbCBpc1ByaW50aW5nT25CYWNrZ3JvdW5kVGhyZWFkID0gIWlzTWFpblJ1bkxvb3AoKTsKIAog
ICAgIFtzZWxmIF93YWl0Rm9yRHJhd1RvUERGQ2FsbGJhY2tJZk5lZWRlZF07CiAKQEAgLTkyMCwy
MiArOTExLDI1IEBAIHN0YXRpYyB2b2lkIHN0b3JlQWNjZXNzaWJpbGl0eVJlbW90ZUNvbm5lY3Rp
b25JbmZvcm1hdGlvbihpZCBlbGVtZW50LCBwaWRfdCBwaWQsCiAgICAgaWYgKHByaW50SW5mby5z
bmFwc2hvdEZpcnN0UGFnZSkKICAgICAgICAgcGFnZUNvdW50ID0gMTsKICAgICBlbHNlIHsKLSNp
ZiBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQotICAgICAgICBCaW5hcnlT
ZW1hcGhvcmUgY29tcHV0ZVBhZ2VzU2VtYXBob3JlOwotICAgICAgICBjYWxsT25NYWluUnVuTG9v
cChbc2VsZiwgZnJhbWVJRCwgcHJpbnRJbmZvLCAmcGFnZUNvdW50LCAmY29tcHV0ZVBhZ2VzU2Vt
YXBob3JlXSgpIG11dGFibGUgewotICAgICAgICAgICAgX3BhZ2UtPmNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nKGZyYW1lSUQsIHByaW50SW5mbywgWyZwYWdlQ291bnQsICZjb21wdXRlUGFnZXNTZW1h
cGhvcmVdKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUg
LyogdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nICovLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJv
eEV4dGVudCYgLyogY29tcHV0ZWRQYWdlTWFyZ2luICovKSBtdXRhYmxlIHsKLSAgICAgICAgICAg
ICAgICBBU1NFUlQocGFnZVJlY3RzLnNpemUoKSA+PSAxKTsKLSAgICAgICAgICAgICAgICBwYWdl
Q291bnQgPSBwYWdlUmVjdHMuc2l6ZSgpOwotCi0gICAgICAgICAgICAgICAgY29tcHV0ZVBhZ2Vz
U2VtYXBob3JlLnNpZ25hbCgpOworICAgICAgICBpZiAoaXNQcmludGluZ09uQmFja2dyb3VuZFRo
cmVhZCkgeworICAgICAgICAgICAgQmluYXJ5U2VtYXBob3JlIGNvbXB1dGVQYWdlc1NlbWFwaG9y
ZTsKKyAgICAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFtzZWxmLCBmcmFtZUlELCBwcmludElu
Zm8sICZwYWdlQ291bnQsICZjb21wdXRlUGFnZXNTZW1hcGhvcmVdKCkgbXV0YWJsZSB7CisgICAg
ICAgICAgICAgICAgX3BhZ2UtPmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKGZyYW1lSUQsIHByaW50
SW5mbywgWyZwYWdlQ291bnQsICZjb21wdXRlUGFnZXNTZW1hcGhvcmVdKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUgLyogdG90YWxTY2FsZUZhY3RvckZv
clByaW50aW5nICovLCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgLyogY29tcHV0ZWRQ
YWdlTWFyZ2luICovKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHBhZ2VS
ZWN0cy5zaXplKCkgPj0gMSk7CisgICAgICAgICAgICAgICAgICAgIHBhZ2VDb3VudCA9IHBhZ2VS
ZWN0cy5zaXplKCk7CisKKyAgICAgICAgICAgICAgICAgICAgY29tcHV0ZVBhZ2VzU2VtYXBob3Jl
LnNpZ25hbCgpOworICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0pOwotICAgICAgICBjb21wdXRlUGFnZXNTZW1hcGhvcmUud2FpdCgpOwotI2Vsc2UKLSAgICAg
ICAgcGFnZUNvdW50ID0gX3BhZ2UtPmNvbXB1dGVQYWdlc0ZvclByaW50aW5naU9TKGZyYW1lSUQs
IHByaW50SW5mbyk7Ci0jZW5kaWYKKyAgICAgICAgICAgIGNvbXB1dGVQYWdlc1NlbWFwaG9yZS53
YWl0KCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcGFnZUNvdW50ID0gX3BhZ2UtPmNv
bXB1dGVQYWdlc0ZvclByaW50aW5naU9TKGZyYW1lSUQsIHByaW50SW5mbyk7CiAgICAgfQogCisg
ICAgQVNTRVJUKCFfcGRmUHJpbnRDb21wbGV0aW9uU2VtYXBob3JlKTsKKyAgICBpZiAoaXNQcmlu
dGluZ09uQmFja2dyb3VuZFRocmVhZCkKKyAgICAgICAgX3BkZlByaW50Q29tcGxldGlvblNlbWFw
aG9yZSA9IG1ha2VVbmlxdWU8QmluYXJ5U2VtYXBob3JlPigpOworCiAgICAgLy8gQmVnaW4gZ2Vu
ZXJhdGluZyB0aGUgUERGIGluIGV4cGVjdGF0aW9uIG9mIGEgKGV2ZW50dWFsKSByZXF1ZXN0IGZv
ciB0aGUgZHJhd24gZGF0YS4KICAgICBfcGRmUHJpbnRDYWxsYmFja0lEID0gX3BhZ2UtPmRyYXdU
b1BERmlPUyhmcmFtZUlELCBwcmludEluZm8sIHBhZ2VDb3VudCwgW3JldGFpbmVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKV0oY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiBwZGZEYXRhKSB7CiAg
ICAgICAgIGlmIChwZGZEYXRhLmlzRW1wdHkoKSkKQEAgLTk0Niw5ICs5NDAsOSBAQCBzdGF0aWMg
dm9pZCBzdG9yZUFjY2Vzc2liaWxpdHlSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRpb24oaWQgZWxl
bWVudCwgcGlkX3QgcGlkLAogICAgICAgICAgICAgcmV0YWluZWRTZWxmLT5fcHJpbnRlZERvY3Vt
ZW50ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRl
ci5nZXQoKSkpOwogICAgICAgICB9CiAKLSNpZiBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFE
X1BSSU5USU5HKQotICAgICAgICByZXRhaW5lZFNlbGYtPl9wZGZQcmludENvbXBsZXRpb25TZW1h
cGhvcmUuc2lnbmFsKCk7Ci0jZW5kaWYKKyAgICAgICAgaWYgKGF1dG8gcGRmUHJpbnRDb21wbGV0
aW9uU2VtYXBob3JlID0gc3RkOjpleGNoYW5nZShyZXRhaW5lZFNlbGYtPl9wZGZQcmludENvbXBs
ZXRpb25TZW1hcGhvcmUsIG51bGxwdHIpKQorICAgICAgICAgICAgcGRmUHJpbnRDb21wbGV0aW9u
U2VtYXBob3JlLT5zaWduYWwoKTsKKwogICAgICAgICByZXRhaW5lZFNlbGYtPl9wZGZQcmludENh
bGxiYWNrSUQgPSAwOwogICAgIH0pOwogCkBAIC05NTgsMTMgKzk1MiwxMCBAQCBzdGF0aWMgdm9p
ZCBzdG9yZUFjY2Vzc2liaWxpdHlSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRpb24oaWQgZWxlbWVu
dCwgcGlkX3QgcGlkLAogLSAoQk9PTClfd2FpdEZvckRyYXdUb1BERkNhbGxiYWNrSWZOZWVkZWQK
IHsKICAgICBpZiAoYXV0byBjYWxsYmFja0lEID0gc3RkOjpleGNoYW5nZShfcGRmUHJpbnRDYWxs
YmFja0lELCAwKSkgewotI2lmIEhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcp
Ci0gICAgICAgIEFTU0VSVCghaXNNYWluUnVuTG9vcCgpKTsKLSAgICAgICAgX3BkZlByaW50Q29t
cGxldGlvblNlbWFwaG9yZS53YWl0KCk7Ci0jZWxzZQotICAgICAgICBpZiAoIV9wYWdlLT5wcm9j
ZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQXN5bmNDYWxsYmFja0FuZERpc3BhdGNoSW1tZWRp
YXRlbHk8TWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdUb1BERmlPUz4oY2FsbGJhY2tJRCwgU2Vjb25k
czo6aW5maW5pdHkoKSkpCisgICAgICAgIGlmIChfcGRmUHJpbnRDb21wbGV0aW9uU2VtYXBob3Jl
KQorICAgICAgICAgICAgX3BkZlByaW50Q29tcGxldGlvblNlbWFwaG9yZS0+d2FpdCgpOworICAg
ICAgICBlbHNlIGlmICghX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBc3lu
Y0NhbGxiYWNrQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1Rv
UERGaU9TPihjYWxsYmFja0lELCBTZWNvbmRzOjppbmZpbml0eSgpKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgogICAgIH0KICAgICBBU1NFUlQoIV9wZGZQcmludENhbGxiYWNr
SUQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtOTcyLDEwICs5NjMsNiBAQCBzdGF0aWMgdm9pZCBz
dG9yZUFjY2Vzc2liaWxpdHlSZW1vdGVDb25uZWN0aW9uSW5mb3JtYXRpb24oaWQgZWxlbWVudCwg
cGlkX3QgcGlkLAogCiAtIChDR1BERkRvY3VtZW50UmVmKV93a19wcmludGVkRG9jdW1lbnQKIHsK
LSNpZiBIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQotICAgIEFTU0VSVCgh
aXNNYWluUnVuTG9vcCgpKTsKLSNlbmRpZgotCiAgICAgaWYgKCFbc2VsZiBfd2FpdEZvckRyYXdU
b1BERkNhbGxiYWNrSWZOZWVkZWRdKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KaW5kZXggMTcyMTI3MGQwMDY2YjRiOWUx
OTkxMTRlZTczN2MwZTNjZWE3OWQxYy4uY2EzMTcwNzg3NTY4NjA4NmFjNmFkZGVjOTA4OGM3Zjcx
ZmQyNGUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLUERGVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCkBAIC02
MjksMTUgKzYyOSwxMSBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBy
ZXR1cm4gX2RvY3VtZW50Rm9yUHJpbnRpbmcuZ2V0KCk7CiB9CiAKLSNpZiBIQVZFKFVJS0lUX0JB
Q0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQotCiAtIChCT09MKV93a19wcmludEZvcm1hdHRlclJl
cXVpcmVzTWFpblRocmVhZAogewogICAgIHJldHVybiBZRVM7CiB9CiAKLSNlbmRpZiAvLyBIQVZF
KFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQotCiAtIChOU1VJbnRlZ2VyKV93a19w
YWdlQ291bnRGb3JQcmludEZvcm1hdHRlcjooX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyICopcHJp
bnRGb3JtYXR0ZXIKIHsKICAgICBDR1BERkRvY3VtZW50UmVmIGRvY3VtZW50Rm9yUHJpbnRpbmcg
PSBbc2VsZiBfZW5zdXJlRG9jdW1lbnRGb3JQcmludGluZ107CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBkOGE1ZDI5NmIwNDU0ODQ5MjVm
Mzc4NDYyZGYzNDYxN2RiYTA1NDA3Li43N2FmYWU4N2NmZjQ3OTdlODFjOWE3YzQwNzE1M2VjZTc2
NTg0NDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KQEAgLTEwMjgsOCArMTAyOCw2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVTbWFy
dE1hZ25pZmljYXRpb25JbmZvcm1hdGlvbkZvclBvdGVudGlhbFRhcChXZWJLaXQ6OlRhCiAgICAg
cGFnZUNsaWVudCgpLmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkluZm9ybWF0aW9uRm9yUG90ZW50
aWFsVGFwKHJlcXVlc3RJRCwgcmVuZGVyUmVjdCwgZml0RW50aXJlUmVjdCwgdmlld3BvcnRNaW5p
bXVtU2NhbGUsIHZpZXdwb3J0TWF4aW11bVNjYWxlLCBub2RlSXNSb290TGV2ZWwpOwogfQogCi0j
aWYgIUhBVkUoVUlLSVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCi0KIHNpemVfdCBXZWJQ
YWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5naU9TKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbykKIHsKICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFwcmludEluZm8uc25hcHNob3RGaXJzdFBhZ2UsICJJZiB3ZSBhcmUganVzdCBzbmFwc2hv
dHRpbmcgdGhlIGZpcnN0IHBhZ2UsIHdlIGRvbid0IG5lZWQgYSBzeW5jaHJvbm91cyBtZXNzYWdl
IHRvIGRldGVybWluZSB0aGUgcGFnZSBjb3VudCwgd2hpY2ggaXMgMS4iKTsKQEAgLTEwNDIsOCAr
MTA0MCw2IEBAIHNpemVfdCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5naU9T
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBQCiAgICAgcmV0dXJuIHBhZ2VDb3VudDsK
IH0KIAotI2VuZGlmIC8vICFIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQot
CiB1aW50NjRfdCBXZWJQYWdlUHJveHk6OmRyYXdUb1BERmlPUyhGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHNpemVfdCBwYWdlQ291bnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpTaGFyZWRCdWZmZXJDb3B5Jik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggOGEwYzI2MDRiNTlkMTcx
ZDhiNGExMjBiNjk3OTVhZGE3YjQwNDFiYy4uN2U2YTdmZDg0ZmM2ZjA3OWUxNmY3MTIzODk1M2Yx
MTU3YTc2NTQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtMTAzOCw5ICsxMDM4LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotI2lmICFIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQog
ICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlm
aWVyLCBjb25zdCBQcmludEluZm8mLCBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmdpT1NEZWxheWVkUmVwbHkmJik7Ci0jZW5kaWYKICAgICB2b2lkIGRyYXdUb1BERmlP
UyhXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFByaW50SW5mbyYsIHNpemVfdCwgTWVz
c2FnZXM6OldlYlBhZ2U6OkRyYXdUb1BERmlPU0FzeW5jUmVwbHkmJik7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggZTBlMzkyOTc0ZTdkZmJmZmE0OTBiOGIzMjBhNWRmN2Q1NWJmODAyZS4uODA2ZTcz
YzBlYjJiMWZhNzlmZDgzOTAyY2FhMWYyMDVjMGM0OTc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00MzMsOSAr
NDMzLDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2Vi
S2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBEcmF3UmVjdFRvSW1hZ2UoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHN0cnVjdCBXZWJLaXQ6OlByaW50SW5mbyBw
cmludEluZm8sIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNp
emUpIC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGltYWdlKQogICAgIERyYXdQ
YWdlc1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1Y3QgV2ViS2l0
OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQpIC0+
IChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
I2lmICFIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BSSU5USU5HKQogICAgIENvbXB1dGVQ
YWdlc0ZvclByaW50aW5naU9TKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdHJ1
Y3QgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvKSAtPiAoc2l6ZV90IHBhZ2VDb3VudCkgU3lu
Y2hyb25vdXMKLSNlbmRpZgogICAgIERyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgc3RydWN0IFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgc2l6ZV90IHBh
Z2VDb3VudCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQogI2VuZGlmCiAgICAgRHJh
d1RvUERGKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UmVjdD4gcmVjdCkgLT4gKElQQzo6U2hhcmVkQnVmZmVyQ29weSBkYXRhKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQppbmRleCA0ZjRjMGFmODc4ZjE0NDM4MDU2ZTVlYjljMGZhYjI4YzRmNmZjMDg0Li43OWIyMmU3
ODExZDM2N2RjMTk5YmNiZTZhM2E1OTA4ZjEyZGI1MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNDI4Miw4ICs0Mjgy
LDYgQEAgdm9pZCBXZWJQYWdlOjpjYW5jZWxBc3luY2hyb25vdXNUb3VjaEV2ZW50cyhWZWN0b3I8
c3RkOjpwYWlyPFdlYlRvdWNoRXZlbnQsIENvbXAKIH0KICNlbmRpZgogCi0jaWYgIUhBVkUoVUlL
SVRfQkFDS0dST1VORF9USFJFQURfUFJJTlRJTkcpCi0KIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmdpT1MoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmZvLCBNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmdpT1M6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UoIXByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSwgIklmIHdlIGFyZSBqdXN0IHNuYXBz
aG90dGluZyB0aGUgZmlyc3QgcGFnZSwgd2UgZG9uJ3QgbmVlZCBhIHN5bmNocm9ub3VzIG1lc3Nh
Z2UgdG8gZGV0ZXJtaW5lIHRoZSBwYWdlIGNvdW50LCB3aGljaCBpcyAxLiIpOwpAQCAtNDI5Nyw4
ICs0Mjk1LDYgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ2lPUyhXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QKICAgICByZXBseShwYWdlUmVjdHMu
c2l6ZSgpKTsKIH0KIAotI2VuZGlmIC8vICFIQVZFKFVJS0lUX0JBQ0tHUk9VTkRfVEhSRUFEX1BS
SU5USU5HKQotCiB2b2lkIFdlYlBhZ2U6OmRyYXdUb1BERmlPUyhXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHNpemVfdCBwYWdlQ291
bnQsIE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3VG9QREZpT1NBc3luY1JlcGx5JiYgcmVwbHkpCiB7
CiAgICAgaWYgKHByaW50SW5mby5zbmFwc2hvdEZpcnN0UGFnZSkgewpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYwMDdmY2JhYjM0MWFjNTEzOGUw
OGM2ZjcwMTg1ODA5NmU0ODVjOWEuLmEyYzg1OTFkODAxMjY0NDRkODM4NDQ0NzI5NWQ1Y2M2Zjlm
MTM3MDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOCBAQAorMjAyMi0wMy0xMyAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBh
cHBsZS5jb20+CisKKyAgICAgICAgW2lPU10gSW5kZWZpbml0ZSBoYW5nIHdoZW4gcHJpbnRpbmcg
dXNpbmcgYSBVSVByaW50UGFnZVJlbmRlcmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MzUKKyAgICAgICAgcmRhcjovLzkwMDAyMzg3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBj
b3ZlcmFnZSBmb3IgcHJpbnRpbmcgd2ViIGNvbnRlbnQgdG8gYSBQREYsIHVzaW5nIGEKKyAgICAg
ICAgVUlQcmludFBhZ2VSZW5kZXJlciAod2hpY2ggdXNlcyB0aGUgbWFpbiB0aHJlYWQpIGFuZCBh
CisgICAgICAgIFVJUHJpbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgKHdoaWNoIHVzZXMgYSBiYWNr
Z3JvdW5kIHRocmVhZCkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tOgorICAgICAgICAoVEVTVCk6CisKIDIwMjIt
MDMtMTAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFtHVEtdIEFkZCBhIHVuaXQgdGVzdHMgdG8gY2hlY2sgdGhlIHJlbW90ZSBpbnNwZWN0b3Ig
SFRUUCBzZXJ2ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tCmluZGV4IGI0YWMwMjY0
Y2EyZWU1NGZjOTI3ZDVjOTc0YzY4MWMxM2MxZmFkNzkuLjNjOTRiOGUzNmRkM2FhY2ZmMmJjOTlk
NzlmOTc4MjdjYzRjNDUwYWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbQpAQCAt
NDUsNiArNDUsMTIgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBDR1JlY3QgcHJpbnRhYmxlUmVj
dDsKIEBlbmQKIAorQGludGVyZmFjZSBVSVByaW50SW50ZXJhY3Rpb25Db250cm9sbGVyICgpCist
IChCT09MKV9zZXR1cFByaW50UGFuZWw6KHZvaWQgKF4pKFVJUHJpbnRJbnRlcmFjdGlvbkNvbnRy
b2xsZXIgKnByaW50SW50ZXJhY3Rpb25Db250cm9sbGVyLCBCT09MIGNvbXBsZXRlZCwgTlNFcnJv
ciAqZXJyb3IpKWNvbXBsZXRpb247CistICh2b2lkKV9nZW5lcmF0ZVByaW50UHJldmlldzoodm9p
ZCAoXikoTlNVUkwgKnByZXZpZXdQREYsIEJPT0wgc2hvdWxkUmVuZGVyT25DaG9zZW5QYXBlcikp
Y29tcGxldGlvbkhhbmRsZXI7CistICh2b2lkKV9jbGVhblByaW50U3RhdGU7CitAZW5kCisKIFRF
U1QoV0tXZWJWaWV3LCBQcmludEZvcm1hdHRlckNhblJlY2FsY1BhZ2VDb3VudFdoaWxlUHJpbnRp
bmcpCiB7CiAgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKV0pOwpAQCAtOTYsNCArMTAyLDYzIEBAIFRFU1QoV0tXZWJWaWV3LCBQcmludEZvcm1hdHRl
ckhhbmdzSWZXZWJQcm9jZXNzQ3Jhc2hlc0JlZm9yZVdhaXRpbmcpCiAgICAgfV07CiB9CiAKK1RF
U1QoV0tXZWJWaWV3LCBQcmludFRvUERGVXNpbmdQcmludFBhZ2VSZW5kZXJlcikKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CisgICAgW3dlYlZpZXcgd2FpdEZvck5l
eHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgQ0dSZWN0IHBhZ2VSZWN0ID0gQ0dSZWN0TWFr
ZSgwLCAwLCAxMDAsIDEwMCk7CisgICAgYXV0byBwcmludFBhZ2VSZW5kZXJlciA9IGFkb3B0TlMo
W1tVSVByaW50UGFnZVJlbmRlcmVyIGFsbG9jXSBpbml0XSk7CisgICAgW3ByaW50UGFnZVJlbmRl
cmVyIGFkZFByaW50Rm9ybWF0dGVyOlt3ZWJWaWV3IHZpZXdQcmludEZvcm1hdHRlcl0gc3RhcnRp
bmdBdFBhZ2VBdEluZGV4OjBdOworICAgIFtwcmludFBhZ2VSZW5kZXJlciBzZXRQYXBlclJlY3Q6
cGFnZVJlY3RdOworICAgIFtwcmludFBhZ2VSZW5kZXJlciBzZXRQcmludGFibGVSZWN0OnBhZ2VS
ZWN0XTsKKworICAgIE5TTXV0YWJsZURhdGEgKnBkZkRhdGEgPSBbTlNNdXRhYmxlRGF0YSBkYXRh
XTsKKyAgICBVSUdyYXBoaWNzQmVnaW5QREZDb250ZXh0VG9EYXRhKHBkZkRhdGEsIHBhZ2VSZWN0
LCBuaWwpOworCisgICAgTlNJbnRlZ2VyIG51bWJlck9mUGFnZXMgPSBbcHJpbnRQYWdlUmVuZGVy
ZXIgbnVtYmVyT2ZQYWdlc107CisgICAgZm9yIChOU0ludGVnZXIgaSA9IDA7IGkgPCBudW1iZXJP
ZlBhZ2VzOyBpKyspIHsKKyAgICAgICAgVUlHcmFwaGljc0JlZ2luUERGUGFnZSgpOworICAgICAg
ICBDR1JlY3QgYm91bmRzID0gVUlHcmFwaGljc0dldFBERkNvbnRleHRCb3VuZHMoKTsKKyAgICAg
ICAgW3ByaW50UGFnZVJlbmRlcmVyIGRyYXdQYWdlQXRJbmRleDppIGluUmVjdDpib3VuZHNdOwor
ICAgIH0KKworICAgIFVJR3JhcGhpY3NFbmRQREZDb250ZXh0KCk7CisKKyAgICBFWFBFQ1RfTkUo
W3BkZkRhdGEgbGVuZ3RoXSwgMFVMKTsKK30KKworVEVTVChXS1dlYlZpZXcsIFByaW50VG9QREZV
c2luZ1ByaW50SW50ZXJhY3Rpb25Db250cm9sbGVyKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApXSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdl
TmFtZWQ6QCJzaW1wbGUiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZV07CisKKyAgICBhdXRvIHByaW50UGFnZVJlbmRlcmVyID0gYWRvcHROUyhbW1VJUHJpbnRQ
YWdlUmVuZGVyZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbcHJpbnRQYWdlUmVuZGVyZXIgYWRkUHJp
bnRGb3JtYXR0ZXI6W3dlYlZpZXcgdmlld1ByaW50Rm9ybWF0dGVyXSBzdGFydGluZ0F0UGFnZUF0
SW5kZXg6MF07CisKKyAgICBhdXRvIHByaW50SW50ZXJhY3Rpb25Db250cm9sbGVyID0gYWRvcHRO
UyhbW1VJUHJpbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbcHJp
bnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgc2V0UHJpbnRQYWdlUmVuZGVyZXI6cHJpbnRQYWdlUmVu
ZGVyZXIuZ2V0KCldOworCisgICAgX19ibG9jayBOU1VJbnRlZ2VyIHBkZkRhdGFMZW5ndGggPSAw
OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisKKyAgICBbcHJpbnRJbnRlcmFjdGlv
bkNvbnRyb2xsZXIgX3NldHVwUHJpbnRQYW5lbDpuaWxdOworICAgIFtwcmludEludGVyYWN0aW9u
Q29udHJvbGxlciBfZ2VuZXJhdGVQcmludFByZXZpZXc6XihOU1VSTCAqcGRmVVJMLCBCT09MIHNo
b3VsZFJlbmRlck9uQ2hvc2VuUGFwZXIpIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgIGF1dG8gcGRmRGF0YSA9IGFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDpwZGZVUkxdKTsKKyAgICAg
ICAgICAgIHBkZkRhdGFMZW5ndGggPSBbcGRmRGF0YSBsZW5ndGhdOworCisgICAgICAgICAgICBb
cHJpbnRJbnRlcmFjdGlvbkNvbnRyb2xsZXIgX2NsZWFuUHJpbnRTdGF0ZV07CisgICAgICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworICAgIEVYUEVDVF9ORShwZGZEYXRhTGVuZ3RoLCAwVUwpOwor
fQorCiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>