<?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>77197</bug_id>
          
          <creation_ts>2012-01-27 02:28:16 -0800</creation_ts>
          <short_desc>[GTK] Handle printing errors in WebKit2</short_desc>
          <delta_ts>2012-03-14 10:57:20 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>79120</dependson>
          <blocked>75544</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>543915</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-27 02:28:16 -0800</bug_when>
    <thetext>Printing errors should be sent from the web process to the ui process in the callback used by DrawPagesForPrinting message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560956</commentid>
    <comment_count>1</comment_count>
      <attachid>127987</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-21 09:32:32 -0800</bug_when>
    <thetext>Created attachment 127987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563842</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2012-02-23 19:39:41 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578509</commentid>
    <comment_count>3</comment_count>
      <attachid>127987</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-14 10:00:26 -0700</bug_when>
    <thetext>Comment on attachment 127987
Patch

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

OK, looks good to me!

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitError.h:112
&gt; + * @WEBKIT_PRINT_ERROR_INVALID_PAGE_RANGE: There are no pages to print

Nit: Invalid page ranges could include pages that exist, so perhaps saying there are no pages is not the most conceptually correct here. Go for Invalid page range?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:207
&gt; +     * finishes after an error and #WebKitPrintOperation::finished signal is emitted
&gt; +     * after this one.

Suggestion: replace the last sentence with just The #WebKitPrintOperation::finished signal is emitted after this one.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestPrinting.cpp:102
&gt; +        if (strcmp(gtk_printer_get_name(printer), &quot;Print to File&quot;))

Hrm. Something just popped on my mind. Does gtk_printer_get_name() return the localized string? I guess all of us run our systems in English, but be good to make this robust.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578516</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-03-14 10:05:41 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 127987 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127987&amp;action=review
&gt; 
&gt; OK, looks good to me!

Thanks for reviewing it!

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitError.h:112
&gt; &gt; + * @WEBKIT_PRINT_ERROR_INVALID_PAGE_RANGE: There are no pages to print
&gt; 
&gt; Nit: Invalid page ranges could include pages that exist, so perhaps saying there are no pages is not the most conceptually correct here. Go for Invalid page range?

Invalid page range sounds good to me.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitPrintOperation.cpp:207
&gt; &gt; +     * finishes after an error and #WebKitPrintOperation::finished signal is emitted
&gt; &gt; +     * after this one.
&gt; 
&gt; Suggestion: replace the last sentence with just The #WebKitPrintOperation::finished signal is emitted after this one.

Ok.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/tests/TestPrinting.cpp:102
&gt; &gt; +        if (strcmp(gtk_printer_get_name(printer), &quot;Print to File&quot;))
&gt; 
&gt; Hrm. Something just popped on my mind. Does gtk_printer_get_name() return the localized string? I guess all of us run our systems in English, but be good to make this robust.

Yes, it returned the localized string, but gtk_test_init() resets the locale to C for that reason, making sure unit tests always run with the C locale. My system locale is ES indeed, and test work without problems :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578558</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-03-14 10:57:20 -0700</bug_when>
    <thetext>Committed r110714: &lt;http://trac.webkit.org/changeset/110714&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127987</attachid>
            <date>2012-02-21 09:32:32 -0800</date>
            <delta_ts>2012-03-14 10:00:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-printing-errors.diff</filename>
            <type>text/plain</type>
            <size>35409</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjYzk4N2YyLi4wMWE4YTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTItMDItMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEhhbmRsZSBwcmludGluZyBlcnJvcnMgaW4gV2ViS2l0MgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxOTcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0
