<?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>130174</bug_id>
          
          <creation_ts>2014-03-12 20:27:44 -0700</creation_ts>
          <short_desc>[GTK] Fix unused parameter warnings in the GObject WebKitDOM bindings</short_desc>
          <delta_ts>2014-03-14 08:32:12 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>dbates</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>989913</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-12 20:27:44 -0700</bug_when>
    <thetext>These warnings are prevalent when building with CMake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989914</commentid>
    <comment_count>1</comment_count>
      <attachid>226572</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-12 20:30:52 -0700</bug_when>
    <thetext>Created attachment 226572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989929</commentid>
    <comment_count>2</comment_count>
      <attachid>226572</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-03-12 22:19:44 -0700</bug_when>
    <thetext>Comment on attachment 226572
Patch

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

OK.

&gt; Source/WebCore/bindings/gobject/WebKitDOMObject.cpp:28
&gt; +    switch (propertyId) {
&gt;      default:
&gt; -        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
&gt; +        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec);
&gt;          break;
&gt;      }

The switch statement is unnecessary as we always execute the code for the default case.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:661
&gt; +        push(@txtGetProps, &quot;#else\n&quot;) if $conditionalString;
&gt; +        push(@txtGetProps, &quot;    UNUSED_PARAM(value);\n&quot;) if $conditionalString;
&gt; +        push(@txtGetProps, &quot;${conditionGuardEnd}\n&quot;) if $conditionalString;

Unless you feel the duplication of the if conditional (&quot;if $conditionalString&quot;) improves the readability of this code, I would write this as:

if ($conditionalString) {
    push(@txtGetProps, &quot;#else\n&quot;);
    push(@txtGetProps, &quot;    UNUSED_PARAM(value);\n&quot;);
    push(@txtGetProps, &quot;${conditionGuardEnd}\n&quot;);
}

&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:674
&gt; +            push(@txtSetProps, &quot;#else\n&quot;) if $conditionalString;
&gt; +            push(@txtSetProps, &quot;    UNUSED_PARAM(value);\n&quot;) if $conditionalString;
&gt; +            push(@txtSetProps, &quot;${conditionGuardEnd}\n&quot;) if $conditionalString;

Similarly, I would write this as:

if ($conditionalString) {
    push(@txtSetProps, &quot;#else\n&quot;);
    push(@txtSetProps, &quot;    UNUSED_PARAM(value);\n&quot;);
    push(@txtSetProps, &quot;${conditionGuardEnd}\n&quot;);
}

&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:797
&gt; +        push(@cBodyProperties, &quot;UNUSED_PARAM(request);\n&quot;);

Nit: We should indent &quot;UNUSED_PARAM(request);&quot;.

&gt; Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestNode.cpp:101
&gt; +UNUSED_PARAM(request);

Nit: This line should be indented 4 spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989954</commentid>
    <comment_count>3</comment_count>
      <attachid>226572</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-13 01:05:05 -0700</bug_when>
    <thetext>Comment on attachment 226572
Patch

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

Thank you!

&gt; Source/WebCore/bindings/gobject/DOMObjectCache.cpp:59
&gt; -static void weakRefNotify(gpointer data, GObject* zombie)
&gt; +static void weakRefNotify(gpointer data, GObject* /* zombie */)

I think e can simply avoid the parameter name in this case.

&gt;&gt; Source/WebCore/bindings/gobject/WebKitDOMObject.cpp:28
&gt;&gt;      }
&gt; 
&gt; The switch statement is unnecessary as we always execute the code for the default case.

The whole function is unnecessary :-) We can simply remove it and not give any imp for GObjectClass::get_property, since the only property this object has is not readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990003</commentid>
    <comment_count>4</comment_count>
      <attachid>226572</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-13 07:37:33 -0700</bug_when>
    <thetext>Comment on attachment 226572
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/gobject/WebKitDOMObject.cpp:28
&gt;&gt;&gt;      }
&gt;&gt; 
&gt;&gt; The switch statement is unnecessary as we always execute the code for the default case.
&gt; 
&gt; The whole function is unnecessary :-) We can simply remove it and not give any imp for GObjectClass::get_property, since the only property this object has is not readable.

I hope you don&apos;t mind if I don&apos;t take the suggestion to remove the method entirely. I don&apos;t have time to rebuild and test right now, but I want to land this get it off my plate. The DOM bindings and code generator need *a lot* of cleanup, so we should definitely think about running through them again pre-3.0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990004</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-13 07:49:46 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 226572 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=226572&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/bindings/gobject/WebKitDOMObject.cpp:28
&gt; &gt;&gt;&gt;      }
&gt; &gt;&gt; 
&gt; &gt;&gt; The switch statement is unnecessary as we always execute the code for the default case.
&gt; &gt; 
&gt; &gt; The whole function is unnecessary :-) We can simply remove it and not give any imp for GObjectClass::get_property, since the only property this object has is not readable.
&gt; 
&gt; I hope you don&apos;t mind if I don&apos;t take the suggestion to remove the method entirely. I don&apos;t have time to rebuild and test right now, but I want to land this get it off my plate. The DOM bindings and code generator need *a lot* of cleanup, so we should definitely think about running through them again pre-3.0.

Sure, go ahead and fix the warnings :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990490</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-14 08:32:12 -0700</bug_when>
    <thetext>Committed r165618: &lt;http://trac.webkit.org/changeset/165618&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226572</attachid>
            <date>2014-03-12 20:30:52 -0700</date>
            <delta_ts>2014-03-13 07:37:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130174-20140312203029.patch</filename>
            <type>text/plain</type>
            <size>42590</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NTIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAwNTA5N2Q1ZWY3MDk0