ay9FcnJvcnNHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJpbnRFcnJvcik6IENyZWF0ZSBh
IGdlbmVyaWMgcHJpbnQgZXJyb3IuCisgICAgICAgIChXZWJDb3JlOjpwcmludGVyTm90Rm91bmRF
cnJvcik6IENyZWF0ZSBhIHByaW50IGVycm9yIHRvIG5vdGlmeQorICAgICAgICB0aGF0IHRoZSBz
ZWxlY3RlZCBwcmludGVyIGNvdWxkIG5vdCBiZSBmb3VuZC4KKyAgICAgICAgKFdlYkNvcmU6Omlu
dmFsaWRQYWdlUmFuZ2VUb1ByaW50KTogQ3JlYXRlIGEgcHJpbnQgZXJyb3Igd2hlbiB0aGUKKyAg
ICAgICAgc2VsZWN0ZWQgcGFnZSByYW5nZSBpcyBpbnZhbGlkIGFuZCB0aGVyZSBhcmUgbm8gcGFn
ZXMgdG8gcHJpbnQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5oOgorICAgICAg
ICAoV2ViQ29yZSk6IEFkZCBwcmludCBlcnJvciBkb2FtaW4uCisKIDIwMTItMDItMjAgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBJbnZhbGlkIGNhc3QgaW4gV2Vi
Q29yZTo6dG9FbGVtZW50IC8gV2ViQ29yZTo6SFRNTEVsZW1lbnRTdGFjazo6RWxlbWVudFJlY29y
ZDo6ZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDFiYTJlOWUuLjc2OGZiZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1NiBAQAorMjAxMi0wMi0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gSGFuZGxlIHByaW50aW5nIGVycm9ycyBpbiBX
ZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NzE5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwOgorICAgICAgICAod2Via2l0X3ByaW50
X2Vycm9yX3F1YXJrKTogQWRkIG5ldyBlcnJvciBkb21haW4gZm9yIHByaW50CisgICAgICAgIGVy
cm9ycy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRFcnJvci5oOiBBZCBwcmlu
dCBlcnJvcnMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpbnRPcGVyYXRp
b24uY3BwOgorICAgICAgICAod2Via2l0X3ByaW50X29wZXJhdGlvbl9jbGFzc19pbml0KTogQWRk
CisgICAgICAgIFdlYktpdFByaW50T3BlcmF0aW9uOjpmYWlsZWQgc2lnbmFsLgorICAgICAgICAo
ZHJhd1BhZ2VzRm9yUHJpbnRpbmdDb21wbGV0ZWQpOiBFbWl0IFdlYktpdFByaW50T3BlcmF0aW9u
OjpmYWlsZWQKKyAgICAgICAgd2hlbiB0aGUgcHJpbnQgb3BlcmF0aW9uIGZhaWxlZCB3aXRoIHRo
ZSBnaXZlbiBlcnJvci4KKyAgICAgICAgKHdlYmtpdFByaW50T3BlcmF0aW9uUHJpbnRQYWdlc0Zv
ckZyYW1lKTogVXNlCisgICAgICAgIFByaW50RmluaXNoZWRDYWxsYmFjayBpbnN0ZWFkIG9mIGEg
Vm9pZENhbGxiYWNrLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0
ay1zZWN0aW9ucy50eHQ6IEFkZCBuZXcgc3ltYm9scy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9UZXN0UHJpbnRpbmcuY3BwOgorICAgICAgICAodGVzdFByaW50T3BlcmF0aW9u
UHJpbnQpOgorICAgICAgICAodGVzdFByaW50T3BlcmF0aW9uRXJyb3JzKTogVGVzdCBkaWZmZXJl
bnQgcHJpbnQgZXJyb3JzIGFyZQorICAgICAgICBjb3JyZWN0bHkgcmVwb3J0ZWQuCisgICAgICAg
IChiZWZvcmVBbGwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlKTogSW52YWxpZGF0ZSBwcmludCBmaW5p
c2hlZCBjYWxsYmFja3MKKyAgICAgICAgbWFwLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnByaW50RmluaXNoZWRDYWxsYmFjayk6IENhbGxiYWNrIGNhbGxlZAorICAgICAgICB3aGVu
IHRoZSBwcmludCBvcGVyYXRpb24gaGFzIGZpbmlzaGVkIGluIHRoZSB3ZWIgcHJvY2Vzcy4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2gpOiBJbnZhbGlkYXRl
IHByaW50IGZpbmlzaGVkCisgICAgICAgIGNhbGxiYWNrcyBtYXAuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcpOiBVc2UgYQorICAgICAgICBQcmlu
dEZpbmlzaGVkQ2FsbGJhY2sgaW5zdGVhZCBvZiBhIFZvaWRDYWxsYmFjay4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQpOiBEZWxjYXJlIFByaW50
RmluaXNoZWRDYWxsYmFjayBhcyBhIGdlbmVyaWMgY2FsbGJhY2suCisgICAgICAgIChXZWJQYWdl
UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46IFVz
ZSBQcmludEZpbmlzaGVkQ2FsbGJhY2sKKyAgICAgICAgaW5zdGVhZCBvZiBWb2lkQ2FsbGJhY2sg
YXMgY2FsbGJhY2sgYXJndW1lbnQgb2YKKyAgICAgICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcgbWVz
c2FnZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9u
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpbnRQYWdlc0RhdGE6OlByaW50UGFnZXNEYXRh
KTogTWFyayB0aGUgZGF0YSBhcyBpbnZhbGlkCisgICAgICAgIHdoZW4gdGhlcmUgYXJlIG5vIHBh
Z2VzIHRvIHByaW50LgorICAgICAgICAoUHJpbnRQYWdlc0RhdGEpOiBBZGQgaXNWYWxpZCBwYXJh
bWV0ZXIgdG8gbWFyayB0aGUgZGF0YSBzdHJ1Y3QgYXMKKyAgICAgICAgaW52YWxpZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJpbnRPcGVyYXRpb25HdGs6OnByaW50UGFnZXNJZGxlRG9uZSk6IENh
bGwKKyAgICAgICAgcHJpbnRQYWdlc0RvbmUoKSBpbnN0ZWFkIG9mIHByaW50RG9uZSgpLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnRQYWdlc0RvbmUpOiBSZW5h
bWVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnREb25lKTog
Tm90aWZ5IHRoZSBVSSBwcm9jZXNzCisgICAgICAgIHRoYXQgdGhlIHByaW50IG9wZXJhdGlvbiBo
YXMgZmluc2loZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByaW50T3BlcmF0aW9uR3RrOjpwcmlu
dCk6IEZpbmlzaCB0aGUgcHJpbnQgaWYgdGhlCisgICAgICAgIFByaW50UGFnZXNEYXRhIHN0cnVj
dCBpcyBub3QgdmFsaWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmlu
dE9wZXJhdGlvbkd0ay5oOgorCiAyMDEyLTAyLTIwICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbVU5JWF0gUGx1Z2luIGluZm9ybWF0aW9uIGZpZWxk
cyBhcmUgbm90IGludGVycHJldGVkIGFzIFVURi04CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9FcnJvcnNHdGsuY3BwCmluZGV4IDgxY2E4ZmQuLjc1NGQ1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwCkBAIC0yMCw2ICsyMCw5IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiRXJyb3JzR3RrLmgiCiAKKyNpbmNsdWRlICJEb2N1bWVudExv
YWRlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUHJpbnRDb250ZXh0LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgog
I2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTg3LDQgKzkwLDI1IEBAIFJlc291cmNl
RXJyb3IgZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBjb25zdCBTCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UudXJsKCku
c3RyaW5nKCksIGVycm9yTWVzc2FnZSk7CiB9CiAKK1Jlc291cmNlRXJyb3IgcHJpbnRFcnJvcihj
b25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpCit7CisgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gcHJpbnRDb250ZXh0
LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKKyAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpblByaW50LCBQcmludEVycm9yR2VuZXJhbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBkb2N1bWVudExvYWRlciA/IGRvY3VtZW50TG9hZGVyLT51cmwoKSA6IEtV
UkwoKSwgZXJyb3JNZXNzYWdlKTsKK30KKworUmVzb3VyY2VFcnJvciBwcmludGVyTm90Rm91bmRF
cnJvcihjb25zdCBQcmludENvbnRleHQqIHByaW50Q29udGV4dCkKK3sKKyAgICBEb2N1bWVudExv
YWRlciogZG9jdW1lbnRMb2FkZXIgPSBwcmludENvbnRleHQtPmZyYW1lKCktPmxvYWRlcigpLT5k
b2N1bWVudExvYWRlcigpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluUHJp
bnQsIFByaW50RXJyb3JQcmludGVyTm90Rm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCksIF8oIlByaW50
ZXIgbm90IGZvdW5kIikpOworfQorCitSZXNvdXJjZUVycm9yIGludmFsaWRQYWdlUmFuZ2VUb1By
aW50KGNvbnN0IFByaW50Q29udGV4dCogcHJpbnRDb250ZXh0KQoreworICAgIERvY3VtZW50TG9h
ZGVyKiBkb2N1bWVudExvYWRlciA9IHByaW50Q29udGV4dC0+ZnJhbWUoKS0+bG9hZGVyKCktPmRv
Y3VtZW50TG9hZGVyKCk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5Qcmlu
dCwgUHJpbnRFcnJvckludmFsaWRQYWdlUmFuZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnRMb2FkZXIgPyBkb2N1bWVudExvYWRlci0+dXJsKCkgOiBLVVJMKCksIF8oIkludmFs
aWQgcGFnZSByYW5nZSIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0Vycm9yc0d0ay5oCmluZGV4IDdhOTEwNWQuLjE5OGQxZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9FcnJvcnNHdGsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXJyb3JzR3RrLmgKQEAgLTI0LDYgKzI0LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQcmludENvbnRleHQ7CiBjbGFzcyBSZXNvdXJj
ZUVycm9yOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
QEAgLTMyLDYgKzMzLDcgQEAgY29uc3QgY2hhciogY29uc3QgZXJyb3JEb21haW5OZXR3b3JrID0g
IldlYktpdE5ldHdvcmtFcnJvciI7CiBjb25zdCBjaGFyKiBjb25zdCBlcnJvckRvbWFpblBvbGlj
eSA9ICJXZWJLaXRQb2xpY3lFcnJvciI7CiBjb25zdCBjaGFyKiBjb25zdCBlcnJvckRvbWFpblBs
dWdpbiA9ICJXZWJLaXRQbHVnaW5FcnJvciI7CiBjb25zdCBjaGFyKiBjb25zdCBlcnJvckRvbWFp
bkRvd25sb2FkID0gIldlYktpdERvd25sb2FkRXJyb3IiOworY29uc3QgY2hhciogY29uc3QgZXJy
b3JEb21haW5QcmludCA9ICJXZWJLaXRQcmludEVycm9yIjsKIAogZW51bSBOZXR3b3JrRXJyb3Ig
ewogICAgIE5ldHdvcmtFcnJvckZhaWxlZCA9IDM5OSwKQEAgLTY1LDYgKzY3LDEyIEBAIGVudW0g
RG93bmxvYWRFcnJvciB7CiAgICAgRG93bmxvYWRFcnJvckRlc3RpbmF0aW9uID0gNDAxCiB9Owog
CitlbnVtIFByaW50RXJyb3IgeworICAgIFByaW50RXJyb3JHZW5lcmFsID0gNTk5LAorICAgIFBy
aW50RXJyb3JQcmludGVyTm90Rm91bmQgPSA1MDAsCisgICAgUHJpbnRFcnJvckludmFsaWRQYWdl
UmFuZ2UgPSA1MDEKK307CisKIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CiBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKIFJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOwpAQCAtNzUsNiArODMsOSBAQCBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxI
YW5kbGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogUmVzb3VyY2VFcnJvciBk
b3dubG9hZE5ldHdvcmtFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CiBSZXNvdXJjZUVycm9y
IGRvd25sb2FkQ2FuY2VsbGVkQnlVc2VyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwog
UmVzb3VyY2VFcnJvciBkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKK1Jlc291cmNlRXJyb3IgcHJpbnRF
cnJvcihjb25zdCBQcmludENvbnRleHQqLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CitS
ZXNvdXJjZUVycm9yIHByaW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFByaW50Q29udGV4dCopOwor
UmVzb3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdlVG9QcmludChjb25zdCBQcmludENvbnRleHQq
KTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRF
cnJvci5jcHAKaW5kZXggNDJjZjBhYi4uMzBhZTY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmNwcApAQCAtNjgsMyArNjgsMTIgQEAgR1F1
YXJrIHdlYmtpdF9kb3dubG9hZF9lcnJvcl9xdWFyaygpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdFQktJVF9ET1dOTE9BRF9FUlJPUl9ORVRXT1JLLCBEb3dubG9hZEVycm9yTmV0d29y
ayk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9ET1dOTE9BRF9FUlJPUl9D
QU5DRUxMRURfQllfVVNFUiwgRG93bmxvYWRFcnJvckNhbmNlbGxlZEJ5VXNlcik7CiBDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9ET1dOTE9BRF9FUlJPUl9ERVNUSU5BVElPTiwg
RG93bmxvYWRFcnJvckRlc3RpbmF0aW9uKTsKKworR1F1YXJrIHdlYmtpdF9wcmludF9lcnJvcl9x
dWFyaygpCit7CisgICAgcmV0dXJuIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6
OmVycm9yRG9tYWluUHJpbnQpOworfQorCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdF
QktJVF9QUklOVF9FUlJPUl9HRU5FUkFMLCBQcmludEVycm9yR2VuZXJhbCk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9QUklOVF9FUlJPUl9QUklOVEVSX05PVF9GT1VORCwg
UHJpbnRFcnJvclByaW50ZXJOb3RGb3VuZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdFQktJVF9QUklOVF9FUlJPUl9JTlZBTElEX1BBR0VfUkFOR0UsIFByaW50RXJyb3JJbnZhbGlk
UGFnZVJhbmdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEVycm9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRF
cnJvci5oCmluZGV4IDliMGU2MzAuLmY5ODYxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEVycm9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0RXJyb3IuaApAQCAtMjksMTAgKzI5LDExIEBACiAKIEdfQkVH
SU5fREVDTFMKIAotI2RlZmluZSBXRUJLSVRfTkVUV09SS19FUlJPUiB3ZWJraXRfbmV0d29ya19l
cnJvcl9xdWFyayAoKQotI2RlZmluZSBXRUJLSVRfUE9MSUNZX0VSUk9SICB3ZWJraXRfcG9saWN5
X2Vycm9yX3F1YXJrICgpCi0jZGVmaW5lIFdFQktJVF9QTFVHSU5fRVJST1IgIHdlYmtpdF9wbHVn
aW5fZXJyb3JfcXVhcmsgKCkKKyNkZWZpbmUgV0VCS0lUX05FVFdPUktfRVJST1IgIHdlYmtpdF9u
ZXR3b3JrX2Vycm9yX3F1YXJrICgpCisjZGVmaW5lIFdFQktJVF9QT0xJQ1lfRVJST1IgICB3ZWJr
aXRfcG9saWN5X2Vycm9yX3F1YXJrICgpCisjZGVmaW5lIFdFQktJVF9QTFVHSU5fRVJST1IgICB3
ZWJraXRfcGx1Z2luX2Vycm9yX3F1YXJrICgpCiAjZGVmaW5lIFdFQktJVF9ET1dOTE9BRF9FUlJP
UiB3ZWJraXRfZG93bmxvYWRfZXJyb3JfcXVhcmsgKCkKKyNkZWZpbmUgV0VCS0lUX1BSSU5UX0VS
Uk9SICAgIHdlYmtpdF9wcmludF9lcnJvcl9xdWFyayAoKQogCiAvKioKICAqIFdlYktpdE5ldHdv
cmtFcnJvcjoKQEAgLTEwNCw2ICsxMDUsMjAgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBXRUJLSVRf
RE9XTkxPQURfRVJST1JfREVTVElOQVRJT04gPSA0MDEKIH0gV2ViS2l0RG93bmxvYWRFcnJvcjsK
IAorLyoqCisgKiBXZWJLaXRQcmludEVycm9yOgorICogQFdFQktJVF9QUklOVF9FUlJPUl9HRU5F
UkFMOiBVbnNwZWNpZmllZCBlcnJvciBkdXJpbmcgYSBwcmludCBvcGVyYXRpb24KKyAqIEBXRUJL
SVRfUFJJTlRfRVJST1JfUFJJTlRFUl9OT1RfRk9VTkQ6IFNlbGVjdGVkIHByaW50ZXIgY2Fubm90
IGJlIGZvdW5kCisgKiBAV0VCS0lUX1BSSU5UX0VSUk9SX0lOVkFMSURfUEFHRV9SQU5HRTogVGhl
cmUgYXJlIG5vIHBhZ2VzIHRvIHByaW50CisgKgorICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5v
dGUgdGhlIHZhcmlvdXMgcHJpbnQgZXJyb3JzLgorICovCit0eXBlZGVmIGVudW0geworICAgIFdF
QktJVF9QUklOVF9FUlJPUl9HRU5FUkFMID0gNTk5LAorICAgIFdFQktJVF9QUklOVF9FUlJPUl9Q
UklOVEVSX05PVF9GT1VORCA9IDUwMCwKKyAgICBXRUJLSVRfUFJJTlRfRVJST1JfSU5WQUxJRF9Q
QUdFX1JBTkdFID0gNTAxCit9IFdlYktpdFByaW50RXJyb3I7CisKIFdFQktJVF9BUEkgR1F1YXJr
CiB3ZWJraXRfbmV0d29ya19lcnJvcl9xdWFyayAgKHZvaWQpOwogCkBAIC0xMTYsNiArMTMxLDkg
QEAgd2Via2l0X3BsdWdpbl9lcnJvcl9xdWFyayAgICh2b2lkKTsKIFdFQktJVF9BUEkgR1F1YXJr
CiB3ZWJraXRfZG93bmxvYWRfZXJyb3JfcXVhcmsgKHZvaWQpOwogCitXRUJLSVRfQVBJIEdRdWFy
aword2Via2l0X3ByaW50X2Vycm9yX3F1YXJrICAgICh2b2lkKTsKKwogR19FTkRfREVDTFMKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRQcmludE9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRQcmludE9wZXJhdGlvbi5jcHAKaW5kZXggYTIwY2NiMi4uOTZlYTc1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UHJpbnRPcGVyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFByaW50T3Bl
cmF0aW9uLmNwcApAQCAtMjgsNyArMjgsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0
aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPGds
aWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKICNpZmRlZiBIQVZFX0dUS19VTklYX1BSSU5USU5HCiAjaW5jbHVkZSA8Z3RrL2d0a3VuaXhw
cmludC5oPgpAQCAtNDYsNiArNDgsNyBAQCBlbnVtIHsKIAogZW51bSB7CiAgICAgRklOSVNIRUQs
CisgICAgRkFJTEVELAogCiAgICAgTEFTVF9TSUdOQUwKIH07CkBAIC0xOTMsNiArMTk2LDI1IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF9wcmludF9vcGVyYXRpb25fY2xhc3NfaW5pdChXZWJLaXRQcmlu
dE9wZXJhdGlvbkNsYXNzKiBwcmludE9wCiAgICAgICAgICAgICAgICAgICAgICBnX2NjbG9zdXJl
X21hcnNoYWxfVk9JRF9fVk9JRCwKICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9OT05FLCAw
KTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFByaW50T3BlcmF0aW9uOjpmYWlsZWQ6CisgICAg
ICogQHByaW50X29wZXJhdGlvbjogdGhlICNXZWJLaXRQcmludE9wZXJhdGlvbiBvbiB3aGljaCB0
aGUgc2lnbmFsIHdhcyBlbWl0dGVkCisgICAgICogQGVycm9yOiB0aGUgI0dFcnJvciB0aGF0IHdh
cyB0cmlnZ2VyZWQKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMg
d2hpbGUgcHJpbnRpbmcuIFRoZSBnaXZlbiBAZXJyb3IsIG9mIHRoZSBkb21haW4KKyAgICAgKiAl
V0VCS0lUX1BSSU5UX0VSUk9SLCBjb250YWlucyBmdXJ0aGVyIGRldGFpbHMgb2YgdGhlIGZhaWx1
cmUuIFRoZSBwcmludCBvcGVyYXRpb24KKyAgICAgKiBmaW5pc2hlcyBhZnRlciBhbiBlcnJvciBh
bmQgI1dlYktpdFByaW50T3BlcmF0aW9uOjpmaW5pc2hlZCBzaWduYWwgaXMgZW1pdHRlZAorICAg
ICAqIGFmdGVyIHRoaXMgb25lLgorICAgICAqLworICAgIHNpZ25hbHNbRkFJTEVEXSA9CisgICAg
ICAgIGdfc2lnbmFsX25ldygiZmFpbGVkIiwKKyAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9G
Uk9NX0NMQVNTKGdPYmplY3RDbGFzcyksCisgICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9S
VU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgICAgICAg
ICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fUE9JTlRFUiwKKyAgICAgICAgICAgICAgICAg
ICAgIEdfVFlQRV9OT05FLCAxLAorICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1BPSU5URVIp
OworCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHByaW50T3BlcmF0aW9uQ2xhc3MsIHNp
emVvZihXZWJLaXRQcmludE9wZXJhdGlvblByaXZhdGUpKTsKIH0KIApAQCAtMjM3LDExICsyNTks
MTkgQEAgc3RhdGljIFdlYktpdFByaW50T3BlcmF0aW9uUmVzcG9uc2Ugd2Via2l0UHJpbnRPcGVy
YXRpb25SdW5EaWFsb2coV2ViS2l0UHJpbnRPcGUKIH0KICNlbmRpZgogCi1zdGF0aWMgdm9pZCBk
cmF3UGFnZXNGb3JQcmludGluZ0NvbXBsZXRlZChXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KQor
c3RhdGljIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmdDb21wbGV0ZWQoV0tFcnJvclJlZiB3a1By
aW50RXJyb3IsIFdLRXJyb3JSZWYsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgR1JlZlB0cjxXZWJL
aXRQcmludE9wZXJhdGlvbj4gcHJpbnRPcGVyYXRpb24gPSBhZG9wdEdSZWYoV0VCS0lUX1BSSU5U
X09QRVJBVElPTihjb250ZXh0KSk7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2Vi
Vmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJfVklFV19CQVNFKHByaW50T3BlcmF0aW9uLT5wcml2
LT53ZWJWaWV3KSk7CiAgICAgcGFnZS0+ZW5kUHJpbnRpbmcoKTsKKworICAgIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IgPSB0b0ltcGwod2tQcmludEVycm9yKS0+
cGxhdGZvcm1FcnJvcigpOworICAgIGlmICghcmVzb3VyY2VFcnJvci5pc051bGwoKSkgeworICAg
ICAgICBHT3duUHRyPEdFcnJvcj4gcHJpbnRFcnJvcihnX2Vycm9yX25ld19saXRlcmFsKGdfcXVh
cmtfZnJvbV9zdHJpbmcocmVzb3VyY2VFcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3Vy
Y2VFcnJvci5lcnJvckNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzb3VyY2VFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpLnV0
ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAgZ19zaWduYWxfZW1pdChwcmludE9wZXJhdGlvbi5nZXQo
KSwgc2lnbmFsc1tGQUlMRURdLCAwLCBwcmludEVycm9yLmdldCgpKTsKKyAgICB9CiAgICAgZ19z
aWduYWxfZW1pdChwcmludE9wZXJhdGlvbi5nZXQoKSwgc2lnbmFsc1tGSU5JU0hFRF0sIDAsIE5V
TEwpOwogfQogCkBAIC0yNDksNyArMjc5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0UHJpbnRPcGVy
YXRpb25QcmludFBhZ2VzRm9yRnJhbWUoV2ViS2l0UHJpbnRPcGVyYXRpb24qIHByaW50T3AKIHsK
ICAgICBQcmludEluZm8gcHJpbnRJbmZvKHByaW50U2V0dGluZ3MsIHBhZ2VTZXR1cCk7CiAgICAg
V2ViUGFnZVByb3h5KiBwYWdlID0gd2Via2l0V2ViVmlld0Jhc2VHZXRQYWdlKFdFQktJVF9XRUJf
VklFV19CQVNFKHByaW50T3BlcmF0aW9uLT5wcml2LT53ZWJWaWV3KSk7Ci0gICAgcGFnZS0+ZHJh
d1BhZ2VzRm9yUHJpbnRpbmcod2ViRnJhbWUsIHByaW50SW5mbywgVm9pZENhbGxiYWNrOjpjcmVh
dGUoZ19vYmplY3RfcmVmKHByaW50T3BlcmF0aW9uKSwgJmRyYXdQYWdlc0ZvclByaW50aW5nQ29t
cGxldGVkKSk7CisgICAgcGFnZS0+ZHJhd1BhZ2VzRm9yUHJpbnRpbmcod2ViRnJhbWUsIHByaW50
SW5mbywgUHJpbnRGaW5pc2hlZENhbGxiYWNrOjpjcmVhdGUoZ19vYmplY3RfcmVmKHByaW50T3Bl
cmF0aW9uKSwgJmRyYXdQYWdlc0ZvclByaW50aW5nQ29tcGxldGVkKSk7CiB9CiAKIFdlYktpdFBy
aW50T3BlcmF0aW9uUmVzcG9uc2Ugd2Via2l0UHJpbnRPcGVyYXRpb25SdW5EaWFsb2dGb3JGcmFt
ZShXZWJLaXRQcmludE9wZXJhdGlvbiogcHJpbnRPcGVyYXRpb24sIEd0a1dpbmRvdyogcGFyZW50
LCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZSkKQEAgLTM2Nyw4ICszOTcsOSBAQCB2b2lkIHdlYmtp
dF9wcmludF9vcGVyYXRpb25fc2V0X3BhZ2Vfc2V0dXAoV2ViS2l0UHJpbnRPcGVyYXRpb24qIHBy
aW50T3BlcmF0aW9uLAogICogdGhlIHVzZXIuIFRoaXMgbWV0aG9kIHJldHVybnMgd2hlbiB0aGUg
cHJpbnQgZGlhbG9nIGlzIGNsb3NlZC4KICAqIElmIHRoZSBwcmludCBkaWFsb2cgaXMgY2FuY2Vs
bGVkICVXRUJLSVRfUFJJTlRfT1BFUkFUSU9OX1JFU1BPTlNFX0NBTkNFTAogICogaXMgcmV0dXJu
ZWQuIElmIHRoZSB1c2VyIGNsaWNrcyBvbiB0aGUgcHJpbnQgYnV0dG9uLCAlV0VCS0lUX1BSSU5U
X09QRVJBVElPTl9SRVNQT05TRV9QUklOVAotICogaXMgcmV0dXJuZWQgYW5kIHRoZSBwcmludCBv
cGVyYXRpb24gc3RhcnRzLiBJbiB0aGlzIGNhc2UsIHRoZSBXZWJLaXRQcmludE9wZXJhdGlvbjo6
ZmluaXNoZWQKLSAqIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBmaW5pc2hl
cy4KKyAqIGlzIHJldHVybmVkIGFuZCB0aGUgcHJpbnQgb3BlcmF0aW9uIHN0YXJ0cy4gSW4gdGhp
cyBjYXNlLCB0aGUgI1dlYktpdFByaW50T3BlcmF0aW9uOjpmaW5pc2hlZAorICogc2lnbmFsIGlz
IGVtaXR0ZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGZpbmlzaGVzLiBJZiBhbiBlcnJvciBvY2N1cnMg
d2hpbGUgcHJpbnRpbmcgdGhlIHNpZ25hbAorICogI1dlYktpdFByaW50T3BlcmF0aW9uOjpmYWls
ZWQgaXMgZW1pdHRlZCBiZWZvcmUgI1dlYktpdFByaW50T3BlcmF0aW9uOjpmaW5pc2hlZC4KICAq
IElmIHRoZSBwcmludCBkaWFsb2cgaXMgbm90IGNhbmNlbGxlZCBjdXJyZW50IHByaW50IHNldHRp
bmdzIGFuZCBwYWdlIHNldHVwIG9mIEBwcmludF9vcGVyYXRpb24KICAqIGFyZSB1cGRhdGVkIHdp
dGggb3B0aW9ucyBzZWxlY3RlZCBieSB0aGUgdXNlciB3aGVuIFByaW50IGJ1dHRvbiBpcyBwcmVz
c2VkIGluIHByaW50IGRpYWxvZy4KICAqIFlvdSBjYW4gZ2V0IHRoZSB1cGRhdGVkIHByaW50IHNl
dHRpbmdzIGFuZCBwYWdlIHNldHVwIGJ5IGNhbGxpbmcKQEAgLTM5NCw4ICs0MjUsOSBAQCBXZWJL
aXRQcmludE9wZXJhdGlvblJlc3BvbnNlIHdlYmtpdF9wcmludF9vcGVyYXRpb25fcnVuX2RpYWxv
ZyhXZWJLaXRQcmludE9wZXJhdAogICogYXJlIG5vdCBzZXQgd2l0aCB3ZWJraXRfcHJpbnRfb3Bl
cmF0aW9uX3NldF9wcmludF9zZXR0aW5ncygpIGFuZAogICogd2Via2l0X3ByaW50X29wZXJhdGlv
bl9zZXRfcGFnZV9zZXR1cCgpLCB0aGUgZGVmYXVsdCBvcHRpb25zIHdpbGwgYmUgdXNlZAogICog
YW5kIHRoZSBwcmludCBqb2Igd2lsbCBiZSBzZW50IHRvIHRoZSBkZWZhdWx0IHByaW50ZXIuCi0g
KiBUaGUgV2ViS2l0UHJpbnRPcGVyYXRpb246OmZpbmlzaGVkIHNpZ25hbCBpcyBlbWl0dGVkIHdo
ZW4gdGhlIHByaW50aW5nCi0gKiBvcGVyYXRpb24gZmluaXNoZXMuCisgKiBUaGUgI1dlYktpdFBy
aW50T3BlcmF0aW9uOjpmaW5pc2hlZCBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIHRoZSBwcmludGlu
ZworICogb3BlcmF0aW9uIGZpbmlzaGVzLiBJZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgcHJpbnRp
bmcgdGhlIHNpZ25hbAorICogI1dlYktpdFByaW50T3BlcmF0aW9uOjpmYWlsZWQgaXMgZW1pdHRl
ZCBiZWZvcmUgI1dlYktpdFByaW50T3BlcmF0aW9uOjpmaW5pc2hlZC4KICAqLwogdm9pZCB3ZWJr
aXRfcHJpbnRfb3BlcmF0aW9uX3ByaW50KFdlYktpdFByaW50T3BlcmF0aW9uKiBwcmludE9wZXJh
dGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2Rv
Y3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IGFhZGQzOWMuLmI3YmM3NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
ZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNDQ5LDEzICs0NDksMTYgQEAgV0VCS0lU
X05FVFdPUktfRVJST1IKIFdFQktJVF9QTFVHSU5fRVJST1IKIFdFQktJVF9QT0xJQ1lfRVJST1IK
IFdFQktJVF9ET1dOTE9BRF9FUlJPUgorV0VCS0lUX1BSSU5UX0VSUk9SCiBXZWJLaXROZXR3b3Jr
RXJyb3IKIFdlYktpdFBsdWdpbkVycm9yCiBXZWJLaXRQb2xpY3lFcnJvcgogV2ViS2l0RG93bmxv
YWRFcnJvcgorV2ViS2l0UHJpbnRFcnJvcgogd2Via2l0X25ldHdvcmtfZXJyb3JfcXVhcmsKIHdl
YmtpdF9wbHVnaW5fZXJyb3JfcXVhcmsKIHdlYmtpdF9wb2xpY3lfZXJyb3JfcXVhcmsKIHdlYmtp
dF9kb3dubG9hZF9lcnJvcl9xdWFyaword2Via2l0X3ByaW50X2Vycm9yX3F1YXJrCiA8L1NFQ1RJ
T04+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3Rz
L1Rlc3RQcmludGluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0UHJpbnRpbmcuY3BwCmluZGV4IDFkZGRlMDguLjE1MGMzMWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RQcmludGluZy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFByaW50aW5nLmNw
cApAQCAtNzIsMzcgKzcyLDYzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UHJpbnRSZXF1ZXN0
ZWQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB9CiAKICNpZmRlZiBIQVZFX0dU
S19VTklYX1BSSU5USU5HCi1zdGF0aWMgdm9pZCB0ZXN0UHJpbnRPcGVyYXRpb25QcmludExvYWRD
aGFuZ2VkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LCBXZWJWaWV3
VGVzdCogdGVzdCkKLXsKLSAgICBpZiAobG9hZEV2ZW50ICE9IFdFQktJVF9MT0FEX0ZJTklTSEVE
KQotICAgICAgICByZXR1cm47Ci0gICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29w
KTsKLX0KK2NsYXNzIFByaW50VGVzdDogcHVibGljIFdlYlZpZXdUZXN0IHsKK3B1YmxpYzoKKyAg
ICBNQUtFX0dMSUJfVEVTVF9GSVhUVVJFKFByaW50VGVzdCk7CiAKLXN0YXRpYyB2b2lkIHRlc3RQ
cmludE9wZXJhdGlvblByaW50RmluaXNoZWQoV2ViS2l0UHJpbnRPcGVyYXRpb24qIHByaW50T3Bl
cmF0aW9uLCBXZWJWaWV3VGVzdCogdGVzdCkKLXsKLSAgICBnX29iamVjdF91bnJlZihwcmludE9w
ZXJhdGlvbik7Ci0gICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKLX0KKyAg
ICBzdGF0aWMgdm9pZCBwcmludEZpbmlzaGVkQ2FsbGJhY2soV2ViS2l0UHJpbnRPcGVyYXRpb24q
LCBQcmludFRlc3QqIHRlc3QpCisgICAgeworICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3Qt
Pm1fbWFpbkxvb3ApOworICAgIH0KIAotc3RhdGljIGdib29sZWFuIHRlc3RQcmludE9wZXJhdGlv
blByaW50UHJpbnRlcihHdGtQcmludGVyKiBwcmludGVyLCBncG9pbnRlciB1c2VyRGF0YSkKLXsK
LSAgICBpZiAoc3RyY21wKGd0a19wcmludGVyX2dldF9uYW1lKHByaW50ZXIpLCAiUHJpbnQgdG8g
RmlsZSIpKQotICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgc3RhdGljIHZvaWQgcHJpbnRGYWls
ZWRDYWxsYmFjayhXZWJLaXRQcmludE9wZXJhdGlvbiosIEdFcnJvciogZXJyb3IsIFByaW50VGVz
dCogdGVzdCkKKyAgICB7CisgICAgICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXhwZWN0ZWRFcnJvcik7
CisgICAgICAgIGdfYXNzZXJ0KGVycm9yKTsKKyAgICAgICAgZ19hc3NlcnQoZ19lcnJvcl9tYXRj
aGVzKGVycm9yLCBXRUJLSVRfUFJJTlRfRVJST1IsIHRlc3QtPm1fZXhwZWN0ZWRFcnJvcikpOwor
ICAgIH0KIAotICAgIEd0a1ByaW50ZXIqKiBmb3VuZFByaW50ZXIgPSBzdGF0aWNfY2FzdDxHdGtQ
cmludGVyKio+KHVzZXJEYXRhKTsKLSAgICAqZm91bmRQcmludGVyID0gc3RhdGljX2Nhc3Q8R3Rr
UHJpbnRlcio+KGdfb2JqZWN0X3JlZihwcmludGVyKSk7Ci0gICAgcmV0dXJuIFRSVUU7Ci19Cisg
ICAgUHJpbnRUZXN0KCkKKyAgICAgICAgOiBtX2V4cGVjdGVkRXJyb3IoMCkKKyAgICB7CisgICAg
ICAgIG1fcHJpbnRPcGVyYXRpb24gPSBhZG9wdEdSZWYod2Via2l0X3ByaW50X29wZXJhdGlvbl9u
ZXcobV93ZWJWaWV3KSk7CisgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0Rmlu
aXNoZXMoR19PQkpFQ1QobV9wcmludE9wZXJhdGlvbi5nZXQoKSkpOworICAgICAgICBnX3NpZ25h
bF9jb25uZWN0KG1fcHJpbnRPcGVyYXRpb24uZ2V0KCksICJmaW5pc2hlZCIsIEdfQ0FMTEJBQ0so
cHJpbnRGaW5pc2hlZENhbGxiYWNrKSwgdGhpcyk7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV9wcmludE9wZXJhdGlvbi5nZXQoKSwgImZhaWxlZCIsIEdfQ0FMTEJBQ0socHJpbnRGYWlsZWRD
YWxsYmFjayksIHRoaXMpOworICAgIH0KKworICAgIHN0YXRpYyBnYm9vbGVhbiB0ZXN0UHJpbnRP
cGVyYXRpb25QcmludFByaW50ZXIoR3RrUHJpbnRlciogcHJpbnRlciwgZ3BvaW50ZXIgdXNlckRh
dGEpCisgICAgeworICAgICAgICBpZiAoc3RyY21wKGd0a19wcmludGVyX2dldF9uYW1lKHByaW50
ZXIpLCAiUHJpbnQgdG8gRmlsZSIpKQorICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAg
ICAgIEd0a1ByaW50ZXIqKiBmb3VuZFByaW50ZXIgPSBzdGF0aWNfY2FzdDxHdGtQcmludGVyKio+
KHVzZXJEYXRhKTsKKyAgICAgICAgKmZvdW5kUHJpbnRlciA9IHN0YXRpY19jYXN0PEd0a1ByaW50
ZXIqPihnX29iamVjdF9yZWYocHJpbnRlcikpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9
CisKKyAgICBHdGtQcmludGVyKiBmaW5kUHJpbnRUb0ZpbGVQcmludGVyKCkKKyAgICB7CisgICAg
ICAgIEd0a1ByaW50ZXIqIHByaW50ZXIgPSAwOworICAgICAgICBndGtfZW51bWVyYXRlX3ByaW50
ZXJzKHRlc3RQcmludE9wZXJhdGlvblByaW50UHJpbnRlciwgJnByaW50ZXIsIDAsIFRSVUUpOwor
ICAgICAgICByZXR1cm4gcHJpbnRlcjsKKyAgICB9CiAKLXN0YXRpYyB2b2lkIHRlc3RQcmludE9w
ZXJhdGlvblByaW50KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQorICAgIHZvaWQg
d2FpdFVudGlsUHJpbnRGaW5pc2hlZCgpCisgICAgeworICAgICAgICBnX21haW5fbG9vcF9ydW4o
bV9tYWluTG9vcCk7CisgICAgfQorCisgICAgR1JlZlB0cjxXZWJLaXRQcmludE9wZXJhdGlvbj4g
bV9wcmludE9wZXJhdGlvbjsKKyAgICB1bnNpZ25lZCBpbnQgbV9leHBlY3RlZEVycm9yOworfTsK
Kworc3RhdGljIHZvaWQgdGVzdFByaW50T3BlcmF0aW9uUHJpbnQoUHJpbnRUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogewotICAgIGdfc2lnbmFsX2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCAi
bG9hZC1jaGFuZ2VkIiwgR19DQUxMQkFDSyh0ZXN0UHJpbnRPcGVyYXRpb25QcmludExvYWRDaGFu
Z2VkKSwgdGVzdCk7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PldlYktpdEdUSysg
cHJpbnRpbmcgdGVzdDwvYm9keT48L2h0bWw+IiwgMCk7Ci0gICAgZ19tYWluX2xvb3BfcnVuKHRl
c3QtPm1fbWFpbkxvb3ApOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCi0g
ICAgR3RrUHJpbnRlciogcHJpbnRlciA9IDA7Ci0gICAgZ3RrX2VudW1lcmF0ZV9wcmludGVycyh0
ZXN0UHJpbnRPcGVyYXRpb25QcmludFByaW50ZXIsICZwcmludGVyLCAwLCBUUlVFKTsKKyAgICBH
UmVmUHRyPEd0a1ByaW50ZXI+IHByaW50ZXIgPSBhZG9wdEdSZWYodGVzdC0+ZmluZFByaW50VG9G
aWxlUHJpbnRlcigpKTsKICAgICBpZiAoIXByaW50ZXIpIHsKICAgICAgICAgZ19tZXNzYWdlKCIl
cyIsICJDYW5ub3QgdGVzdCBXZWJLaXRQcmludE9wZXJhdGlvbi9wcmludDogbm8gc3VpdGFibGUg
cHJpbnRlciBmb3VuZCIpOwogICAgICAgICByZXR1cm47CkBAIC0xMTMsMTYgKzEzOSwxMiBAQCBz
dGF0aWMgdm9pZCB0ZXN0UHJpbnRPcGVyYXRpb25QcmludChXZWJWaWV3VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICBHT3duUHRyPGNoYXI+IG91dHB1dFVSSShnX2ZpbGVfZ2V0X3VyaShv
dXRwdXRGaWxlLmdldCgpKSk7CiAKICAgICBHUmVmUHRyPEd0a1ByaW50U2V0dGluZ3M+IHByaW50
U2V0dGluZ3MgPSBhZG9wdEdSZWYoZ3RrX3ByaW50X3NldHRpbmdzX25ldygpKTsKLSAgICBndGtf
cHJpbnRfc2V0dGluZ3Nfc2V0X3ByaW50ZXIocHJpbnRTZXR0aW5ncy5nZXQoKSwgZ3RrX3ByaW50
ZXJfZ2V0X25hbWUocHJpbnRlcikpOworICAgIGd0a19wcmludF9zZXR0aW5nc19zZXRfcHJpbnRl
cihwcmludFNldHRpbmdzLmdldCgpLCBndGtfcHJpbnRlcl9nZXRfbmFtZShwcmludGVyLmdldCgp
KSk7CiAgICAgZ3RrX3ByaW50X3NldHRpbmdzX3NldChwcmludFNldHRpbmdzLmdldCgpLCBHVEtf
UFJJTlRfU0VUVElOR1NfT1VUUFVUX1VSSSwgb3V0cHV0VVJJLmdldCgpKTsKLSAgICBnX29iamVj
dF91bnJlZihwcmludGVyKTsKIAotICAgIEdSZWZQdHI8V2ViS2l0UHJpbnRPcGVyYXRpb24+IHBy
aW50T3BlcmF0aW9uID0gd2Via2l0X3ByaW50X29wZXJhdGlvbl9uZXcodGVzdC0+bV93ZWJWaWV3
KTsKLSAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKHByaW50T3BlcmF0aW9uLmdldCgpKSk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChwcmludE9w
ZXJhdGlvbi5nZXQoKSwgImZpbmlzaGVkIiwgR19DQUxMQkFDSyh0ZXN0UHJpbnRPcGVyYXRpb25Q
cmludEZpbmlzaGVkKSwgdGVzdCk7Ci0gICAgd2Via2l0X3ByaW50X29wZXJhdGlvbl9zZXRfcHJp
bnRfc2V0dGluZ3MocHJpbnRPcGVyYXRpb24uZ2V0KCksIHByaW50U2V0dGluZ3MuZ2V0KCkpOwot
ICAgIHdlYmtpdF9wcmludF9vcGVyYXRpb25fcHJpbnQocHJpbnRPcGVyYXRpb24uZ2V0KCkpOwot
ICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKKyAgICB3ZWJraXRfcHJpbnRf
b3BlcmF0aW9uX3NldF9wcmludF9zZXR0aW5ncyh0ZXN0LT5tX3ByaW50T3BlcmF0aW9uLmdldCgp
LCBwcmludFNldHRpbmdzLmdldCgpKTsKKyAgICB3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX3ByaW50
KHRlc3QtPm1fcHJpbnRPcGVyYXRpb24uZ2V0KCkpOworICAgIHRlc3QtPndhaXRVbnRpbFByaW50
RmluaXNoZWQoKTsKIAogICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1Jl
ZihnX2ZpbGVfcXVlcnlfaW5mbyhvdXRwdXRGaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1NU
QU5EQVJEX1NJWkUiLCJHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX0NPTlRFTlRfVFlQRSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R0ZpbGVRdWVyeUluZm9GbGFncz4oMCksIDAsIDApKTsKQEAgLTEzMiw2
ICsxNTQsNDAgQEAgc3RhdGljIHZvaWQgdGVzdFByaW50T3BlcmF0aW9uUHJpbnQoV2ViVmlld1Rl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICBnX2ZpbGVfZGVsZXRlKG91dHB1dEZpbGUu
Z2V0KCksIDAsIDApOwogfQorCitzdGF0aWMgdm9pZCB0ZXN0UHJpbnRPcGVyYXRpb25FcnJvcnMo
UHJpbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPmxvYWRIdG1sKCI8
aHRtbD48Ym9keT5XZWJLaXRHVEsrIHByaW50aW5nIGVycm9ycyB0ZXN0PC9ib2R5PjwvaHRtbD4i
LCAwKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKworICAgIEdSZWZQdHI8
R3RrUHJpbnRlcj4gcHJpbnRlciA9IGFkb3B0R1JlZih0ZXN0LT5maW5kUHJpbnRUb0ZpbGVQcmlu
dGVyKCkpOworICAgIGlmICghcHJpbnRlcikgeworICAgICAgICBnX21lc3NhZ2UoIiVzIiwgIkNh
bm5vdCB0ZXN0IFdlYktpdFByaW50T3BlcmF0aW9uL3ByaW50OiBubyBzdWl0YWJsZSBwcmludGVy
IGZvdW5kIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBHZW5lcmFsIEVycm9y
OiBpbnZhbGlkIGZpbGVuYW1lLgorICAgIHRlc3QtPm1fZXhwZWN0ZWRFcnJvciA9IFdFQktJVF9Q
UklOVF9FUlJPUl9HRU5FUkFMOworICAgIEdSZWZQdHI8R3RrUHJpbnRTZXR0aW5ncz4gcHJpbnRT
ZXR0aW5ncyA9IGFkb3B0R1JlZihndGtfcHJpbnRfc2V0dGluZ3NfbmV3KCkpOworICAgIGd0a19w
cmludF9zZXR0aW5nc19zZXRfcHJpbnRlcihwcmludFNldHRpbmdzLmdldCgpLCBndGtfcHJpbnRl
cl9nZXRfbmFtZShwcmludGVyLmdldCgpKSk7CisgICAgZ3RrX3ByaW50X3NldHRpbmdzX3NldChw
cmludFNldHRpbmdzLmdldCgpLCBHVEtfUFJJTlRfU0VUVElOR1NfT1VUUFVUX1VSSSwgImZpbGU6
Ly8vZm9vL2JhciIpOworICAgIHdlYmtpdF9wcmludF9vcGVyYXRpb25fc2V0X3ByaW50X3NldHRp
bmdzKHRlc3QtPm1fcHJpbnRPcGVyYXRpb24uZ2V0KCksIHByaW50U2V0dGluZ3MuZ2V0KCkpOwor
ICAgIHdlYmtpdF9wcmludF9vcGVyYXRpb25fcHJpbnQodGVzdC0+bV9wcmludE9wZXJhdGlvbi5n
ZXQoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsUHJpbnRGaW5pc2hlZCgpOworCisgICAgLy8gUHJp
bnRlciBub3QgZm91bmQgZXJyb3IuCisgICAgdGVzdC0+bV9leHBlY3RlZEVycm9yID0gV0VCS0lU
X1BSSU5UX0VSUk9SX1BSSU5URVJfTk9UX0ZPVU5EOworICAgIGd0a19wcmludF9zZXR0aW5nc19z
ZXRfcHJpbnRlcihwcmludFNldHRpbmdzLmdldCgpLCAiVGhlIGZha2UgV2ViS2l0IHByaW50ZXIi
KTsKKyAgICB3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX3ByaW50KHRlc3QtPm1fcHJpbnRPcGVyYXRp
b24uZ2V0KCkpOworICAgIHRlc3QtPndhaXRVbnRpbFByaW50RmluaXNoZWQoKTsKKworICAgIC8v
IE5vIHBhZ2VzIHRvIHByaW50OiBwcmludCBldmVuIHBhZ2VzIGZvciBhIHNpbmdsZSBwYWdlIGRv
Y3VtZW50LgorICAgIHRlc3QtPm1fZXhwZWN0ZWRFcnJvciA9IFdFQktJVF9QUklOVF9FUlJPUl9J
TlZBTElEX1BBR0VfUkFOR0U7CisgICAgZ3RrX3ByaW50X3NldHRpbmdzX3NldF9wcmludGVyKHBy
aW50U2V0dGluZ3MuZ2V0KCksIGd0a19wcmludGVyX2dldF9uYW1lKHByaW50ZXIuZ2V0KCkpKTsK
KyAgICBndGtfcHJpbnRfc2V0dGluZ3Nfc2V0X3BhZ2Vfc2V0KHByaW50U2V0dGluZ3MuZ2V0KCks
IEdUS19QQUdFX1NFVF9FVkVOKTsKKyAgICB3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX3ByaW50KHRl
c3QtPm1fcHJpbnRPcGVyYXRpb24uZ2V0KCkpOworICAgIHRlc3QtPndhaXRVbnRpbFByaW50Rmlu
aXNoZWQoKTsKK30KICNlbmRpZiAvLyBIQVZFX0dUS19VTklYX1BSSU5USU5HCiAKIHZvaWQgYmVm
b3JlQWxsKCkKQEAgLTE0Miw3ICsxOTgsOCBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAgV2ViVmll
d1Rlc3Q6OmFkZCgiV2ViS2l0UHJpbnRPcGVyYXRpb24iLCAicHJpbnRpbmctc2V0dGluZ3MiLCB0
ZXN0UHJpbnRPcGVyYXRpb25QcmludFNldHRpbmdzKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgInByaW50LXJlcXVlc3RlZCIsIHRlc3RXZWJWaWV3UHJpbnRSZXF1ZXN0
ZWQpOwogI2lmZGVmIEhBVkVfR1RLX1VOSVhfUFJJTlRJTkcKLSAgICBXZWJWaWV3VGVzdDo6YWRk
KCJXZWJLaXRQcmludE9wZXJhdGlvbiIsICJwcmludCIsIHRlc3RQcmludE9wZXJhdGlvblByaW50
KTsKKyAgICBQcmludFRlc3Q6OmFkZCgiV2ViS2l0UHJpbnRPcGVyYXRpb24iLCAicHJpbnQiLCB0
ZXN0UHJpbnRPcGVyYXRpb25QcmludCk7CisgICAgUHJpbnRUZXN0OjphZGQoIldlYktpdFByaW50
T3BlcmF0aW9uIiwgInByaW50LWVycm9ycyIsIHRlc3RQcmludE9wZXJhdGlvbkVycm9ycyk7CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAyZmNmZjBiLi5hM2QyMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMzg2LDYgKzM4Niw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAg
ICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuY2xlYXIoKTsKICAgICBpbnZhbGlk
YXRlQ2FsbGJhY2tNYXAobV9zY3JpcHRWYWx1ZUNhbGxiYWNrcyk7CiAgICAgaW52YWxpZGF0ZUNh
bGxiYWNrTWFwKG1fY29tcHV0ZWRQYWdlc0NhbGxiYWNrcyk7CisjaWYgUExBVEZPUk0oR1RLKQor
ICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX3ByaW50RmluaXNoZWRDYWxsYmFja3MpOworI2Vu
ZGlmCiAKICAgICBWZWN0b3I8V2ViRWRpdENvbW1hbmRQcm94eSo+IGVkaXRDb21tYW5kVmVjdG9y
OwogICAgIGNvcHlUb1ZlY3RvcihtX2VkaXRDb21tYW5kU2V0LCBlZGl0Q29tbWFuZFZlY3Rvcik7
CkBAIC0zMTI5LDYgKzMxMzIsMjAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFu
ZENhbGxiYWNrKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGJvb2wgaXNFbmEKICAgICBjYWxs
YmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGNvbW1hbmROYW1lLmltcGwoKSwg
aXNFbmFibGVkLCBzdGF0ZSk7CiB9CiAKKyNpZiBQTEFURk9STShHVEspCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cHJpbnRGaW5pc2hlZENhbGxiYWNrKGNvbnN0IFJlc291cmNlRXJyb3ImIHByaW50RXJy
b3IsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgUmVmUHRyPFByaW50RmluaXNoZWRDYWxs
YmFjaz4gY2FsbGJhY2sgPSBtX3ByaW50RmluaXNoZWRDYWxsYmFja3MudGFrZShjYWxsYmFja0lE
KTsKKyAgICBpZiAoIWNhbGxiYWNrKSB7CisgICAgICAgIC8vIEZJWE1FOiBMb2cgZXJyb3Igb3Ig
YXNzZXJ0LgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPFdlYkVycm9yPiBl
cnJvciA9IFdlYkVycm9yOjpjcmVhdGUocHJpbnRFcnJvcik7CisgICAgY2FsbGJhY2stPnBlcmZv
cm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShlcnJvci5nZXQoKSk7Cit9CisjZW5kaWYKKwogdm9p
ZCBXZWJQYWdlUHJveHk6OmZvY3VzZWRGcmFtZUNoYW5nZWQodWludDY0X3QgZnJhbWVJRCkKIHsK
ICAgICBpZiAoIWZyYW1lSUQpIHsKQEAgLTMyMjgsNiArMzI0NSw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpwcm9jZXNzRGlkQ3Jhc2goKQogICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX3Njcmlw
dFZhbHVlQ2FsbGJhY2tzKTsKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9jb21wdXRlZFBh
Z2VzQ2FsbGJhY2tzKTsKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV92YWxpZGF0ZUNvbW1h
bmRDYWxsYmFja3MpOworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBpbnZhbGlkYXRlQ2FsbGJhY2tN
YXAobV9wcmludEZpbmlzaGVkQ2FsbGJhY2tzKTsKKyNlbmRpZgogCiAgICAgVmVjdG9yPFdlYkVk
aXRDb21tYW5kUHJveHkqPiBlZGl0Q29tbWFuZFZlY3RvcjsKICAgICBjb3B5VG9WZWN0b3IobV9l
ZGl0Q29tbWFuZFNldCwgZWRpdENvbW1hbmRWZWN0b3IpOwpAQCAtMzUzNywxNiArMzU1NywxNiBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSogZnJhbWUs
IGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbgogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RHJhd1BhZ2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJz
dCwgY291bnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgbV9pc1BlcmZvcm1pbmdET01QcmludE9w
ZXJhdGlvbiA/IENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSA6IDApOwogfQogI2VsaWYgUExBVEZPUk0oR1RLKQotdm9pZCBXZWJQYWdlUHJveHk6OmRy
YXdQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8m
IHByaW50SW5mbywgUGFzc1JlZlB0cjxWb2lkQ2FsbGJhY2s+IGRpZFByaW50Q2FsbGJhY2spCit2
b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJh
bWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBQYXNzUmVmUHRyPFByaW50RmluaXNoZWRD
YWxsYmFjaz4gZGlkUHJpbnRDYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBj
YWxsYmFjayA9IGRpZFByaW50Q2FsbGJhY2s7CisgICAgUmVmUHRyPFByaW50RmluaXNoZWRDYWxs
YmFjaz4gY2FsbGJhY2sgPSBkaWRQcmludENhbGxiYWNrOwogICAgIGlmICghaXNWYWxpZCgpKSB7
CiAgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAg
ICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsKKyAgICBt
X3ByaW50RmluaXNoZWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsK
ICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJp
bnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVy
YXRpb24gPyBDb3JlSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVw
bHkgOiAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBl
ZjEzYThkLi42Zjc3YWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CkBAIC0xNTMsNiArMTUzLDEwIEBAIGNsYXNzIFdlYkdlc3R1cmVFdmVudDsKIHR5cGVkZWYgR2Vu
ZXJpY0NhbGxiYWNrPFdLU3RyaW5nUmVmLCBTdHJpbmdJbXBsKj4gU3RyaW5nQ2FsbGJhY2s7CiB0
eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiwgV2ViU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKj4gU2NyaXB0VmFsdWVDYWxsYmFjazsKIAorI2lmIFBMQVRGT1JN
KEdUSykKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFdLRXJyb3JSZWY+IFByaW50RmluaXNoZWRD
YWxsYmFjazsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHN0cnVjdCBRdWV1
ZWRUb3VjaEV2ZW50cyB7CiAgICAgUXVldWVkVG91Y2hFdmVudHMoY29uc3QgTmF0aXZlV2ViVG91
Y2hFdmVudCYgZXZlbnQpCkBAIC01ODksNyArNTkzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZHJh
d1JlY3RUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8RGF0YUNhbGxiYWNrPik7CiAgICAgdm9pZCBkcmF3UGFn
ZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3Qs
IHVpbnQzMl90IGNvdW50LCBQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4pOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIFBhc3NSZWZQdHI8Vm9pZENhbGxiYWNrPik7CisgICAgdm9pZCBkcmF3
UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgUGFzc1Jl
ZlB0cjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+KTsKICNlbmRpZgogCiAgICAgY29uc3QgU3RyaW5n
JiBwZW5kaW5nQVBJUmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ0FQSVJlcXVl
c3RVUkw7IH0KQEAgLTgyNyw2ICs4MzEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NyaXB0VmFs
dWVDYWxsYmFjayhjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDY0X3QpOwogICAg
IHZvaWQgY29tcHV0ZWRQYWdlc0NhbGxiYWNrKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0
PiYsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVpbnQ2NF90KTsKICAgICB2
b2lkIHZhbGlkYXRlQ29tbWFuZENhbGxiYWNrKGNvbnN0IFN0cmluZyYsIGJvb2wsIGludCwgdWlu
dDY0X3QpOworI2lmIFBMQVRGT1JNKEdUSykKKyAgICB2b2lkIHByaW50RmluaXNoZWRDYWxsYmFj
ayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgdWludDY0X3QpOworI2VuZGlmCiAKICAg
ICB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQodWludDY0X3QgZnJhbWVJRCk7CiAgICAgdm9pZCBm
cmFtZVNldExhcmdlc3RGcmFtZUNoYW5nZWQodWludDY0X3QgZnJhbWVJRCk7CkBAIC05MDQsNiAr
OTExLDkgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2NyaXB0VmFs
dWVDYWxsYmFjaz4gPiBtX3NjcmlwdFZhbHVlQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxDb21wdXRlZFBhZ2VzQ2FsbGJhY2s+ID4gbV9jb21wdXRlZFBhZ2VzQ2FsbGJh
Y2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxWYWxpZGF0ZUNvbW1hbmRDYWxsYmFj
az4gPiBtX3ZhbGlkYXRlQ29tbWFuZENhbGxiYWNrczsKKyNpZiBQTEFURk9STShHVEspCisgICAg
SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFByaW50RmluaXNoZWRDYWxsYmFjaz4gPiBtX3ByaW50
RmluaXNoZWRDYWxsYmFja3M7CisjZW5kaWYKIAogICAgIEhhc2hTZXQ8V2ViRWRpdENvbW1hbmRQ
cm94eSo+IG1fZWRpdENvbW1hbmRTZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDBhNWRhNTguLmJkMmEzOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpA
QCAtMTQ0LDYgKzE0NCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgU2NyaXB0
VmFsdWVDYWxsYmFjayhDb3JlSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VsdERhdGEsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAgICAgQ29tcHV0ZWRQYWdlc0NhbGxiYWNrKFZlY3RvcjxXZWJDb3JlOjpJ
bnRSZWN0PiBwYWdlUmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgVmFsaWRhdGVDb21tYW5kQ2FsbGJhY2soV1RGOjpTdHJp
bmcgY29tbWFuZCwgYm9vbCBpc0VuYWJsZWQsIGludDMyX3Qgc3RhdGUsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCisjaWYgUExBVEZPUk0oR1RLKQorICAgIFByaW50RmluaXNoZWRDYWxsYmFjayhXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCB1aW50NjRfdCBjYWxsYmFja0lEKQorI2VuZGlmCiAK
ICAgICBQYWdlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoZG91YmxlIHNjYWxlRmFjdG9yKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3Bl
cmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UHJpbnRPcGVyYXRpb25HdGsuY3BwCmluZGV4IGIwNDQwY2YuLjA5NWY3NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJp
bnRPcGVyYXRpb25HdGsuY3BwCkBAIC0yNiw4ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIldlYlByaW50T3BlcmF0aW9uR3RrLmgiCiAKKyNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0d0ay5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29udGV4dENhaXJvLmg+CkBAIC03MiwxMyAr
NzQsMTQgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGVudW1lcmF0ZVByaW50ZXJzRmluaXNo
ZWQoV2ViUHJpbnRPcGVyYXRpb25HdGtVbml4KiBwcmludE9wZXJhdGlvbikKICAgICB7CiAgICAg
ICAgIGlmICghcHJpbnRPcGVyYXRpb24tPm1fcHJpbnRKb2IpIHsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBQcmludGluZyBlcnJvci4KKyAgICAgICAgICAgIHByaW50T3BlcmF0aW9uLT5wcmludERv
bmUocHJpbnRlck5vdEZvdW5kRXJyb3IocHJpbnRPcGVyYXRpb24tPm1fcHJpbnRDb250ZXh0KSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjYWlyb19zdXJmYWNl
X3QqIHN1cmZhY2UgPSBndGtfcHJpbnRfam9iX2dldF9zdXJmYWNlKHByaW50T3BlcmF0aW9uLT5t
X3ByaW50Sm9iLmdldCgpLCAwKTsKKyAgICAgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAg
ICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBndGtfcHJpbnRfam9iX2dldF9zdXJmYWNl
KHByaW50T3BlcmF0aW9uLT5tX3ByaW50Sm9iLmdldCgpLCAmZXJyb3Iub3V0UHRyKCkpOwogICAg
ICAgICBpZiAoIXN1cmZhY2UpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBQcmludGluZyBlcnJv
ci4KKyAgICAgICAgICAgIHByaW50T3BlcmF0aW9uLT5wcmludERvbmUocHJpbnRFcnJvcihwcmlu
dE9wZXJhdGlvbi0+bV9wcmludENvbnRleHQsIGVycm9yLT5tZXNzYWdlKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTQzLDggKzE0Niw5IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGNhaXJvX3Nob3dfcGFnZShjcik7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcHJp
bnRKb2JDb21wbGV0ZShHdGtQcmludEpvYiogcHJpbnRKb2IsIFdlYlByaW50T3BlcmF0aW9uR3Rr
VW5peCogcHJpbnRPcGVyYXRpb24sIGNvbnN0IEdFcnJvciopCisgICAgc3RhdGljIHZvaWQgcHJp
bnRKb2JDb21wbGV0ZShHdGtQcmludEpvYiogcHJpbnRKb2IsIFdlYlByaW50T3BlcmF0aW9uR3Rr
VW5peCogcHJpbnRPcGVyYXRpb24sIGNvbnN0IEdFcnJvciogZXJyb3IpCiAgICAgeworICAgICAg
ICBwcmludE9wZXJhdGlvbi0+cHJpbnREb25lKGVycm9yID8gcHJpbnRFcnJvcihwcmludE9wZXJh
dGlvbi0+bV9wcmludENvbnRleHQsIGVycm9yLT5tZXNzYWdlKSA6IFdlYkNvcmU6OlJlc291cmNl
RXJyb3IoKSk7CiAgICAgICAgIHByaW50T3BlcmF0aW9uLT5tX3ByaW50Sm9iID0gMDsKICAgICB9
CiAKQEAgLTIxMCw2ICsyMTQsNyBAQCBzdHJ1Y3QgUHJpbnRQYWdlc0RhdGEgewogICAgICAgICAs
IGNvbGxhdGVkKDApCiAgICAgICAgICwgdW5jb2xsYXRlZCgwKQogICAgICAgICAsIGlzRG9uZShm
YWxzZSkKKyAgICAgICAgLCBpc1ZhbGlkKHRydWUpCiAgICAgewogICAgICAgICBpZiAocHJpbnRP
cGVyYXRpb24tPmNvbGxhdGVDb3BpZXMoKSkgewogICAgICAgICAgICAgY29sbGF0ZWRDb3BpZXMg
PSBwcmludE9wZXJhdGlvbi0+Y29waWVzKCk7CkBAIC0yNDcsNiArMjUyLDExIEBAIHN0cnVjdCBQ
cmludFBhZ2VzRGF0YSB7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHByaW50T3Bl
cmF0aW9uLT5wYWdlQ291bnQoKTsgKytpKQogICAgICAgICAgICAgICAgIHBhZ2VzLmFwcGVuZChp
KTsKICAgICAgICAgfQorCisgICAgICAgIGlmICghcGFnZXMuc2l6ZSgpKSB7CisgICAgICAgICAg
ICBpc1ZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAg
ICAgcHJpbnRPcGVyYXRpb24tPnNldE51bWJlck9mUGFnZXNUb1ByaW50KHBhZ2VzLnNpemUoKSk7
CiAKICAgICAgICAgc2l6ZV90IG51bWJlclVwID0gcHJpbnRPcGVyYXRpb24tPm51bWJlclVwKCk7
CkBAIC0yODIsOSArMjkyLDExIEBAIHN0cnVjdCBQcmludFBhZ2VzRGF0YSB7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiBjaGVjayBwYWdlUG9zdGlv
biBpcyBiZXR3ZWVuIFswLi5wYWdlcy5zaXplKCkgLSAxXQotICAgICAgICAvLyBhbmQgY2FuY2Vs
IHRoZSBvcGVyYXRpb24gb3RoZXJ3aXNlIHdoZW4gZXJyb3IgcmVwb3J0aW5nCi0gICAgICAgIC8v
IGlzIGltcGxlbWVudGVkLgorICAgICAgICBpZiAoc2hlZXROdW1iZXIgKiBudW1iZXJVcCA+PSBw
YWdlcy5zaXplKCkpIHsKKyAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIHByaW50T3BlcmF0aW9uLT5zZXRQYWdlUG9z
aXRpb24oc2hlZXROdW1iZXIgKiBudW1iZXJVcCk7CiAgICAgICAgIHBhZ2VOdW1iZXIgPSBwYWdl
c1twcmludE9wZXJhdGlvbi0+cGFnZVBvc2l0aW9uKCldOwogICAgICAgICBmaXJzdFBhZ2VQb3Np
dGlvbiA9IHByaW50T3BlcmF0aW9uLT5wYWdlUG9zaXRpb24oKTsKQEAgLTM2MSw2ICszNzMsNyBA
QCBzdHJ1Y3QgUHJpbnRQYWdlc0RhdGEgewogICAgIHNpemVfdCB1bmNvbGxhdGVkQ29waWVzOwog
CiAgICAgYm9vbCBpc0RvbmUgOiAxOworICAgIGJvb2wgaXNWYWxpZCA6IDE7CiB9OwogCiBQYXNz
UmVmUHRyPFdlYlByaW50T3BlcmF0aW9uR3RrPiBXZWJQcmludE9wZXJhdGlvbkd0azo6Y3JlYXRl
KFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvKQpAQCAtNjU2LDMxICs2
NjksNDIgQEAgdm9pZCBXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnRQYWdlc0lkbGVEb25lKGdw
b2ludGVyIHVzZXJEYXRhKQogewogICAgIFByaW50UGFnZXNEYXRhKiBkYXRhID0gc3RhdGljX2Nh
c3Q8UHJpbnRQYWdlc0RhdGEqPih1c2VyRGF0YSk7CiAKLSAgICBkYXRhLT5wcmludE9wZXJhdGlv
bi0+cHJpbnREb25lKCk7CisgICAgZGF0YS0+cHJpbnRPcGVyYXRpb24tPnByaW50UGFnZXNEb25l
KCk7CiAgICAgZGVsZXRlIGRhdGE7CiB9CiAKLXZvaWQgV2ViUHJpbnRPcGVyYXRpb25HdGs6OnBy
aW50RG9uZSgpCit2b2lkIFdlYlByaW50T3BlcmF0aW9uR3RrOjpwcmludFBhZ2VzRG9uZSgpCiB7
CiAgICAgbV9wcmludFBhZ2VzSWRsZUlkID0gMDsKLQogICAgIGVuZFByaW50KCk7Ci0gICAgLy8g
Sm9iIGlzIG5vdyBzZW50IHRvIHRoZSBwcmludGVyLCB3ZSBjYW4gbm90aWZ5IHRoZSBVSSBwcm9j
ZXNzIHRoYXQgd2UgYXJlIGRvbmUuCi0gICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlZvaWRDYWxsYmFjayhtX2NhbGxiYWNrSUQpKTsKICAgICBtX2NhaXJvQ29udGV4
dCA9IDA7CiB9CiAKK3ZvaWQgV2ViUHJpbnRPcGVyYXRpb25HdGs6OnByaW50RG9uZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAobV9wcmludFBhZ2VzSWRs
ZUlkKQorICAgICAgICBnX3NvdXJjZV9yZW1vdmUobV9wcmludFBhZ2VzSWRsZUlkKTsKKyAgICBt
X3ByaW50UGFnZXNJZGxlSWQgPSAwOworCisgICAgLy8gUHJpbnQgZmluaXNoZWQgb3IgZmFpbGVk
LCBub3RpZnkgdGhlIFVJIHByb2Nlc3MgdGhhdCB3ZSBhcmUgZG9uZS4KKyAgICBtX3dlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UHJpbnRGaW5pc2hlZENhbGxiYWNrKGVycm9y
LCBtX2NhbGxiYWNrSUQpKTsKK30KKwogdm9pZCBXZWJQcmludE9wZXJhdGlvbkd0azo6cHJpbnQo
Y2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBkb3VibGUgeERQSSwgZG91YmxlIHlEUEkpCiB7CiAg
ICAgQVNTRVJUKG1fcHJpbnRDb250ZXh0KTsKIAorICAgIE93blB0cjxQcmludFBhZ2VzRGF0YT4g
ZGF0YSA9IGFkb3B0UHRyKG5ldyBQcmludFBhZ2VzRGF0YSh0aGlzKSk7CisgICAgaWYgKCFkYXRh
LT5pc1ZhbGlkKSB7CisgICAgICAgIHByaW50RG9uZShpbnZhbGlkUGFnZVJhbmdlVG9QcmludCht
X3ByaW50Q29udGV4dCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV94RFBJID0g
eERQSTsKICAgICBtX3lEUEkgPSB5RFBJOwogICAgIG1fY2Fpcm9Db250ZXh0ID0gYWRvcHRSZWYo
Y2Fpcm9fY3JlYXRlKHN1cmZhY2UpKTsKLQotICAgIFByaW50UGFnZXNEYXRhKiBkYXRhID0gbmV3
IFByaW50UGFnZXNEYXRhKHRoaXMpOwogICAgIG1fcHJpbnRQYWdlc0lkbGVJZCA9IGdka190aHJl
YWRzX2FkZF9pZGxlX2Z1bGwoR19QUklPUklUWV9ERUZBVUxUX0lETEUgKyAxMCwgcHJpbnRQYWdl
c0lkbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhLCBwcmludFBhZ2VzSWRsZURvbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5sZWFrUHRyKCksIHByaW50UGFnZXNJZGxlRG9u
ZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuaAppbmRleCA1ODIxYTJlLi4zZDFmMTA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBy
aW50T3BlcmF0aW9uR3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5oCkBAIC0zOCw2ICszOCw3IEBAIHR5cGVkZWYgc3Ry
dWN0IF9HdGtQYWdlUmFuZ2UgR3RrUGFnZVJhbmdlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBQcmludENvbnRleHQ7CitjbGFzcyBSZXNvdXJjZUVycm9yOwogfTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC00OSw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJQcmludE9wZXJhdGlvbkd0az4gY3JlYXRlKFdlYlBhZ2UqLCBjb25zdCBQcmludEluZm8m
KTsKICAgICB+V2ViUHJpbnRPcGVyYXRpb25HdGsoKTsKIAorICAgIFdlYkNvcmU6OlByaW50Q29u
dGV4dCogcHJpbnRDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9wcmludENvbnRleHQ7IH0KICAg
ICBHdGtQcmludFNldHRpbmdzKiBwcmludFNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9wcmlu
dFNldHRpbmdzLmdldCgpOyB9CiAgICAgR3RrUGFnZVNldHVwKiBwYWdlU2V0dXAoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VTZXR1cC5nZXQoKTsgfQogICAgIHZvaWQgc2V0TnVtYmVyT2ZQYWdlc1Rv
UHJpbnQoc2l6ZV90IG51bWJlck9mUGFnZXMpIHsgbV9udW1iZXJPZlBhZ2VzVG9QcmludCA9IG51
bWJlck9mUGFnZXM7IH0KQEAgLTg3LDcgKzg5LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZ2V0
Um93c0FuZENvbHVtbnNPZlBhZ2VzUGVyU2hlZXQoc2l6ZV90JiByb3dzLCBzaXplX3QmIGNvbHVt
bnMpOwogICAgIHZvaWQgZ2V0UG9zaXRpb25PZlBhZ2VJblNoZWV0KHNpemVfdCByb3dzLCBzaXpl
X3QgY29sdW1ucywgaW50JiB4LCBpbnQmeSk7CiAgICAgdm9pZCBwcmVwYXJlQ29udGV4dFRvRHJh
dygpOwotICAgIHZvaWQgcHJpbnREb25lKCk7CisgICAgdm9pZCBwcmludFBhZ2VzRG9uZSgpOwor
ICAgIHZvaWQgcHJpbnREb25lKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKIAogICAg
IFdlYlBhZ2UqIG1fd2ViUGFnZTsKICAgICBHUmVmUHRyPEd0a1ByaW50U2V0dGluZ3M+IG1fcHJp
bnRTZXR0aW5nczsK
</data>
<flag name="review"
          id="130258"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>