NjNhOGIwNDk4MjZhNGVjN2UxYTE5NTM3NS4uMDM4OGVkMmYyMWIxYzQzMjIxYjU1ZTJmZGRjOGM2
NDRlMjVmZjk2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAzLTEyICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBGaXgg
dW51c2VkIHBhcmFtZXRlciB3YXJuaW5ncyBpbiB0aGUgR09iamVjdCBXZWJLaXRET00gYmluZGlu
Z3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDE3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmlu
ZGluZ3MvZ29iamVjdC9ET01PYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OndlYWtS
ZWZOb3RpZnkpOiBGaXggdW51c2VkIHBhcmFtZXRlcnMuCisgICAgICAgICogYmluZGluZ3MvZ29i
amVjdC9XZWJLaXRET01EZXByZWNhdGVkLmNwcDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01PYmplY3QuY3BwOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtOiBHZW5lcmF0ZSBVTlVTRURfUEFSQU0gd2hl
biBhcHByb3ByaWF0ZSBhbmQgY2xlYW4KKyAgICAgICAgdXAgdGhlIGdldHRlciBhbmQgc2V0dGVy
IGNvZGUgZ2VuZXJhdGlvbiBhIGxpdHRsZSB0byBtYWtlIGl0IGVhc2llciB0byByZWFkLgorCiAy
MDE0LTAzLTEyICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBS
ZXBsYXk6IGFkZCBpbmZyYXN0cnVjdHVyZSBmb3IgbWVtb2l6aW5nIG5vbmRldGVybWluaXN0aWMg
RE9NIEFQSXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvRE9N
T2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9ET01PYmpl
Y3RDYWNoZS5jcHAKaW5kZXggMTYxY2Q1MzcwYmZlYmU4YjM0N2E5YWY4YmJkMWE3YjRiNTU4MjUx
Yi4uZGQxZTk4NTc5MGVhYWUwMDg4NDBhMTEzMmRhNGY0OTNmZDVjYjc0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9ET01PYmplY3RDYWNoZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9ET01PYmplY3RDYWNoZS5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAgdm9pZCBET01PYmplY3RDYWNoZTo6Zm9yZ2V0KHZvaWQqIG9iamVjdEhhbmRs
ZSkKICAgICBkb21PYmplY3RzKCkudGFrZShvYmplY3RIYW5kbGUpOwogfQogCi1zdGF0aWMgdm9p
ZCB3ZWFrUmVmTm90aWZ5KGdwb2ludGVyIGRhdGEsIEdPYmplY3QqIHpvbWJpZSkKK3N0YXRpYyB2
b2lkIHdlYWtSZWZOb3RpZnkoZ3BvaW50ZXIgZGF0YSwgR09iamVjdCogLyogem9tYmllICovKQog
ewogICAgIGdib29sZWFuKiBvYmplY3REZWFkID0gc3RhdGljX2Nhc3Q8Z2Jvb2xlYW4qPihkYXRh
KTsKICAgICAqb2JqZWN0RGVhZCA9IFRSVUU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01EZXByZWNhdGVkLmNwcAppbmRleCAyNDA5MTYzNTMx
MjgwZWJjNDBiZmUzODEwZDhjOGExZGI5ZGVmZmQ0Li5hMjhiMjkzYTA1NzkwNTZhM2MyODJmZmQ3
Y2NkNDBiNzMxOTM1ZjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvV2ViS2l0RE9NRGVwcmVjYXRlZC5jcHAKQEAgLTY0LDEyICs2NCwxMiBAQCBXZWJL
aXRET01ET01Ub2tlbkxpc3QqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9jbGFzc19saXN0
KFdlYktpdERPTUhUTUxFbGVtZQogICAgIHJldHVybiB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2Ns
YXNzX2xpc3QoV0VCS0lUX0RPTV9FTEVNRU5UKGVsZW1lbnQpKTsKIH0KIAotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfZm9ybV9lbGVtZW50X2Rpc3BhdGNoX2Zvcm1fY2hhbmdlKFdlYktpdERPTUhUTUxG
b3JtRWxlbWVudCogc2VsZikKK3ZvaWQgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9kaXNw
YXRjaF9mb3JtX2NoYW5nZShXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqKQogewogICAgIGdfd2Fy
bmluZygiVGhlIG9uZm9ybWNoYW5nZSBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJv
bSB0aGUgRE9NIHNwZWMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOwogfQogCi12b2lk
IHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZGlzcGF0Y2hfZm9ybV9pbnB1dChXZWJLaXRE
T01IVE1MRm9ybUVsZW1lbnQqIHNlbGYpCit2b2lkIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1l
bnRfZGlzcGF0Y2hfZm9ybV9pbnB1dChXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqKQogewogICAg
IGdfd2FybmluZygiVGhlIG9uZm9ybWlucHV0IGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3Zl
ZCBmcm9tIHRoZSBET00gc3BlYywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIik7CiB9CkBA
IC0yNTMsNyArMjUzLDcgQEAgZW51bSB7CiAgICAgSFRNTF9QUk9QRVJUSUVTX0NPTExFQ1RJT05f
UFJPUF9OQU1FUywKIH07CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVz
X2NvbGxlY3Rpb25fZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJ
ZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCitzdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSosIEdQYXJhbVNwZWMqIHBzcGVjKQogewogICAg
IHN3aXRjaCAocHJvcGVydHlJZCkgewogICAgIGNhc2UgSFRNTF9QUk9QRVJUSUVTX0NPTExFQ1RJ
T05fUFJPUF9MRU5HVEg6IHsKQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2NsYXNzX2luaXQoV2ViS2l0RE9NSFRNTFBy
b3BlcgogICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CiB9CiAKLXN0YXRpYyB2
b2lkIHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25faW5pdChXZWJLaXRET01I
VE1MUHJvcGVydGllc0NvbGxlY3Rpb24qIHJlcXVlc3QpCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2luaXQoV2ViS2l0RE9NSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uKikKIHsKIH0KIApAQCAtNTQxLDEzICs1NDEsMTMgQEAgZ2RvdWJsZSB3ZWJraXRf
ZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfaW5pdGlhbF90aW1lKFdlYktpdERPTUhUTUxNZWRp
YUVsZW1lbnQKIAogLy8gV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uCiAKLWdjaGFyKiB3
ZWJraXRfZG9tX3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rpb25fZ2V0X2RhdGEoV2ViS2l0RE9NUHJvY2Vz
c2luZ0luc3RydWN0aW9uKiBzZWxmKQorZ2NoYXIqIHdlYmtpdF9kb21fcHJvY2Vzc2luZ19pbnN0
cnVjdGlvbl9nZXRfZGF0YShXZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qKQogewogICAg
IGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20g
V2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7CiAgICAgcmV0
dXJuIGdfc3RyZHVwKCIiKTsKIH0KIAotdm9pZCB3ZWJraXRfZG9tX3Byb2Nlc3NpbmdfaW5zdHJ1
Y3Rpb25fc2V0X2RhdGEoV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uKiBzZWxmLCBjb25z
dCBnY2hhciogdmFsdWUsIEdFcnJvcioqIGVycm9yKQordm9pZCB3ZWJraXRfZG9tX3Byb2Nlc3Np
bmdfaW5zdHJ1Y3Rpb25fc2V0X2RhdGEoV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uKiwg
Y29uc3QgZ2NoYXIqLCBHRXJyb3IqKikKIHsKICAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0
aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2Vz
IG5vdGhpbmcuIiwgX19mdW5jX18pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuY3BwCmluZGV4IDIyYWVkMWY5MWM1NDM2NmY2MzMy
MzI2MGVjN2M4MzNiNGM2NThmNDAuLmRlYjEwYzNjNzY3MTVjOWI4NTIwYjY1YTFjNTAwOTViNDQx
ZjIwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0
RE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktp
dERPTU9iamVjdC5jcHAKQEAgLTE1LDE1ICsxNSwxNSBAQCBlbnVtIHsKIAogR19ERUZJTkVfVFlQ
RShXZWJLaXRET01PYmplY3QsIHdlYmtpdF9kb21fb2JqZWN0LCBHX1RZUEVfT0JKRUNUKQogCi1z
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX29iamVjdF9pbml0KFdlYktpdERPTU9iamVjdCogb2JqZWN0
KQorc3RhdGljIHZvaWQgd2Via2l0X2RvbV9vYmplY3RfaW5pdChXZWJLaXRET01PYmplY3QqKQog
ewogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX29iamVjdF9nZXRfcHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3Bl
YykKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fb2JqZWN0X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSosIEdQYXJhbVNwZWMqIHBzcGVjKQogewot
ICAgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewogICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZ
X0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yR09iamVjdC5wbQppbmRleCAyYTFiMjE3NDViYjRmMTM0ZjNiZGZlY2Q5YjM0NzRlNjMzYjRi
OThmLi44Mzk2YTZiY2I0NjZjOGVhOTk1YjIyZWExOWYyOGJmZmEzODdlMDA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmpl
Y3QucG0KQEAgLTY1MCw0NSArNjUwLDMwIEBAIGVudW0gewogRU9GCiAgICAgICAgIHB1c2goQGNC
b2R5UHJvcGVydGllcywgJGltcGxDb250ZW50KTsKIAotICAgICAgICBteSAkdHh0R2V0UHJvcCA9
IDw8ICJFT0YiOwotc3RhdGljIHZvaWQgJHtsb3dlckNhc2VJZmFjZU5hbWV9X2dldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBzcGVjKQotewotICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLUVPRgotICAgICAgICBwdXNoKEB0eHRHZXRQcm9wcywgJHR4dEdldFByb3ApOwotICAgICAg
ICAkdHh0R2V0UHJvcCA9IDw8ICJFT0YiOwotJGNvbmRpdGlvbkd1YXJkU3RhcnQKLSAgICAke2Ns
YXNzTmFtZX0qIHNlbGYgPSBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc30ob2JqZWN0KTsKLSAgICAkcHJp
dkZ1bmN0aW9uCi0kY29uZGl0aW9uR3VhcmRFbmQKLUVPRgotICAgICAgICBwdXNoKEB0eHRHZXRQ
cm9wcywgJHR4dEdldFByb3ApOwotCi0gICAgICAgICR0eHRHZXRQcm9wID0gPDwgIkVPRiI7Ci0g
ICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7Ci1FT0YKLSAgICAgICAgcHVzaChAdHh0R2V0UHJvcHMs
ICR0eHRHZXRQcm9wKTsKKyAgICAgICAgcHVzaChAdHh0R2V0UHJvcHMsICJzdGF0aWMgdm9pZCAk
e2xvd2VyQ2FzZUlmYWNlTmFtZX1fZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQg
cHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpXG4iKTsKKyAgICAg
ICAgcHVzaChAdHh0R2V0UHJvcHMsICJ7XG4iKTsKKyAgICAgICAgcHVzaChAdHh0R2V0UHJvcHMs
ICIgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlO1xuIik7CisgICAgICAg
IHB1c2goQHR4dEdldFByb3BzLCAiJHtjb25kaXRpb25HdWFyZFN0YXJ0fVxuIikgaWYgJGNvbmRp
dGlvbmFsU3RyaW5nOworICAgICAgICBwdXNoKEB0eHRHZXRQcm9wcywgIiAgICAke2NsYXNzTmFt
ZX0qIHNlbGYgPSBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc30ob2JqZWN0KTtcbiIpOworICAgICAgICBw
dXNoKEB0eHRHZXRQcm9wcywgIiAgICAke3ByaXZGdW5jdGlvbn1cbiIpOworICAgICAgICBwdXNo
KEB0eHRHZXRQcm9wcywgIiNlbHNlXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAg
IHB1c2goQHR4dEdldFByb3BzLCAiICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7XG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7CisgICAgICAgIHB1c2goQHR4dEdldFByb3BzLCAiJHtjb25kaXRpb25H
dWFyZEVuZH1cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgcHVzaChAdHh0R2V0
UHJvcHMsICJcbiIpOworICAgICAgICBwdXNoKEB0eHRHZXRQcm9wcywgIiAgICBzd2l0Y2ggKHBy
b3BlcnR5SWQpIHtcbiIpOwogCiAgICAgICAgIGlmIChzY2FsYXIgQHdyaXRlYWJsZVByb3BlcnRp
ZXMgPiAwKSB7Ci0gICAgICAgICAgICBteSAkdHh0U2V0UHJvcHMgPSA8PCAiRU9GIjsKLXN0YXRp
YyB2b2lkICR7bG93ZXJDYXNlSWZhY2VOYW1lfV9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wZXJ0eUlkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3Bl
YykKLXsKLSAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci1FT0YKLSAg
ICAgICAgICAgIHB1c2goQHR4dFNldFByb3BzLCAkdHh0U2V0UHJvcHMpOwotCi0gICAgICAgICAg
ICAkdHh0U2V0UHJvcHMgPSA8PCAiRU9GIjsKLSRjb25kaXRpb25HdWFyZFN0YXJ0Ci0gICAgJHtj
bGFzc05hbWV9KiBzZWxmID0gV0VCS0lUX0RPTV8ke2Nsc0NhcHN9KG9iamVjdCk7Ci0gICAgJHBy
aXZGdW5jdGlvbgotJGNvbmRpdGlvbkd1YXJkRW5kCi1FT0YKLSAgICAgICAgICAgIHB1c2goQHR4
dFNldFByb3BzLCAkdHh0U2V0UHJvcHMpOwotCi0gICAgICAgICAgICAkdHh0U2V0UHJvcHMgPSA8
PCAiRU9GIjsKLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKLUVPRgotICAgICAgICAgICAgcHVz
aChAdHh0U2V0UHJvcHMsICR0eHRTZXRQcm9wcyk7CisgICAgICAgICAgICBwdXNoKEB0eHRTZXRQ
cm9wcywgInN0YXRpYyB2b2lkICR7bG93ZXJDYXNlSWZhY2VOYW1lfV9zZXRfcHJvcGVydHkoR09i
amVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFy
YW1TcGVjKiBwc3BlYylcbiIpOworICAgICAgICAgICAgcHVzaChAdHh0U2V0UHJvcHMsICJ7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQHR4dFNldFByb3BzLCAiICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTtcbiIpOworICAgICAgICAgICAgcHVzaChAdHh0U2V0UHJvcHMs
ICIke2NvbmRpdGlvbkd1YXJkU3RhcnR9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAg
ICAgICAgICBwdXNoKEB0eHRTZXRQcm9wcywgIiAgICAke2NsYXNzTmFtZX0qIHNlbGYgPSBXRUJL
SVRfRE9NXyR7Y2xzQ2Fwc30ob2JqZWN0KTtcbiIpOworICAgICAgICAgICAgcHVzaChAdHh0U2V0
UHJvcHMsICIgICAgJHtwcml2RnVuY3Rpb259XG4iKTsKKyAgICAgICAgICAgIHB1c2goQHR4dFNl
dFByb3BzLCAiI2Vsc2VcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgICAgIHB1
c2goQHR4dFNldFByb3BzLCAiICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7XG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7CisgICAgICAgICAgICBwdXNoKEB0eHRTZXRQcm9wcywgIiR7Y29uZGl0aW9u
R3VhcmRFbmR9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgICAgICBwdXNoKEB0
eHRTZXRQcm9wcywgIlxuIik7CisgICAgICAgICAgICBwdXNoKEB0eHRTZXRQcm9wcywgIiAgICBz
d2l0Y2ggKHByb3BlcnR5SWQpIHtcbiIpOwogICAgICAgICB9CiAKICAgICAgICAgZm9yZWFjaCBt
eSAkYXR0cmlidXRlIChAcmVhZGFibGVQcm9wZXJ0aWVzKSB7CkBAIC03OTEsNiArNzc2LDggQEAg
RU9GCiAgICAgICAgICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsICJcbiIpOwogICAgICAgICAg
ICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCBAdHh0SW5zdGFsbFByb3BzKTsKICAgICAgICAgfQor
ICAgIH0gZWxzZSB7CisgICAgICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgIiAgICBVTlVTRURf
UEFSQU0ocmVxdWVzdENsYXNzKTtcbiIpOwogICAgIH0KICAgICAkaW1wbENvbnRlbnQgPSA8PCAi
RU9GIjsKIH0KQEAgLTgwNiw2ICs3OTMsOCBAQCBFT0YKICAgICBuZXcgKHByaXYpICR7Y2xhc3NO
YW1lfVByaXZhdGUoKTsKIEVPRgogICAgICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsICRpbXBs
Q29udGVudCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCAi
VU5VU0VEX1BBUkFNKHJlcXVlc3QpO1xuIik7CiAgICAgfQogICAgICRpbXBsQ29udGVudCA9IDw8
ICJFT0YiOwogfQpAQCAtMTIzMCw2ICsxMjE5LDEzIEBAIEVPRgogCiAgICAgaWYgKCRjb25kaXRp
b25hbFN0cmluZykgewogICAgICAgICBwdXNoKEBjQm9keSwgIiNlbHNlXG4iKTsKKworICAgICAg
ICBwdXNoKEBjQm9keSwgIiAgICBVTlVTRURfUEFSQU0oc2VsZik7XG4iKTsKKyAgICAgICAgZm9y
ZWFjaCBteSAkcGFyYW0gKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICAgICAg
cHVzaChAY0JvZHksICIgICAgVU5VU0VEX1BBUkFNKCIgLiAkcGFyYW0tPm5hbWUgLiAiKTtcbiIp
OworICAgICAgICB9CisgICAgICAgIHB1c2goQGNCb2R5LCAiICAgIFVOVVNFRF9QQVJBTShlcnJv
cik7XG4iKSBpZiAkcmFpc2VzRXhjZXB0aW9uOworCiAgICAgICAgIHB1c2goQGNCb2R5LCBAY29u
ZGl0aW9uYWxXYXJuKSBpZiBzY2FsYXIoQGNvbmRpdGlvbmFsV2Fybik7CiAgICAgICAgIGlmICgk
cmV0dXJuVHlwZSBuZSAidm9pZCIpIHsKICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+
SXNOb25Qb2ludGVyVHlwZSgkZnVuY3Rpb25TaWdUeXBlKSkgewpAQCAtMTI0Myw2ICsxMjM5LDEz
IEBAIEVPRgogCiAgICAgaWYgKCRwYXJlbnRDb25kaXRpb25hbFN0cmluZykgewogICAgICAgICBw
dXNoKEBjQm9keSwgIiNlbHNlXG4iKTsKKworICAgICAgICBwdXNoKEBjQm9keSwgIiAgICBVTlVT
RURfUEFSQU0oc2VsZik7XG4iKTsKKyAgICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKEB7JGZ1bmN0
aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICAgICAgcHVzaChAY0JvZHksICIgICAgVU5VU0VE
X1BBUkFNKCIgLiAkcGFyYW0tPm5hbWUgLiAiKTtcbiIpOworICAgICAgICB9CisgICAgICAgIHB1
c2goQGNCb2R5LCAiICAgIFVOVVNFRF9QQVJBTShlcnJvcik7XG4iKSBpZiAkcmFpc2VzRXhjZXB0
aW9uOworCiAgICAgICAgIHB1c2goQGNCb2R5LCBAcGFyZW50Q29uZGl0aW9uYWxXYXJuKSBpZiBz
Y2FsYXIoQHBhcmVudENvbmRpdGlvbmFsV2Fybik7CiAgICAgICAgIGlmICgkcmV0dXJuVHlwZSBu
ZSAidm9pZCIpIHsKICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNOb25Qb2ludGVy
VHlwZSgkZnVuY3Rpb25TaWdUeXBlKSkgewpAQCAtMTQ1OSwyNyArMTQ2Miw0NCBAQCBzdWIgR2Vu
ZXJhdGVFdmVudFRhcmdldElmYWNlIHsKICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsICIgICAg
aWYgKGVjKSB7XG4gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBkZXNj
cmlwdGlvbihlYyk7XG4iKTsKICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsICIgICAgICAgIGdf
c2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoXCJXRUJLSVRfRE9N
XCIpLCBkZXNjcmlwdGlvbi5jb2RlLCBkZXNjcmlwdGlvbi5uYW1lKTtcbiAgICB9XG4iKTsKICAg
ICBwdXNoKEBjQm9keVByb3BlcnRpZXMsICIgICAgcmV0dXJuIHJlc3VsdDtcbiIpOwotICAgIHB1
c2goQGNCb2R5UHJvcGVydGllcywgIiNlbHNlXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0g
ICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCBAY29uZGl0aW9uYWxXYXJuKSBpZiBzY2FsYXIoQGNv
bmRpdGlvbmFsV2Fybik7Ci0gICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCAiICAgIHJldHVybiBm
YWxzZTtcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOworICAgIGlmICgkY29uZGl0aW9uYWxTdHJpbmcpIHsKKyAgICAgICAgcHVzaChAY0Jv
ZHlQcm9wZXJ0aWVzLCAiI2Vsc2VcbiIpOworICAgICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMs
ICIgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7XG4iKTsKKyAgICAgICAgcHVzaChAY0JvZHlQcm9w
ZXJ0aWVzLCAiICAgIFVOVVNFRF9QQVJBTShldmVudCk7XG4iKTsKKyAgICAgICAgcHVzaChAY0Jv
ZHlQcm9wZXJ0aWVzLCAiICAgIFVOVVNFRF9QQVJBTShlcnJvcik7XG4iKTsKKyAgICAgICAgcHVz
aChAY0JvZHlQcm9wZXJ0aWVzLCBAY29uZGl0aW9uYWxXYXJuKSBpZiBzY2FsYXIoQGNvbmRpdGlv
bmFsV2Fybik7CisgICAgICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgIiAgICByZXR1cm4gZmFs
c2U7XG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpOworICAgIH0KICAgICBwdXNo
KEBjQm9keVByb3BlcnRpZXMsICJ9XG5cbiIpOwogCiAgICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVz
LCAic3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21fJHtkZWNhbWVsaXplfV9hZGRfZXZlbnRfbGlz
dGVuZXIoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgY29uc3QgY2hhciogZXZlbnROYW1l
LCBHQ2xvc3VyZSogaGFuZGxlciwgZ2Jvb2xlYW4gdXNlQ2FwdHVyZSlcbntcbiIpOwogICAgIHB1
c2goQGNCb2R5UHJvcGVydGllcywgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwogICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgIiAgICBXZWJDb3Jl
Ojoke2ludGVyZmFjZU5hbWV9KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6JHtp
bnRlcmZhY2VOYW1lfSo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpO1xu
Iik7CiAgICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCAiICAgIHJldHVybiBXZWJDb3JlOjpHT2Jq
ZWN0RXZlbnRMaXN0ZW5lcjo6YWRkRXZlbnRMaXN0ZW5lcihHX09CSkVDVCh0YXJnZXQpLCBjb3Jl
VGFyZ2V0LCBldmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUpO1xuIik7Ci0gICAgcHVzaChA
Y0JvZHlQcm9wZXJ0aWVzLCAiI2Vsc2VcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICBw
dXNoKEBjQm9keVByb3BlcnRpZXMsIEBjb25kaXRpb25hbFdhcm4pIGlmIHNjYWxhcihAY29uZGl0
aW9uYWxXYXJuKTsKLSAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsICIgICAgcmV0dXJuIGZhbHNl
O1xuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CisgICAgaWYgKCRjb25kaXRpb25hbFN0cmluZykgeworICAgICAgICBwdXNoKEBjQm9keVBy
b3BlcnRpZXMsICIjZWxzZVxuIik7CisgICAgICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgIiAg
ICBVTlVTRURfUEFSQU0odGFyZ2V0KTtcbiIpOworICAgICAgICBwdXNoKEBjQm9keVByb3BlcnRp
ZXMsICIgICAgVU5VU0VEX1BBUkFNKGV2ZW50TmFtZSk7XG4iKTsKKyAgICAgICAgcHVzaChAY0Jv
ZHlQcm9wZXJ0aWVzLCAiICAgIFVOVVNFRF9QQVJBTShoYW5kbGVyKTtcbiIpOworICAgICAgICBw
dXNoKEBjQm9keVByb3BlcnRpZXMsICIgICAgVU5VU0VEX1BBUkFNKHVzZUNhcHR1cmUpO1xuIik7
CisgICAgICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgQGNvbmRpdGlvbmFsV2FybikgaWYgc2Nh
bGFyKEBjb25kaXRpb25hbFdhcm4pOworICAgICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsICIg
ICAgcmV0dXJuIGZhbHNlO1xuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKTsKKyAg
ICB9CiAgICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCAifVxuXG4iKTsKIAogICAgIHB1c2goQGNC
b2R5UHJvcGVydGllcywgInN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfZG9tXyR7ZGVjYW1lbGl6ZX1f
cmVtb3ZlX2V2ZW50X2xpc3RlbmVyKFdlYktpdERPTUV2ZW50VGFyZ2V0KiB0YXJnZXQsIGNvbnN0
IGNoYXIqIGV2ZW50TmFtZSwgR0Nsb3N1cmUqIGhhbmRsZXIsIGdib29sZWFuIHVzZUNhcHR1cmUp
XG57XG4iKTsKICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsICIjaWYgJHtjb25kaXRpb25hbFN0
cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICBwdXNoKEBjQm9keVByb3BlcnRp
ZXMsICIgICAgV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZVRhcmdldCA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQp
LT5jb3JlT2JqZWN0KTtcbiIpOwogICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgIiAgICByZXR1
cm4gV2ViQ29yZTo6R09iamVjdEV2ZW50TGlzdGVuZXI6OnJlbW92ZUV2ZW50TGlzdGVuZXIoR19P
QkpFQ1QodGFyZ2V0KSwgY29yZVRhcmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCB1c2VDYXB0dXJl
KTtcbiIpOwotICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgIiNlbHNlXG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7Ci0gICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCBAY29uZGl0aW9uYWxXYXJu
KSBpZiBzY2FsYXIoQGNvbmRpdGlvbmFsV2Fybik7Ci0gICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVz
LCAiICAgIHJldHVybiBmYWxzZTtcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgIGlmICgkY29uZGl0aW9uYWxTdHJpbmcpIHsKKyAg
ICAgICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCAiI2Vsc2VcbiIpOworICAgICAgICBwdXNoKEBj
Qm9keVByb3BlcnRpZXMsICIgICAgVU5VU0VEX1BBUkFNKHRhcmdldCk7XG4iKTsKKyAgICAgICAg
cHVzaChAY0JvZHlQcm9wZXJ0aWVzLCAiICAgIFVOVVNFRF9QQVJBTShldmVudE5hbWUpO1xuIik7
CisgICAgICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgIiAgICBVTlVTRURfUEFSQU0oaGFuZGxl
cik7XG4iKTsKKyAgICAgICAgcHVzaChAY0JvZHlQcm9wZXJ0aWVzLCAiICAgIFVOVVNFRF9QQVJB
TSh1c2VDYXB0dXJlKTtcbiIpOworICAgICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsIEBjb25k
aXRpb25hbFdhcm4pIGlmIHNjYWxhcihAY29uZGl0aW9uYWxXYXJuKTsKKyAgICAgICAgcHVzaChA
Y0JvZHlQcm9wZXJ0aWVzLCAiICAgIHJldHVybiBmYWxzZTtcbiNlbmRpZiAvLyAke2NvbmRpdGlv
bmFsU3RyaW5nfVxuIik7CisgICAgfQogICAgIHB1c2goQGNCb2R5UHJvcGVydGllcywgIn1cblxu
Iik7CiAKICAgICBwdXNoKEBjQm9keVByb3BlcnRpZXMsICJzdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X2V2ZW50X3RhcmdldF9pbml0KFdlYktpdERPTUV2ZW50VGFyZ2V0SWZhY2UqIGlmYWNlKVxue1xu
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3Qu
Y3BwCmluZGV4IGNmYTdiZTE0OGQxODkzYjk2MDYxNTNhMTg1ODg4MTFkYTU4MzY3YTcuLjRkZDA3
ZmRhZTZjMmZiZWViMTY3MzEwNTNhNTgwOWZjNmI2ZGMxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RBY3RpdmVE
T01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC04NSw3ICs4NSw2IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9hY3RpdmVfZG9tX29iamVjdF9maW5hbGl6ZShH
T2JqZWN0KiBvYmplY3QpCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfYWN0aXZlX2RvbV9v
YmplY3RfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1Zh
bHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotCiAgICAgV2ViS2l0RE9NVGVzdEFjdGl2ZURPTU9iamVjdCog
c2VsZiA9IFdFQktJVF9ET01fVEVTVF9BQ1RJVkVfRE9NX09CSkVDVChvYmplY3QpOwogICAgIFdl
YkNvcmU6OlRlc3RBY3RpdmVET01PYmplY3QqIGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcAppbmRleCAwYmI1
OTA0N2YzNGU4NmU5ODI1M2QyNjU1MzdlMjY2NDEyNjQ2YWMwLi42MmU4MmRiYTI2OWRmMTc3MjUw
ZGM5YmY0MzcxZjRhNGE4ZGJlMmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RD
YWxsYmFjay5jcHAKQEAgLTEyMCw2ICsxMjAsNyBAQCBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3Rf
Y2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9ub19wYXJhbShXZWJLaXRET01UZXN0Q2FsbGJhY2sqCiAg
ICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tXaXRoTm9QYXJhbSgpOwogICAgIHJl
dHVybiByZXN1bHQ7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKICAgICBXRUJLSVRf
V0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTUUwgRGF0YWJhc2UiKQogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxnYm9vbGVhbj4oMCk7CiAjZW5kaWYgLyogRU5BQkxFKFNRTF9EQVRBQkFTRSkgKi8K
QEAgLTEzNiw2ICsxMzcsOCBAQCBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2Fs
bGJhY2tfd2l0aF9hcnJheV9wYXJhbShXZWJLaXRET01UZXN0Q2FsbGJhYwogICAgIGdib29sZWFu
IHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrV2l0aEFycmF5UGFyYW0oY29udmVydGVkQXJyYXlQYXJh
bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwor
ICAgIFVOVVNFRF9QQVJBTShhcnJheVBhcmFtKTsKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05P
VF9QUkVTRU5UKCJTUUwgRGF0YWJhc2UiKQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVh
bj4oMCk7CiAjZW5kaWYgLyogRU5BQkxFKFNRTF9EQVRBQkFTRSkgKi8KQEAgLTE1NCw2ICsxNTcs
OSBAQCBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9zZXJp
YWxpemVkX3NjcmlwdF92YWx1ZV9wYXJhbShXZQogICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0t
PmNhbGxiYWNrV2l0aFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVBhcmFtKGNvbnZlcnRlZFNyelBhcmFt
LCBjb252ZXJ0ZWRTdHJBcmcpOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShzZWxmKTsKKyAgICBVTlVTRURfUEFSQU0oc3J6UGFyYW0pOworICAgIFVOVVNFRF9Q
QVJBTShzdHJBcmcpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlNRTCBE
YXRhYmFzZSIpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGdib29sZWFuPigwKTsKICNlbmRpZiAv
KiBFTkFCTEUoU1FMX0RBVEFCQVNFKSAqLwpAQCAtMTcwLDYgKzE3Niw4IEBAIGdsb25nIHdlYmtp
dF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX25vbl9ib29sX3JldHVybl90eXBlKFdl
YktpdERPTVRlc3RDCiAgICAgZ2xvbmcgcmVzdWx0ID0gaXRlbS0+Y2FsbGJhY2tXaXRoTm9uQm9v
bFJldHVyblR5cGUoY29udmVydGVkU3RyQXJnKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oc2VsZik7CisgICAgVU5VU0VEX1BBUkFNKHN0ckFyZyk7CiAgICAg
V0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiU1FMIERhdGFiYXNlIikKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Z2xvbmc+KDApOwogI2VuZGlmIC8qIEVOQUJMRShTUUxfREFUQUJBU0Up
ICovCkBAIC0xODYsNiArMTk0LDggQEAgZ2Jvb2xlYW4gd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNr
X2NhbGxiYWNrX3dpdGhfc3RyaW5nX2xpc3QoV2ViS2l0RE9NVGVzdENhbGxiYWMKICAgICBnYm9v
bGVhbiByZXN1bHQgPSBpdGVtLT5jYWxsYmFja1dpdGhTdHJpbmdMaXN0KGNvbnZlcnRlZExpc3RQ
YXJhbSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYp
OworICAgIFVOVVNFRF9QQVJBTShsaXN0UGFyYW0pOwogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVf
Tk9UX1BSRVNFTlQoIlNRTCBEYXRhYmFzZSIpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGdib29s
ZWFuPigwKTsKICNlbmRpZiAvKiBFTkFCTEUoU1FMX0RBVEFCQVNFKSAqLwpAQCAtMjAwLDYgKzIx
MCw4IEBAIGdib29sZWFuIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX2Jv
b2xlYW4oV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzCiAgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRl
bS0+Y2FsbGJhY2tXaXRoQm9vbGVhbihib29sUGFyYW0pOwogICAgIHJldHVybiByZXN1bHQ7CiAj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKKyAgICBVTlVTRURfUEFSQU0oYm9vbFBhcmFt
KTsKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJTUUwgRGF0YWJhc2UiKQog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxnYm9vbGVhbj4oMCk7CiAjZW5kaWYgLyogRU5BQkxFKFNR
TF9EQVRBQkFTRSkgKi8KQEAgLTIxNiw2ICsyMjgsOSBAQCBnYm9vbGVhbiB3ZWJraXRfZG9tX3Rl
c3RfY2FsbGJhY2tfY2FsbGJhY2tfcmVxdWlyZXNfdGhpc190b19wYXNzKFdlYktpdERPTVRlc3RD
YQogICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPmNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNz
KGxvbmdQYXJhbSwgY29udmVydGVkVGVzdE5vZGVQYXJhbSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
ICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOworICAgIFVOVVNFRF9QQVJBTShsb25nUGFy
YW0pOworICAgIFVOVVNFRF9QQVJBTSh0ZXN0Tm9kZVBhcmFtKTsKICAgICBXRUJLSVRfV0FSTl9G
RUFUVVJFX05PVF9QUkVTRU5UKCJTUUwgRGF0YWJhc2UiKQogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxnYm9vbGVhbj4oMCk7CiAjZW5kaWYgLyogRU5BQkxFKFNRTF9EQVRBQkFTRSkgKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRl
eCBiOWNjNDI5NDVlNzE1ZjQxNDM1ZjJjYzRmMjQxNDkwY2FjNGNiOTMxLi44ZDI4YjI5N2IzNTRk
NjVlZDg2NDYyM2I4NzIyMmQ1Mjg5N2EyMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC04NSw3ICs4NSw2IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9maW5hbGl6ZShHT2JqZWN0
KiBvYmplY3QpCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3Jf
Z2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotCiAgICAgV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IqIHNlbGYg
PSBXRUJLSVRfRE9NX1RFU1RfRVZFTlRfQ09OU1RSVUNUT1Iob2JqZWN0KTsKICAgICBXZWJDb3Jl
OjpUZXN0RXZlbnRDb25zdHJ1Y3RvciogY29yZVNlbGYgPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggOTFiYjM1
YTFlZmNlYzQ5ZmY2Yzc5MTZlMDk4OWUyZWQ5ZmM5MzIwNS4uODM2ZDMxYzIxNmZjMDE1NjBlYTg2
YTRjY2ZjMWU1YjFiZWNmNmZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV4
Y2VwdGlvbi5jcHAKQEAgLTg0LDcgKzg0LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X2V4Y2VwdGlvbl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiBzdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX3Rlc3RfZXhjZXB0aW9uX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQogewogICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLQogICAgIFdlYktpdERPTVRlc3RFeGNl
cHRpb24qIHNlbGYgPSBXRUJLSVRfRE9NX1RFU1RfRVhDRVBUSU9OKG9iamVjdCk7CiAgICAgV2Vi
Q29yZTo6VGVzdEV4Y2VwdGlvbiogY29yZVNlbGYgPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLnN5bWJvbHMgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZS5zeW1ib2xzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMy
ZTQ4YzUzOTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAKaW5k
ZXggMzQxOThlOGRiMjRjNzI5YWQyYjU0ZGM4M2I1ZGY3OTgxMDdlYzczOS4uNzlkMDg0MTE4YjEx
MzM1ZDc4NjRmOTYxZDkwYmNmMTdlNDhiODk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEludGVyZmFjZS5jcHAKQEAgLTEwMSw3ICsxMDEsMTAgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wZXIKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCiAg
ICAgV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZiA9IFdFQktJVF9ET01fVEVTVF9JTlRFUkZB
Q0Uob2JqZWN0KTsKICAgICBXZWJDb3JlOjpUZXN0SW50ZXJmYWNlKiBjb3JlU2VsZiA9IFdlYktp
dDo6Y29yZShzZWxmKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKICNlbmRpZiAv
LyBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCisKICAgICBzd2l0Y2gg
KHByb3BlcnR5SWQpIHsKICAgICBjYXNlIFBST1BfSU1QTEVNRU5UU19TVFIyOiB7CiAjaWYgRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQpAQCAtMTQzLDcgKzE0NiwxMCBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcgogI2lmIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFC
TEUoQ29uZGl0aW9uMikKICAgICBXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmID0gV0VCS0lU
X0RPTV9URVNUX0lOVEVSRkFDRShvYmplY3QpOwogICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2Uq
IGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
dmFsdWUpOwogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MikKKwogICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewogICAgIGNhc2UgUFJPUF9JTVBMRU1FTlRT
X1NUUjE6IHsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCkBA
IC0zMzQsMTAgKzM0MCwxMiBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVt
ZW50c19tZXRob2QxKFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpCiAgICAgV2ViQ29yZTo6
VGVzdEludGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT5pbXBs
ZW1lbnRzTWV0aG9kMSgpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2VsZik7CiAgICAgV0VC
S0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMjIiKQogICAgIFdFQktJVF9X
QVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIzIikKICNlbmRpZiAvKiBFTkFCTEUo
Q29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykgKi8KICNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHNlbGYpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRp
dGlvbjEiKQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIi
KQogI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikgKi8K
QEAgLTM2MywxMSArMzcxLDE5IEBAIFdlYktpdERPTVRlc3RPYmoqIHdlYmtpdF9kb21fdGVzdF9p
bnRlcmZhY2VfaW1wbGVtZW50c19tZXRob2QyKFdlYktpdERPTVRlc3RJbnRlCiAgICAgfQogICAg
IHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKICNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKHNlbGYpOworICAgIFVOVVNFRF9QQVJBTShzdHJBcmcpOworICAgIFVOVVNFRF9Q
QVJBTShvYmpBcmcpOworICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMjIiKQogICAgIFdFQktJVF9XQVJOX0ZFQVRV
UkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIzIikKICAgICByZXR1cm4gMDsKICNlbmRpZiAvKiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykgKi8KICNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHNlbGYpOworICAgIFVOVVNFRF9QQVJBTShzdHJBcmcpOworICAgIFVOVVNF
RF9QQVJBTShvYmpBcmcpOworICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgV0VCS0lUX1dB
Uk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCiAgICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIpCiAgICAgcmV0dXJuIDA7CkBAIC0zODMsMTAg
KzM5OSwxMiBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfaW1wbGVtZW50c19tZXRo
b2Q0KFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbGYpCiAgICAgV2ViQ29yZTo6VGVzdEludGVy
ZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT5pbXBsZW1lbnRzTWV0
aG9kNCgpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2VsZik7CiAgICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMjIiKQogICAgIFdFQktJVF9XQVJOX0ZFQVRV
UkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIzIikKICNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9u
MjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykgKi8KICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQog
ICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIiKQogI2VuZGlm
IC8qIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikgKi8KQEAgLTQwMSwx
MCArNDE5LDEyIEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zdXBwbGVtZW50YWxf
bWV0aG9kMShXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmCiAgICAgV2ViQ29yZTo6VGVzdElu
dGVyZmFjZSogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBXZWJDb3JlOjpUZXN0U3Vw
cGxlbWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2QxKGl0ZW0pOwogI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oc2VsZik7CiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0
aW9uMTEiKQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEy
IikKICNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikg
Ki8KICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRV
UkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9U
X1BSRVNFTlQoIkNvbmRpdGlvbjIiKQogI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMikgKi8KQEAgLTQzMCwxMSArNDUwLDE5IEBAIFdlYktpdERPTVRlc3RP
YmoqIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc3VwcGxlbWVudGFsX21ldGhvZDIoV2ViS2l0
RE9NVGVzdEluCiAgICAgfQogICAgIHJldHVybiBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0Lmdl
dCgpKTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOworICAgIFVOVVNFRF9QQVJBTShz
dHJBcmcpOworICAgIFVOVVNFRF9QQVJBTShvYmpBcmcpOworICAgIFVOVVNFRF9QQVJBTShlcnJv
cik7CiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMTEiKQog
ICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEyIikKICAgICBy
ZXR1cm4gMDsKICNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRp
b24xMikgKi8KICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOworICAgIFVOVVNFRF9QQVJB
TShzdHJBcmcpOworICAgIFVOVVNFRF9QQVJBTShvYmpBcmcpOworICAgIFVOVVNFRF9QQVJBTShl
cnJvcik7CiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIp
CiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIpCiAgICAg
cmV0dXJuIDA7CkBAIC00NTAsMTAgKzQ3OCwxMiBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRl
cmZhY2Vfc3VwcGxlbWVudGFsX21ldGhvZDQoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsZgog
ICAgIFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAg
ICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kNChpdGVtKTsK
ICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVf
Tk9UX1BSRVNFTlQoIkNvbmRpdGlvbjExIikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9Q
UkVTRU5UKCJDb25kaXRpb24xMiIpCiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpICovCiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKICAg
ICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xIikKICAgICBXRUJL
SVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yIikKICNlbmRpZiAvKiBFTkFC
TEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpICovCkBAIC00NjksMTEgKzQ5OSwx
MyBAQCBnY2hhciogd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9nZXRfaW1wbGVtZW50c19zdHIx
KFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHNlbAogICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0
VG9VVEY4U3RyaW5nKGl0ZW0tPmltcGxlbWVudHNTdHIxKCkpOwogICAgIHJldHVybiByZXN1bHQ7
CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJF
X05PVF9QUkVTRU5UKCJDb25kaXRpb24yMiIpCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1Rf
UFJFU0VOVCgiQ29uZGl0aW9uMjMiKQogICAgIHJldHVybiAwOwogI2VuZGlmIC8qIEVOQUJMRShD
b25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKSAqLwogI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oc2VsZik7CiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0
aW9uMSIpCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIp
CiAgICAgcmV0dXJuIDA7CkBAIC00OTAsMTEgKzUyMiwxMyBAQCBnY2hhciogd2Via2l0X2RvbV90
ZXN0X2ludGVyZmFjZV9nZXRfaW1wbGVtZW50c19zdHIyKFdlYktpdERPTVRlc3RJbnRlcmZhY2Uq
IHNlbAogICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0ZW0tPmltcGxl
bWVudHNTdHIyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShzZWxmKTsKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24y
MiIpCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMjMiKQog
ICAgIHJldHVybiAwOwogI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENv
bmRpdGlvbjIzKSAqLwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2VsZik7CiAgICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCiAgICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIpCiAgICAgcmV0dXJuIDA7CkBAIC01MTIs
MTAgKzU0NiwxNCBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X2ltcGxlbWVu
dHNfc3RyMihXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzZWxmLAogICAgIFdURjo6U3RyaW5nIGNv
bnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKICAgICBpdGVtLT5z
ZXRJbXBsZW1lbnRzU3RyMihjb252ZXJ0ZWRWYWx1ZSk7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShzZWxmKTsKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRV
UkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIyIikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05P
VF9QUkVTRU5UKCJDb25kaXRpb24yMyIpCiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjIyKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMjMpICovCiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsK
KyAgICBVTlVTRURfUEFSQU0odmFsdWUpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BS
RVNFTlQoIkNvbmRpdGlvbjEiKQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IkNvbmRpdGlvbjIiKQogI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMikgKi8KQEAgLTUzMSwxMSArNTY5LDEzIEBAIFdlYktpdERPTU5vZGUqIHdlYmtpdF9k
b21fdGVzdF9pbnRlcmZhY2VfZ2V0X2ltcGxlbWVudHNfbm9kZShXZWJLaXRET01UZXN0SW50ZXJm
CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihp
dGVtLT5pbXBsZW1lbnRzTm9kZSgpKTsKICAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJl
c3VsdC5nZXQoKSk7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKICAgICBXRUJLSVRf
V0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yMiIpCiAgICAgV0VCS0lUX1dBUk5f
RkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMjMiKQogICAgIHJldHVybiAwOwogI2VuZGlm
IC8qIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKSAqLwogI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oc2VsZik7CiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJF
U0VOVCgiQ29uZGl0aW9uMSIpCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgi
Q29uZGl0aW9uMiIpCiAgICAgcmV0dXJuIDA7CkBAIC01NTMsMTAgKzU5MywxNCBAQCB2b2lkIHdl
YmtpdF9kb21fdGVzdF9pbnRlcmZhY2Vfc2V0X2ltcGxlbWVudHNfbm9kZShXZWJLaXRET01UZXN0
SW50ZXJmYWNlKiBzZWxmLAogICAgIFdlYkNvcmU6Ok5vZGUqIGNvbnZlcnRlZFZhbHVlID0gV2Vi
S2l0Ojpjb3JlKHZhbHVlKTsKICAgICBpdGVtLT5zZXRJbXBsZW1lbnRzTm9kZShjb252ZXJ0ZWRW
YWx1ZSk7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKKyAgICBVTlVTRURfUEFSQU0o
dmFsdWUpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIy
IikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yMyIpCiAj
ZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpICovCiAj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOwog
ICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQogICAgIFdF
QktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIiKQogI2VuZGlmIC8qIEVO
QUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikgKi8KQEAgLTU3MiwxMSArNjE2
LDEzIEBAIGdjaGFyKiB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdXBwbGVtZW50YWxf
c3RyMShXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzCiAgICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZl
cnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3Ry
MShpdGVtKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjExIikK
ICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xMiIpCiAgICAg
cmV0dXJuIDA7CiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpICovCiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKICAgICBXRUJLSVRfV0FS
Tl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xIikKICAgICBXRUJLSVRfV0FSTl9GRUFU
VVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yIikKICAgICByZXR1cm4gMDsKQEAgLTU5MywxMSAr
NjM5LDEzIEBAIGdjaGFyKiB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdXBwbGVtZW50
YWxfc3RyMihXZWJLaXRET01UZXN0SW50ZXJmYWNlKiBzCiAgICAgZ2NoYXIqIHJlc3VsdCA9IGNv
bnZlcnRUb1VURjhTdHJpbmcoV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFs
U3RyMihpdGVtKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHNlbGYpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEx
IikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xMiIpCiAg
ICAgcmV0dXJuIDA7CiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpICovCiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKICAgICBXRUJLSVRf
V0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xIikKICAgICBXRUJLSVRfV0FSTl9G
RUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yIikKICAgICByZXR1cm4gMDsKQEAgLTYxNSwx
MCArNjYzLDE0IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9zZXRfc3VwcGxlbWVu
dGFsX3N0cjIoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogc2VsCiAgICAgV1RGOjpTdHJpbmcgY29u
dmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwogICAgIFdlYkNvcmU6
OlRlc3RTdXBwbGVtZW50YWw6OnNldFN1cHBsZW1lbnRhbFN0cjIoaXRlbSwgY29udmVydGVkVmFs
dWUpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2VsZik7CisgICAgVU5VU0VEX1BBUkFNKHZh
bHVlKTsKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xMSIp
CiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMTIiKQogI2Vu
ZGlmIC8qIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKSAqLwogI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oc2VsZik7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKICAg
ICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xIikKICAgICBXRUJL
SVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yIikKICNlbmRpZiAvKiBFTkFC
TEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpICovCkBAIC02MzQsMTEgKzY4Niwx
MyBAQCBXZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2dldF9zdXBwbGVt
ZW50YWxfbm9kZShXZWJLaXRET01UZXN0SW50ZQogICAgIFJlZlB0cjxXZWJDb3JlOjpOb2RlPiBn
b2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c3Vw
cGxlbWVudGFsTm9kZShpdGVtKSk7CiAgICAgcmV0dXJuIFdlYktpdDo6a2l0KGdvYmplY3RSZXN1
bHQuZ2V0KCkpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2VsZik7CiAgICAgV0VCS0lUX1dB
Uk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMTEiKQogICAgIFdFQktJVF9XQVJOX0ZF
QVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEyIikKICAgICByZXR1cm4gMDsKICNlbmRpZiAv
KiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikgKi8KICNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHNlbGYpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNF
TlQoIkNvbmRpdGlvbjEiKQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNv
bmRpdGlvbjIiKQogICAgIHJldHVybiAwOwpAQCAtNjU2LDEwICs3MTAsMTQgQEAgdm9pZCB3ZWJr
aXRfZG9tX3Rlc3RfaW50ZXJmYWNlX3NldF9zdXBwbGVtZW50YWxfbm9kZShXZWJLaXRET01UZXN0
SW50ZXJmYWNlKiBzZWwKICAgICBXZWJDb3JlOjpOb2RlKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktp
dDo6Y29yZSh2YWx1ZSk7CiAgICAgV2ViQ29yZTo6VGVzdFN1cHBsZW1lbnRhbDo6c2V0U3VwcGxl
bWVudGFsTm9kZShpdGVtLCBjb252ZXJ0ZWRWYWx1ZSk7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShzZWxmKTsKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRV
UkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjExIikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05P
VF9QUkVTRU5UKCJDb25kaXRpb24xMiIpCiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpICovCiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsK
KyAgICBVTlVTRURfUEFSQU0odmFsdWUpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BS
RVNFTlQoIkNvbmRpdGlvbjEiKQogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
IkNvbmRpdGlvbjIiKQogI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMikgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROb2RlLmNwcAppbmRleCA0NDQ2
ZjI5ODVkZTdjYTIyZDE5YmZlNjVjNWQ1MGIxNmQ2MGVkYTY5Li43ZGY4MjMwOGZiMDIwZTM1N2M1
OWYxMGM3ODFhZTRjNDU2Mjk2ZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Tm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE5vZGUu
Y3BwCkBAIC05Myw5ICs5MywxMSBAQCBHX0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRET01U
ZXN0Tm9kZSwgd2Via2l0X2RvbV90ZXN0X25vZGUsIFdFQktJVF9UWVBFX0RPTQogCiBzdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX3Rlc3Rfbm9kZV9jbGFzc19pbml0KFdlYktpdERPTVRlc3ROb2RlQ2xh
c3MqIHJlcXVlc3RDbGFzcykKIHsKKyAgICBVTlVTRURfUEFSQU0ocmVxdWVzdENsYXNzKTsKIH0K
IAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X25vZGVfaW5pdChXZWJLaXRET01UZXN0Tm9k
ZSogcmVxdWVzdCkKIHsKK1VOVVNFRF9QQVJBTShyZXF1ZXN0KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0T2JqLmNwcAppbmRleCA5ZjM5ZDZiN2ZiZDBjNGM0NzAxYmRiZTg4M2M1YWQ2
NWI0Yjg3ODAwLi5hNjBlN2MxZWFlMjY5ZGVmMDFmMGEyMTc1NjY0NWVlNzIyNzJmZTQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAtMTQ3LDcgKzE0Nyw2IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogc3Rh
dGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wZXJ0eUlkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3Bl
YykKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0KICAgICBX
ZWJLaXRET01UZXN0T2JqKiBzZWxmID0gV0VCS0lUX0RPTV9URVNUX09CSihvYmplY3QpOwogICAg
IFdlYkNvcmU6OlRlc3RPYmoqIGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogCkBAIC0y
OTcsNyArMjk2LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLAogc3RhdGljIHZvaWQgd2Via2l0
X2RvbV90ZXN0X29ial9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0
eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKIHsKICAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0KICAgICBXZWJLaXRET01UZXN0T2JqKiBzZWxm
ID0gV0VCS0lUX0RPTV9URVNUX09CSihvYmplY3QpOwogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNv
cmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogCkBAIC0xNDcyLDYgKzE0NzAsNyBAQCBnY2hh
ciogd2Via2l0X2RvbV90ZXN0X29ial9jb25kaXRpb25hbF9tZXRob2QxKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYpCiAgICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VURjhTdHJpbmcoaXRlbS0+
Y29uZGl0aW9uYWxNZXRob2QxKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShzZWxmKTsKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJD
b25kaXRpb24xIikKICAgICByZXR1cm4gMDsKICNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMSkg
Ki8KQEAgLTE0ODUsNiArMTQ4NCw3IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9jb25kaXRp
b25hbF9tZXRob2QyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiAgICAgV2ViQ29yZTo6VGVzdE9i
aiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT5jb25kaXRpb25hbE1ldGhv
ZDIoKTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwogI2lmICFFTkFCTEUoQ29uZGl0
aW9uMSkKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xIikK
ICNlbmRpZgpAQCAtMTUwMiw2ICsxNTAyLDcgQEAgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2Nv
bmRpdGlvbmFsX21ldGhvZDMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKICAgICBXZWJDb3JlOjpU
ZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIGl0ZW0tPmNvbmRpdGlvbmFs
TWV0aG9kMygpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2VsZik7CiAgICAgV0VCS0lUX1dB
Uk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCiAgICAgV0VCS0lUX1dBUk5fRkVB
VFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIpCiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlv
bjEpIHx8IEVOQUJMRShDb25kaXRpb24yKSAqLwpAQCAtMTUzMiw2ICsxNTMzLDggQEAgdm9pZCB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX292ZXJsb2FkZWRfbWV0aG9kMShXZWJLaXRET01UZXN0T2JqKiBz
ZWxmLCBnbG9uZyBhcmcpCiAgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKICAgICBpdGVtLT5vdmVybG9hZGVkTWV0aG9kMShhcmcpOwogI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oc2VsZik7CisgICAgVU5VU0VEX1BBUkFNKGFyZyk7CiAgICAgV0VCS0lUX1dB
Uk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCiAjZW5kaWYgLyogRU5BQkxFKENv
bmRpdGlvbjEpICovCiB9CkBAIC0xNTQ2LDYgKzE1NDksOCBAQCB2b2lkIHdlYmtpdF9kb21fdGVz
dF9vYmpfb3ZlcmxvYWRlZF9tZXRob2QxKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdj
aGFyKgogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFR5cGUgPSBXVEY6OlN0cmluZzo6ZnJvbVVU
RjgodHlwZSk7CiAgICAgaXRlbS0+b3ZlcmxvYWRlZE1ldGhvZDEoY29udmVydGVkVHlwZSk7CiAj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKKyAgICBVTlVTRURfUEFSQU0odHlwZSk7CiAg
ICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCiAjZW5kaWYg
LyogRU5BQkxFKENvbmRpdGlvbjEpICovCiB9CkBAIC0yMzA0LDYgKzIzMDksNyBAQCBnbG9uZyB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9jb25kaXRpb25hbF9hdHRyMShXZWJLaXRET01UZXN0T2Jq
KiBzZWxmKQogICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPmNvbmRpdGlvbmFsQXR0cjEoKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2VsZik7CiAgICAgV0VC
S0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGdsb25nPigwKTsKICNlbmRpZiAvKiBFTkFCTEUoQ29uZGl0aW9uMSkgKi8KQEAg
LTIzMTcsNiArMjMyMyw4IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9zZXRfY29uZGl0aW9u
YWxfYXR0cjEoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsCiAgICAgV2ViQ29yZTo6
VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBpdGVtLT5zZXRDb25kaXRp
b25hbEF0dHIxKHZhbHVlKTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOworICAgIFVO
VVNFRF9QQVJBTSh2YWx1ZSk7CiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgi
Q29uZGl0aW9uMSIpCiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjEpICovCiB9CkBAIC0yMzMw
LDYgKzIzMzgsNyBAQCBnbG9uZyB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9jb25kaXRpb25hbF9h
dHRyMihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogICAgIGdsb25nIHJlc3VsdCA9IGl0ZW0tPmNv
bmRpdGlvbmFsQXR0cjIoKTsKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oc2VsZik7CiAjaWYgIUVOQUJMRShDb25kaXRpb24xKQogICAgIFdFQktJVF9XQVJOX0ZF
QVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQogI2VuZGlmCkBAIC0yMzQ4LDYgKzIzNTcs
OCBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2NvbmRpdGlvbmFsX2F0dHIyKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIHZhbAogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgaXRlbS0+c2V0Q29uZGl0aW9uYWxBdHRyMih2YWx1
ZSk7CiAjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKKyAgICBVTlVTRURfUEFSQU0odmFs
dWUpOwogI2lmICFFTkFCTEUoQ29uZGl0aW9uMSkKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05P
VF9QUkVTRU5UKCJDb25kaXRpb24xIikKICNlbmRpZgpAQCAtMjM2Niw2ICsyMzc3LDcgQEAgZ2xv
bmcgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfY29uZGl0aW9uYWxfYXR0cjMoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZikKICAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5jb25kaXRpb25hbEF0dHIzKCk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwogICAg
IFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQogICAgIFdFQktJ
VF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIiKQogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxnbG9uZz4oMCk7CkBAIC0yMzgwLDYgKzIzOTIsOCBAQCB2b2lkIHdlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X2NvbmRpdGlvbmFsX2F0dHIzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGds
b25nIHZhbAogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CiAgICAgaXRlbS0+c2V0Q29uZGl0aW9uYWxBdHRyMyh2YWx1ZSk7CiAjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShzZWxmKTsKKyAgICBVTlVTRURfUEFSQU0odmFsdWUpOwogICAgIFdFQktJVF9XQVJO
X0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQogICAgIFdFQktJVF9XQVJOX0ZFQVRV
UkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIiKQogI2VuZGlmIC8qIEVOQUJMRShDb25kaXRpb24x
KSB8fCBFTkFCTEUoQ29uZGl0aW9uMikgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAK
aW5kZXggMmRmMDJjNmI4MmE0YTkxOGE2NDk5YzkxMDdkMGQ4ZDkwMzk0ODRhYS4uYzg1OTg1NjE3
Yzk5MWEzNTI3NjhjYzI5ZDFkNmM0MDQwNTViMjdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZS5jcHAKQEAgLTk3LDcgKzk3LDEwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9z
ZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2VfZ2V0X3Byb3BlcnR5KEdPYmplCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogICAgIFdlYktpdERPTVRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHNlbGYgPSBXRUJLSVRfRE9NX1RFU1Rf
U0VSSUFMSVpFRF9TQ1JJUFRfVkFMVUVfSU5URVJGQUNFKG9iamVjdCk7CiAgICAgV2ViQ29yZTo6
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY29yZVNlbGYgPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CiAjZW5kaWYgLy8gRU5B
QkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorCiAgICAgc3dpdGNoIChwcm9w
ZXJ0eUlkKSB7CiAgICAgY2FzZSBQUk9QX1ZBTFVFOiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
IHx8IEVOQUJMRShDb25kaXRpb24yKQpAQCAtMjIxLDYgKzIyNCw3IEBAIFdlYktpdERPTVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSogd2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVl
X2ludGVyZmFjCiAgICAgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZ29i
amVjdFJlc3VsdCA9IFdURjo6Z2V0UHRyKGl0ZW0tPnZhbHVlKCkpOwogICAgIHJldHVybiBXZWJL
aXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNl
bGYpOwogICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjEiKQog
ICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkNvbmRpdGlvbjIiKQogICAgIHJl
dHVybiAwOwpAQCAtMjM3LDYgKzI0MSw4IEBAIHZvaWQgd2Via2l0X2RvbV90ZXN0X3NlcmlhbGl6
ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjZV9zZXRfdmFsdWUoV2ViS2l0RE9NVGVzdFNlCiAgICAg
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBjb252ZXJ0ZWRWYWx1ZSA9IFdlYktpdDo6
Y29yZSh2YWx1ZSk7CiAgICAgaXRlbS0+c2V0VmFsdWUoY29udmVydGVkVmFsdWUpOwogI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oc2VsZik7CisgICAgVU5VU0VEX1BBUkFNKHZhbHVlKTsKICAgICBX
RUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24xIikKICAgICBXRUJLSVRf
V0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRpb24yIikKICNlbmRpZiAvKiBFTkFCTEUo
Q29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpICovCkBAIC0yNTEsNiArMjU3LDcgQEAg
V2ViS2l0RE9NU2VyaWFsaXplZFNjcmlwdFZhbHVlKiB3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFsaXpl
ZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWMKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBnb2JqZWN0UmVzdWx0ID0gV1RGOjpnZXRQdHIoaXRlbS0+cmVhZG9ubHlWYWx1
ZSgpKTsKICAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiAjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShzZWxmKTsKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9Q
UkVTRU5UKCJDb25kaXRpb24xIikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5U
KCJDb25kaXRpb24yIikKICAgICByZXR1cm4gMDsKQEAgLTI2Niw2ICsyNzMsNyBAQCBXZWJLaXRE
T01TZXJpYWxpemVkU2NyaXB0VmFsdWUqIHdlYmtpdF9kb21fdGVzdF9zZXJpYWxpemVkX3Njcmlw
dF92YWx1ZV9pbnRlcmZhYwogICAgIFJlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGdvYmplY3RSZXN1bHQgPSBXVEY6OmdldFB0cihpdGVtLT5jYWNoZWRWYWx1ZSgpKTsKICAg
ICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiAjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShzZWxmKTsKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJD
b25kaXRpb24xIikKICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJDb25kaXRp
b24yIikKICAgICByZXR1cm4gMDsKQEAgLTI4Miw2ICsyOTAsOCBAQCB2b2lkIHdlYmtpdF9kb21f
dGVzdF9zZXJpYWxpemVkX3NjcmlwdF92YWx1ZV9pbnRlcmZhY2Vfc2V0X2NhY2hlZF92YWx1ZShX
ZWJLaXRETwogICAgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogY29udmVydGVkVmFs
dWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOwogICAgIGl0ZW0tPnNldENhY2hlZFZhbHVlKGNvbnZl
cnRlZFZhbHVlKTsKICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOworICAgIFVOVVNFRF9Q
QVJBTSh2YWx1ZSk7CiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0
aW9uMSIpCiAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIp
CiAjZW5kaWYgLyogRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKSAqLwpA
QCAtMjk2LDYgKzMwNiw3IEBAIFdlYktpdERPTVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogd2Via2l0
X2RvbV90ZXN0X3NlcmlhbGl6ZWRfc2NyaXB0X3ZhbHVlX2ludGVyZmFjCiAgICAgUmVmUHRyPFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZ29iamVjdFJlc3VsdCA9IFdURjo6Z2V0UHRy
KGl0ZW0tPmNhY2hlZFJlYWRvbmx5VmFsdWUoKSk7CiAgICAgcmV0dXJuIFdlYktpdDo6a2l0KGdv
YmplY3RSZXN1bHQuZ2V0KCkpOwogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2VsZik7CiAgICAg
V0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMSIpCiAgICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiQ29uZGl0aW9uMiIpCiAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdFR5cGVkZWZzLmNwcAppbmRleCBjMjRiNWIzNzU5
MzQ2ZGIzMjNkZTk0NmQyYWM4ZTQ0MWJiNDExODRhLi4wYjI4N2JlYzZlMDMzMzIyNThmMzI1M2Fk
ZmI4ZDkzYzg5YWVlOTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RUeXBlZGVm
cy5jcHAKQEAgLTkzLDcgKzkzLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X3R5cGVk
ZWZzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVz
dF90eXBlZGVmc19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlk
LCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKIHsKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0KICAgICBXZWJLaXRET01UZXN0VHlwZWRl
ZnMqIHNlbGYgPSBXRUJLSVRfRE9NX1RFU1RfVFlQRURFRlMob2JqZWN0KTsKICAgICBXZWJDb3Jl
OjpUZXN0VHlwZWRlZnMqIGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogCkBAIC0xMjks
NyArMTI4LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X3R5cGVkZWZzX3NldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnQKIHN0YXRpYyB2b2lkIHdlYmtpdF9k
b21fdGVzdF90eXBlZGVmc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
ZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKIHsKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0KICAgICBXZWJLaXRET01UZXN0VHlwZWRl
ZnMqIHNlbGYgPSBXRUJLSVRfRE9NX1RFU1RfVFlQRURFRlMob2JqZWN0KTsKICAgICBXZWJDb3Jl
OjpUZXN0VHlwZWRlZnMqIGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01hdHRyaWJ1dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NYXR0cmlidXRlLmNwcAppbmRleCAzMDg3YmRlOGM4OTZmMWY2MGFkM2Vk
ZmI5NDUyMjg3MGYzMTU5NjIyLi4xMzNmZDdiYmI3YTE4M2UzMDQ5NzZjOGU0NjUyNDM5MWU0ZDM2
NWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01hdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTWF0dHJpYnV0ZS5jcHAKQEAgLTg0LDcgKzg0
LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV9hdHRyaWJ1dGVfZmluYWxpemUoR09iamVjdCog
b2JqZWN0KQogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9nZXRfcHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFy
YW1TcGVjKiBwc3BlYykKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0KICAgICBXZWJLaXRET01UZXN0RXhjZXB0aW9uKiBzZWxmID0gV0VCS0lUX0RPTV9URVNU
X0VYQ0VQVElPTihvYmplY3QpOwogICAgIFdlYkNvcmU6OlRlc3RFeGNlcHRpb24qIGNvcmVTZWxm
ID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogCkBAIC0xMDEsNyArMTAwLDYgQEAgc3RhdGljIHZvaWQg
d2Via2l0X2RvbV90ZXN0X2V4Y2VwdGlvbl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBn
dWludCBwcm9wZXIKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fYXR0cmlidXRlX2dldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBzcGVjKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLQogICAgIFdlYktpdERPTWF0dHJpYnV0ZSogc2VsZiA9IFdFQktJVF9ET01fQVRUUklCVVRF
KG9iamVjdCk7CiAgICAgV2ViQ29yZTo6YXR0cmlidXRlKiBjb3JlU2VsZiA9IFdlYktpdDo6Y29y
ZShzZWxmKTsKIAo=
</data>
<flag name="review"
          id="250811"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>