<?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>71379</bug_id>
          
          <creation_ts>2011-11-02 11:30:12 -0700</creation_ts>
          <short_desc>[meta] EventConstructors.h should be automatically generated by IDL</short_desc>
          <delta_ts>2011-11-17 06:40:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>
          <dependson>72055</dependson>
    
    <dependson>72074</dependson>
    
    <dependson>72255</dependson>
    
    <dependson>72577</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>arv</cc>
    
    <cc>japhet</cc>
    
    <cc>jarred</cc>
    
    <cc>ojan</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>494760</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-02 11:30:12 -0700</bug_when>
    <thetext>Currently, EventConstructors.h is written manually and is growing. We should generate it by IDL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500083</commentid>
    <comment_count>1</comment_count>
      <attachid>114534</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-10 11:53:41 -0800</bug_when>
    <thetext>Created attachment 114534
WIP patch for V8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500085</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 11:55:55 -0800</bug_when>
    <thetext>Attachment 114534 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/bindings/scripts/test/CPP/WebDOMTestEventConstructor.cpp:28:  wtf includes should be &lt;wtf/file.h&gt; instead of &quot;wtf/file.h&quot;.  [build/include] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.cpp:21:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.cpp:22:  Found WebCore config.h after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.cpp:24:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.cpp:26:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.cpp:29:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.cpp:32:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.cpp:129:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.cpp:154:  Declaration has space between type name and * in GObjectClass *gobjectClass  [whitespace/declaration] [3]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.cpp:193:  Extra space between return and WEBKIT_DOM_TEST_EVENT_CONSTRUCTOR  [whitespace/declaration] [3]
Source/WebCore/bindings/scripts/test/ObjC/DOMTestEventConstructorInternal.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructorPrivate.h:21:  #ifndef header guard has wrong style, please use: WebKitDOMTestEventConstructorPrivate_h  [build/header_guard] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructorPrivate.h:26:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestEventConstructorPrivate.h:28:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 15 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500091</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-10 11:59:18 -0800</bug_when>
    <thetext>I uploaded a WIP patch to remove custom Event constructors from V8. After landing this patch, I will remove them from JSC.

I am planning to land the WIP patch in the following two steps:

[1] Generate an Event constructor by CodeGeneratorV8.pm. Add [CustomConstructor=Event] IDL to (only) Event and confirm that no regression occurs.
[2] Add [CustomConstructor=Event] IDL to all other Events. Remove V8EventConstructors.cpp.

This patch introduces two new IDLs:

- [CustomConstructor=Event] IDL indicates that CodeGenerator should generate an Event constructor.
- [InitializedAtConstructor] IDL on an attribute indicates that the attribute can be initialized by the constructor.

Any thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500114</commentid>
    <comment_count>4</comment_count>
      <attachid>114534</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-10 12:19:15 -0800</bug_when>
    <thetext>Comment on attachment 114534
WIP patch for V8

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        - [CustomConstructor=Event] IDL indicates that CodeGenerator should
&gt; +        generate an Event constructor.

CustomConstructor makes me think there&apos;s hand-written code to support this feature.  Maybe ConstructorTemplate=Event?  SpecializedConstructor=Event?  I guess CustomConstructor=Event is ok too.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:312
&gt; +    push(@headerContent, &quot;class OptionsObject;\n&quot;) if ($dataNode-&gt;extendedAttributes-&gt;{&quot;V8CustomConstructor&quot;} &amp;&amp; $dataNode-&gt;extendedAttributes-&gt;{&quot;V8CustomConstructor&quot;} eq &quot;Event&quot;) || ($dataNode-&gt;extendedAttributes-&gt;{&quot;CustomConstructor&quot;} &amp;&amp; $dataNode-&gt;extendedAttributes-&gt;{&quot;CustomConstructor&quot;} eq &quot;Event&quot;);

Maybe great out this conditional into a helper function?  It seems like a lot of text that is repeated a few times.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1665
&gt; +        if ($attribute-&gt;signature-&gt;extendedAttributes-&gt;{&quot;InitializedAtConstructor&quot;}) {

InitializedAtConstructor =&gt; InitializedByConstructor ?

&gt; Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.h:33
&gt; +

Looks like you leaked a blank line here.

&gt; Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.h:84
&gt; +

This blank line seems like an improvement though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500117</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-10 12:20:19 -0800</bug_when>
    <thetext>Can we tell whether an interface is a subclass of Event?  That might be an easier way of triggering this behavior.  We can also wait until we&apos;ve done the refactoring to load all the IDL into the code generator at once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500120</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-10 12:20:59 -0800</bug_when>
    <thetext>This patch is really cool, BTW.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500166</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-10 12:52:51 -0800</bug_when>
    <thetext>Thank you very much, Adam! I&apos;ll reflect your comments to coming patches for review.

(In reply to comment #5)
&gt; Can we tell whether an interface is a subclass of Event?  That might be an easier way of triggering this behavior. 

Yes. When $dataNode is an interface, we can know base classes of the interface by $dataNode-&gt;parents. This WIP patch is using it to initialize attributes of base classes (i.e. around line 1655 of CodeGeneratorV8.pm). Did you mean something like this? (I am not sure what you mean by &quot;triggering this behavior&quot;.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500280</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-10 14:22:29 -0800</bug_when>
    <thetext>&gt; Did you mean something like this? (I am not sure what you mean by &quot;triggering this behavior&quot;.)

I mean that all subclasses of Event should have this kind of constructor so that CustomConstructor=Event isn&apos;t needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501755</commentid>
    <comment_count>9</comment_count>
      <attachid>114906</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-14 02:50:12 -0800</bug_when>
    <thetext>Created attachment 114906
WIP: An overview patch for JSC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501757</commentid>
    <comment_count>10</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-14 02:54:14 -0800</bug_when>
    <thetext>I uploaded a WIP patch that removes custom Event constructors from JSC. I am planning to land the WIP patch in the following two steps:

[1] Generate an Event constructor by CodeGeneratorJS.pm. Add [JSConstructorTemplate=Event] IDL to (only) Event and confirm that no regression occurs.
[2] Add [JSConstructorTemplate=Event] IDL to all other Events.
[3] Remove EventConstructors.h and JSEventConstructors.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504811</commentid>
    <comment_count>11</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2011-11-17 06:40:15 -0800</bug_when>
    <thetext>All the patches are landed. Now no custom Event constructors.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114534</attachid>
            <date>2011-11-10 11:53:41 -0800</date>
            <delta_ts>2011-11-10 12:19:15 -0800</delta_ts>
            <desc>WIP patch for V8</desc>
            <filename>bug-71379-20111110115340.patch</filename>
            <type>text/plain</type>
            <size>91177</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4NjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0NjYxNGYzNjFkMWJjNTg5
YWY2YmE0N2YzNzI1MDkxOGI3ZjQ2NDhiLi5hMDgwYjYyYzFkYzFhYWYxM2UzYmY0MjFkM2Y4NWNm
ZGY2ZDc1ZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM5IEBACisyMDExLTExLTEwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBXSVA6IEF1dG8tZ2Vu
ZXJhdGUgRXZlbnQgY29uc3RydWN0b3JzIG9mIFY4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBjdXN0b20gRXZlbnQgY29uc3RydWN0b3JzIG9m
IFY4IGFuZCBnZW5lcmF0ZSB0aGVtIGJ5IElETC4KKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1
Y2VzIHR3byBuZXcgSURMczoKKworICAgICAgICAtIFtDdXN0b21Db25zdHJ1Y3Rvcj1FdmVudF0g
SURMIGluZGljYXRlcyB0aGF0IENvZGVHZW5lcmF0b3Igc2hvdWxkCisgICAgICAgIGdlbmVyYXRl
IGFuIEV2ZW50IGNvbnN0cnVjdG9yLgorICAgICAgICAtIFtJbml0aWFsaXplZEF0Q29uc3RydWN0
b3JdIElETCBvbiBhbiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoYXQKKyAgICAgICAgdGhlIGF0dHJp
YnV0ZSBjYW4gYmUgaW5pdGlhbGl6ZWQgYnkgdGhlIGNvbnN0cnVjdG9yLgorCisgICAgICAgIFRl
c3RzOiBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvYmVmb3JlLWxvYWQtZXZlbnQtY29uc3RydWN0
b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL2Nsb3NlLWV2
ZW50LWNvbnN0cnVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2NvbnN0cnVj
dG9ycy9jdXN0b20tZXZlbnQtY29uc3RydWN0b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9l
dmVudHMvY29uc3RydWN0b3JzL2Vycm9yLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9ldmVudC1jb25zdHJ1Y3RvcnMuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL2hhc2gtY2hhbmdlLWV2ZW50
LWNvbnN0cnVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9y
cy9tZXNzYWdlLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZl
bnRzL2NvbnN0cnVjdG9ycy9vdmVyZmxvdy1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCisgICAgICAg
ICAgICAgICBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvcGFnZS10cmFuc2l0aW9uLWV2ZW50LWNv
bnN0cnVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9w
b3Atc3RhdGUtZXZlbnQtY29uc3RydWN0b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVu
dHMvY29uc3RydWN0b3JzL3Byb2dyZXNzLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy90cmFjay1ldmVudC1jb25zdHJ1Y3Rvci5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvd2Via2l0LWFuaW1h
dGlvbi1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9j
b25zdHJ1Y3RvcnMvd2Via2l0LXRyYW5zaXRpb24tZXZlbnQtY29uc3RydWN0b3IuaHRtbAorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChH
ZW5lcmF0ZUhlYWRlcik6IEFkZGVkIGEgaGVhZGVyIGZvciBmaWxsWFhYWEV2ZW50SW5pdCguLi4p
LgorICAgICAgICAoR2VuZXJhdGVFdmVudENvbnN0cnVjdG9yQ2FsbGJhY2spOiBHZW5lcmF0ZXMg
YW4gRXZlbnQgY29uc3RydWN0b3IuIFRoZSBnZW5lcmF0ZWQgY29kZSBpcyB0aGUgc2FtZSBhcyB0
aGUgY29kZSB0aGF0IGhhZCBiZWVuIHdyaXR0ZW4gaW4gVjhFdmVudENvbnN0cnVjdG9ycy5jcHAu
IEkgZmlyc3QgdGhvdWdodCB0aGF0IEkgY2FuIHJldXNlIEdlbmVyYXRlQ29uc3RydWN0b3JDYWxs
YmFjaygpIGNvZGUgYnV0IEkgZm91bmQgdGhhdCByZXVzaW5nIGl0IG1ha2VzIHRoZSBjb2RlIG1l
c3N5LiBUaHVzIEkgY3JlYXRlZCB0aGlzIG5ldyBzdWItcm91dGluZS4KKyAgICAgICAgKEdlbmVy
YXRlSW1wbGVtZW50YXRpb24pOiBHZW5lcmF0ZXMgYW4gRXZlbnQgY29uc3RydWN0b3IgaWYgW0N1
c3RvbUNvbnN0cnVjdG9yPUV2ZW50XSBpcyBzcGVjaWZpZWQuCisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdEV2ZW50Q29uc3RydWN0b3IuaWRsOiBBZGRlZCBhIG5ldyBydW4t
YmluZGluZ3MtdGVzdC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRP
TVRlc3RFdmVudENvbnN0cnVjdG9yLmNwcDogVXBkYXRlZCBhIHJ1bi1iaW5kaW5ncy10ZXN0cyBy
ZXN1bHQuCisgICAgICAgIChXZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6V2ViRE9NVGVzdEV2
ZW50Q29uc3RydWN0b3JQcml2YXRlOjpXZWJET01UZXN0RXZlbnRDb25zdHJ1Y3RvclByaXZhdGUp
OgorICAgICAgICAoV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3I6OldlYkRPTVRlc3RFdmVudENv
bnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yOjpvcGVyYXRv
cj0pOgorICAgICAgICAoV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3I6OmltcGwpOgorICAgICAg
ICAoV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3I6On5XZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6YXR0cjEpOgorICAgICAg
ICAoV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3I6OmF0dHIyKToKKyAgICAgICAgKHRvV2ViQ29y
ZSk6CisgICAgICAgICh0b1dlYktpdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOiBEaXR0by4KKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5j
cHA6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpraXQpOgorICAgICAgICAod2Via2l0X2RvbV90
ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX2dldF9hdHRyMSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3RfZXZlbnRfY29uc3RydWN0b3JfZ2V0X2F0dHIyKToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6
CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfZmluYWxpemUpOgor
ICAgICAgICAod2Via2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX3NldF9wcm9wZXJ0eSk6
CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfZ2V0X3Byb3BlcnR5
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9jb25zdHJ1Y3Rl
ZCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfY2xhc3NfaW5p
dCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfaW5pdCk6Cisg
ICAgICAgIChXZWJLaXQ6OndyYXBUZXN0RXZlbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3Iu
aDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEV2ZW50Q29uc3RydWN0b3JQcml2YXRlLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcDogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpTVGVz
dEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RF
dmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
cjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2
ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlOjpzZWxmKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlUHJv
dG90eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldE93
blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9y
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RXZl
bnRDb25zdHJ1Y3RvckF0dHIxKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEV2ZW50Q29uc3Ry
dWN0b3JBdHRyMik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Rlc3RFdmVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6aW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RF
dmVudENvbnN0cnVjdG9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGU6OkpTVGVzdEV2ZW50Q29u
c3RydWN0b3JQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRD
b25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudENvbnN0cnVjdG9yLmg6IERpdHRvLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudENvbnN0cnVj
dG9yLm1tOiBEaXR0by4KKyAgICAgICAgKC1bRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IgZGVhbGxv
Y10pOgorICAgICAgICAoLVtET01UZXN0RXZlbnRDb25zdHJ1Y3RvciBmaW5hbGl6ZV0pOgorICAg
ICAgICAoLVtET01UZXN0RXZlbnRDb25zdHJ1Y3RvciBhdHRyMV0pOgorICAgICAgICAoLVtET01U
ZXN0RXZlbnRDb25zdHJ1Y3RvciBhdHRyMl0pOgorICAgICAgICAoY29yZSk6CisgICAgICAgIChr
aXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudENv
bnN0cnVjdG9ySW50ZXJuYWwuaDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RFdmVudENvbnN0cnVjdG9ySW50ZXJuYWw6OlY4X1VTRSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3RvckludGVybmFsOjphdHRyMUF0dHJHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3JJbnRlcm5hbDo6YXR0cjJBdHRyR2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNvbnN0cnVj
dG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFRlc3RFdmVudENvbnN0cnVjdG9y
SW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9y
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0
UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
SGFzSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
d3JhcFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6ZGVy
ZWZPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dENvbnN0cnVjdG9yLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvcjo6dG9OYXRpdmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1
Y3Rvcjo6ZXhpc3RpbmdXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29u
c3RydWN0b3I6OndyYXApOgorICAgICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOiBEaXR0by4KKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5o
OiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5oOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDogRGl0dG8uCisKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogZG9tL0JlZm9yZUxvYWRFdmVudC5pZGw6IEFkZGVkIFtDdXN0b21Db25zdHJ1Y3Rv
cj1FdmVudF0gSURMLiBBZGRlZCBbSW5pdGlhbGl6ZWRBdENvbnN0cnVjdG9yXSBJREwgdG8gYXR0
cmlidXRlcyB0aGF0IGNhbiBiZSBpbml0aWFsaXplZCBhdCBhIGNvbnN0cnVjdG9yLgorICAgICAg
ICAqIGRvbS9DdXN0b21FdmVudC5pZGw6IERpdHRvLgorICAgICAgICAqIGRvbS9FcnJvckV2ZW50
LmlkbDogRGl0dG8uCisgICAgICAgICogZG9tL0V2ZW50LmlkbDogRGl0dG8uCisgICAgICAgICog
ZG9tL0hhc2hDaGFuZ2VFdmVudC5pZGw6IERpdHRvLgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZl
bnQuaWRsOiBEaXR0by4KKyAgICAgICAgKiBkb20vT3ZlcmZsb3dFdmVudC5pZGw6IERpdHRvLgor
ICAgICAgICAqIGRvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmlkbDogRGl0dG8uCisgICAgICAgICog
ZG9tL1BvcFN0YXRlRXZlbnQuaWRsOiBEaXR0by4KKyAgICAgICAgKiBkb20vUHJvZ3Jlc3NFdmVu
dC5pZGw6IERpdHRvLgorICAgICAgICAqIGRvbS9XZWJLaXRBbmltYXRpb25FdmVudC5pZGw6IERp
dHRvLgorICAgICAgICAqIGRvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsOiBEaXR0by4KKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsOiBEaXR0by4KKyAgICAgICAgKiB3ZWJz
b2NrZXRzL0Nsb3NlRXZlbnQuaWRsOiBEaXR0by4KKwogMjAxMS0xMS0xMCAgQW5kcmV5IEtvc3lh
a292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHdyb25n
IEpTT04uc3RyaW5naWZ5IHVzZWQgaW4gd2ViSW5zcGVjdG9yLmluc3BlY3RlZFdpbmRvdy5ldmFs
KCkgYmFja2VuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQppbmRleCBiMzMzOTgyNTczMzQwNzM2Y2JmNjE0NmM3MzdmNzE5NGM5NjJm
YmFjLi43NTBjNjM2M2Q2NDA2NDBmZTRiZjJkZjg4OTY2NGM2MGU4MTRkYTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAt
MzA3LDcgKzMwNyw5IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIlxudGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPiBjbGFzcyBTVkdM
aXN0UHJvcGVydHlUZWFyT2ZmO1xuIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIlxuY2xhc3MgRmxvYXRSZWN0O1xuIikgaWYgJHN2Z1Byb3BlcnR5VHlwZSAm
JiAkc3ZnUHJvcGVydHlUeXBlIGVxICJGbG9hdFJlY3QiOworICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICJcbiIpOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyBGbG9hdFJlY3Q7XG4i
KSBpZiAkc3ZnUHJvcGVydHlUeXBlICYmICRzdmdQcm9wZXJ0eVR5cGUgZXEgIkZsb2F0UmVjdCI7
CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzIE9wdGlvbnNPYmplY3Q7XG4iKSBpZiAo
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9ICYm
ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSBl
cSAiRXZlbnQiKSB8fCAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQ29u
c3RydWN0b3IifSAmJiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25z
dHJ1Y3RvciJ9IGVxICJFdmVudCIpOwogCiAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVU
eXBlRm9yQ29udmVyc2lvbnMoJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgaWYgKCRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSkgewpAQCAt
NTA2LDcgKzUwOCwxMiBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1Jl
ZlB0cjwgJHtuYXRpdmVUeXBlfSA+IGltcGwke2ZvcmNlTmV3T2JqZQogRU5ECiAgICAgfQogCi0g
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIn1cblxuIik7CisgICAgaWYgKCgkZGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gJiYgJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhDdXN0b21Db25zdHJ1Y3RvciJ9IGVxICJFdmVudCIpIHx8
CisgICAgICAgICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1
Y3RvciJ9ICYmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0cnVj
dG9yIn0gZXEgIkV2ZW50IikpIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuYm9v
bCBmaWxsJHtpbXBsQ2xhc3NOYW1lfUluaXQoJHtpbXBsQ2xhc3NOYW1lfUluaXQmLCBjb25zdCBP
cHRpb25zT2JqZWN0Jik7XG4iKTsKKyAgICB9CisKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
XG59XG5cbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWYgLy8gJGNsYXNzTmFt
ZSIgLiAiX2hcbiIpOwogCiAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVDb25k
aXRpb25hbFN0cmluZygkZGF0YU5vZGUpOwpAQCAtMTYwNiw2ICsxNjEzLDY4IEBAIEVORAogICAg
IHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKIH0KIAorc3ViIEdlbmVyYXRlRXZlbnRDb25zdHJ1
Y3RvckNhbGxiYWNrCit7CisgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CisgICAgbXkgJGltcGxD
bGFzc05hbWUgPSBzaGlmdDsKKworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJPcHRpb25zT2JqZWN0
LmgiKTsKKyAgICBBZGRUb0ltcGxJbmNsdWRlcygiVjhCaW5kaW5nTWFjcm9zLmgiKTsKKyAgICBw
dXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4JHtpbXBs
Q2xhc3NOYW1lfTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIElOQ19TVEFUUygiRE9NLiR7aW1wbENsYXNzTmFtZX0uQ29uc3RydWN0b3IiKTsK
KworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0
aW9uLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpj
dXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCisgICAgICAg
IHJldHVybiBhcmdzLkhvbGRlcigpOworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQorICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBWOFByb3h5OjpU
eXBlRXJyb3IpOworCisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhW
OFBhcmFtZXRlcjw+LCB0eXBlLCBhcmdzWzBdKTsKKyAgICAke2ltcGxDbGFzc05hbWV9SW5pdCBl
dmVudEluaXQ7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPj0gMikgeworICAgICAgICBFWENFUFRJ
T05fQkxPQ0soT3B0aW9uc09iamVjdCwgb3B0aW9ucywgYXJnc1sxXSk7CisgICAgICAgIGlmICgh
ZmlsbCR7aW1wbENsYXNzTmFtZX1Jbml0KGV2ZW50SW5pdCwgb3B0aW9ucykpCisgICAgICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIH0KKworICAgIFJlZlB0cjwke2ltcGxDbGFz
c05hbWV9PiBldmVudCA9ICR7aW1wbENsYXNzTmFtZX06OmNyZWF0ZSh0eXBlLCBldmVudEluaXQp
OworCisgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKGFyZ3MuSG9sZGVyKCksICZpbmZv
LCBldmVudC5nZXQoKSk7CisgICAgcmV0dXJuIHRvVjgoZXZlbnQucmVsZWFzZSgpLCBhcmdzLkhv
bGRlcigpKTsKK30KKworYm9vbCBmaWxsJHtpbXBsQ2xhc3NOYW1lfUluaXQoJHtpbXBsQ2xhc3NO
YW1lfUluaXQmIGV2ZW50SW5pdCwgY29uc3QgT3B0aW9uc09iamVjdCYgb3B0aW9ucykKK3sKK0VO
RAorCisgICAgZm9yZWFjaCBteSAkaW50ZXJmYWNlQmFzZSAoQHskZGF0YU5vZGUtPnBhcmVudHN9
KSB7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisgICAgaWYgKCFmaWxsJHtp
bnRlcmZhY2VCYXNlfUluaXQoZXZlbnRJbml0LCBvcHRpb25zKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCitFTkQKKyAgICB9CisKKyAgICBmb3IgKG15ICRpbmRleCA9IDA7ICRpbmRleCA8IEB7
JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfTsgJGluZGV4KyspIHsKKyAgICAgICAgbXkgJGF0dHJpYnV0
ZSA9IEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfVskaW5kZXhdOworICAgICAgICBpZiAoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW5pdGlhbGl6ZWRBdENvbnN0
cnVjdG9yIn0pIHsKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgb3B0
aW9ucy5nZXQoXCIkYXR0cmlidXRlTmFtZVwiLCBldmVudEluaXQuJGF0dHJpYnV0ZU5hbWUpO1xu
Iik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitFTkQKK30KKwogc3ViIEdlbmVyYXRlTmFtZWRDb25zdHJ1
Y3RvckNhbGxiYWNrCiB7CiAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CkBAIC0yMjkwLDYgKzIz
NTksOSBAQCBFTkQKICAgICAgICAgR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2soJGRh
dGFOb2RlLT5jb25zdHJ1Y3RvciwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgfSBl
bHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSAmJiAh
KCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSB8
fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9KSkg
ewogICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbGJhY2soJGRhdGFOb2RlLT5jb25zdHJ1
Y3RvciwgJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CisgICAgfSBlbHNpZiAoKCRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlY4Q3VzdG9tQ29uc3RydWN0b3IifSAmJiAkZGF0YU5v
ZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJWOEN1c3RvbUNvbnN0cnVjdG9yIn0gZXEgIkV2ZW50
IikgfHwKKyAgICAgICAgICAgICAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3Vz
dG9tQ29uc3RydWN0b3IifSAmJiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Db25zdHJ1Y3RvciJ9IGVxICJFdmVudCIpKSB7CisgICAgICAgIEdlbmVyYXRlRXZlbnRDb25z
dHJ1Y3RvckNhbGxiYWNrKCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUpOwogICAgIH0KIAogICAg
IG15ICRhY2Nlc3NfY2hlY2sgPSAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2EwYjA0ZTM4ZWY2NTMxMzMyOGQ0NjRjMzdjY2IzNGYy
YTIwZTdlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTAx
IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBw
cm9qZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldl
YkRPTVRlc3RFdmVudENvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJXZWJET01TdHJpbmcuaCIKKyNp
bmNsdWRlICJXZWJFeGNlcHRpb25IYW5kbGVyLmgiCisjaW5jbHVkZSAid3RmL3RleHQvQXRvbWlj
U3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworc3RydWN0IFdlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yOjpXZWJET01UZXN0RXZlbnRD
b25zdHJ1Y3RvclByaXZhdGUgeworICAgIFdlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yUHJpdmF0
ZShXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3Rvciogb2JqZWN0ID0gMCkKKyAgICAgICAgOiBp
bXBsKG9iamVjdCkKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RFdmVu
dENvbnN0cnVjdG9yPiBpbXBsOworfTsKKworV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3I6Oldl
YkRPTVRlc3RFdmVudENvbnN0cnVjdG9yKCkKKyAgICA6IFdlYkRPTU9iamVjdCgpCisgICAgLCBt
X2ltcGwoMCkKK3sKK30KKworV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3I6OldlYkRPTVRlc3RF
dmVudENvbnN0cnVjdG9yKFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsKQorICAg
IDogV2ViRE9NT2JqZWN0KCkKKyAgICAsIG1faW1wbChuZXcgV2ViRE9NVGVzdEV2ZW50Q29uc3Ry
dWN0b3JQcml2YXRlKGltcGwpKQoreworfQorCitXZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
V2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IoY29uc3QgV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0
b3ImIGNvcHkpCisgICAgOiBXZWJET01PYmplY3QoKQoreworICAgIG1faW1wbCA9IGNvcHkuaW1w
bCgpID8gbmV3IFdlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yUHJpdmF0ZShjb3B5LmltcGwoKSkg
OiAwOworfQorCitXZWJET01UZXN0RXZlbnRDb25zdHJ1Y3RvciYgV2ViRE9NVGVzdEV2ZW50Q29u
c3RydWN0b3I6Om9wZXJhdG9yPShjb25zdCBXZWJET01UZXN0RXZlbnRDb25zdHJ1Y3RvciYgY29w
eSkKK3sKKyAgICBkZWxldGUgbV9pbXBsOworICAgIG1faW1wbCA9IGNvcHkuaW1wbCgpID8gbmV3
IFdlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yUHJpdmF0ZShjb3B5LmltcGwoKSkgOiAwOworICAg
IHJldHVybiAqdGhpczsKK30KKworV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqIFdlYkRP
TVRlc3RFdmVudENvbnN0cnVjdG9yOjppbXBsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbXBs
ID8gbV9pbXBsLT5pbXBsLmdldCgpIDogMDsKK30KKworV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0
b3I6On5XZWJET01UZXN0RXZlbnRDb25zdHJ1Y3RvcigpCit7CisgICAgZGVsZXRlIG1faW1wbDsK
KyAgICBtX2ltcGwgPSAwOworfQorCitXZWJET01TdHJpbmcgV2ViRE9NVGVzdEV2ZW50Q29uc3Ry
dWN0b3I6OmF0dHIxKCkgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJu
IFdlYkRPTVN0cmluZygpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFdURjo6U3Ry
aW5nJj4oaW1wbCgpLT5hdHRyMSgpKTsKK30KKworV2ViRE9NU3RyaW5nIFdlYkRPTVRlc3RFdmVu
dENvbnN0cnVjdG9yOjphdHRyMigpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAg
IHJldHVybiBXZWJET01TdHJpbmcoKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBX
VEY6OlN0cmluZyY+KGltcGwoKS0+YXR0cjIoKSk7Cit9CisKK1dlYkNvcmU6OlRlc3RFdmVudENv
bnN0cnVjdG9yKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3ImIHdy
YXBwZXIpCit7CisgICAgcmV0dXJuIHdyYXBwZXIuaW1wbCgpOworfQorCitXZWJET01UZXN0RXZl
bnRDb25zdHJ1Y3RvciB0b1dlYktpdChXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3RvciogdmFs
dWUpCit7CisgICAgcmV0dXJuIFdlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yKHZhbHVlKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2Vi
RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9DUFAvV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGM0
OTI5N2U1MzUzMmU0NGVjODgyYTcwMjhmYTVmYmI0ZDBhYmQzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0RXZlbnRD
b25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2Vh
cmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcg
PHNhbS53ZWluaWdAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFdlYkRPTVRlc3RF
dmVudENvbnN0cnVjdG9yX2gKKyNkZWZpbmUgV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3JfaAor
CisjaW5jbHVkZSA8V2ViRE9NT2JqZWN0Lmg+CisjaW5jbHVkZSA8V2ViRE9NU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRlc3RFdmVudENvbnN0cnVjdG9yOworfTsKKwor
CitjbGFzcyBXZWJET01UZXN0RXZlbnRDb25zdHJ1Y3RvciA6IHB1YmxpYyBXZWJET01PYmplY3Qg
eworcHVibGljOgorICAgIFdlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yKCk7CisgICAgZXhwbGlj
aXQgV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IoV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0
b3IqKTsKKyAgICBXZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvcihjb25zdCBXZWJET01UZXN0RXZl
bnRDb25zdHJ1Y3RvciYpOworICAgIFdlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yJiBvcGVyYXRv
cj0oY29uc3QgV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3ImKTsKKyAgICB2aXJ0dWFsIH5XZWJE
T01UZXN0RXZlbnRDb25zdHJ1Y3RvcigpOworCisgICAgV2ViRE9NU3RyaW5nIGF0dHIxKCkgY29u
c3Q7CisgICAgV2ViRE9NU3RyaW5nIGF0dHIyKCkgY29uc3Q7CisKKyAgICBXZWJDb3JlOjpUZXN0
RXZlbnRDb25zdHJ1Y3RvciogaW1wbCgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgc3RydWN0
IFdlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yUHJpdmF0ZTsKKyAgICBXZWJET01UZXN0RXZlbnRD
b25zdHJ1Y3RvclByaXZhdGUqIG1faW1wbDsKK307CisKK1dlYkNvcmU6OlRlc3RFdmVudENvbnN0
cnVjdG9yKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdEV2ZW50Q29uc3RydWN0b3ImKTsKK1dl
YkRPTVRlc3RFdmVudENvbnN0cnVjdG9yIHRvV2ViS2l0KFdlYkNvcmU6OlRlc3RFdmVudENvbnN0
cnVjdG9yKik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3ODhmMTg0NDY0ODQwYjIyZjMzODU3
ZDAxOTE3NThmZDY2NmEwYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5j
cHAKQEAgLTAsMCArMSwxOTYgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdl
YktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0
ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlIDx3dGYvR2V0
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgIkRPTU9iamVjdENhY2hl
LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4
ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIlRlc3RFdmVudENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAi
V2ViS2l0RE9NQmluZGluZy5oIgorI2luY2x1ZGUgImdvYmplY3QvQ29udmVydFRvVVRGOFN0cmlu
Zy5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3RvclByaXZhdGUuaCIK
KyNpbmNsdWRlICJ3ZWJraXRkZWZpbmVzLmgiCisjaW5jbHVkZSAid2Via2l0Z2xvYmFsc3ByaXZh
dGUuaCIKKyNpbmNsdWRlICJ3ZWJraXRtYXJzaGFsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
ICAgIAorV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IqIGtpdChXZWJDb3JlOjpUZXN0RXZl
bnRDb25zdHJ1Y3Rvciogb2JqKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9iaiwgMCk7
CisKKyAgICBpZiAoZ3BvaW50ZXIgcmV0ID0gRE9NT2JqZWN0Q2FjaGU6OmdldChvYmopKQorICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IqPihy
ZXQpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVj
dG9yKj4oRE9NT2JqZWN0Q2FjaGU6OnB1dChvYmosIFdlYktpdDo6d3JhcFRlc3RFdmVudENvbnN0
cnVjdG9yKG9iaikpKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdCAvLworCitnY2hh
cioKK3dlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9nZXRfYXR0cjEoV2ViS2l0RE9N
VGVzdEV2ZW50Q29uc3RydWN0b3IqIHNlbGYpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
c2VsZiwgMCk7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKKyAgICBnY2hhciogcmVzID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5hdHRyMSgpKTsK
KyAgICByZXR1cm4gcmVzOworfQorCitnY2hhcioKK3dlYmtpdF9kb21fdGVzdF9ldmVudF9jb25z
dHJ1Y3Rvcl9nZXRfYXR0cjIoV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IqIHNlbGYpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9y
ICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnY2hhciogcmVzID0gY29udmVydFRv
VVRGOFN0cmluZyhpdGVtLT5hdHRyMigpKTsKKyAgICByZXR1cm4gcmVzOworfQorCisKK0dfREVG
SU5FX1RZUEUoV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IsIHdlYmtpdF9kb21fdGVzdF9l
dmVudF9jb25zdHJ1Y3RvciwgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yKiBjb3JlKFdlYktpdERPTVRl
c3RFdmVudENvbnN0cnVjdG9yKiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KHJlcXVlc3QsIDApOworCisgICAgV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqIGNvcmVP
YmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KFdFQktJ
VF9ET01fT0JKRUNUKHJlcXVlc3QpLT5jb3JlT2JqZWN0KTsKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChjb3JlT2JqZWN0LCAwKTsKKworICAgIHJldHVybiBjb3JlT2JqZWN0OworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKK2VudW0geworICAgIFBST1BfMCwKKyAgICBQUk9QX0FUVFIxLAor
ICAgIFBST1BfQVRUUjIsCit9OworCisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ldmVu
dF9jb25zdHJ1Y3Rvcl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV2ViS2l0RE9N
T2JqZWN0KiBkb21fb2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2JqZWN0KTsKKyAgICAKKyAg
ICBpZiAoZG9tX29iamVjdC0+Y29yZU9iamVjdCkgeworICAgICAgICBXZWJDb3JlOjpUZXN0RXZl
bnRDb25zdHJ1Y3RvciogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RFdmVu
dENvbnN0cnVjdG9yICo+KGRvbV9vYmplY3QtPmNvcmVPYmplY3QpOworCisgICAgICAgIFdlYktp
dDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKKyAgICAgICAgY29yZU9iamVj
dC0+ZGVyZWYoKTsKKworICAgICAgICBkb21fb2JqZWN0LT5jb3JlT2JqZWN0ID0gTlVMTDsKKyAg
ICB9CisKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0
b3JfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVj
KQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBzd2l0
Y2ggKHByb3BfaWQpIHsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFM
SURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKworCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0
b3JfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlKiB2
YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yKiBzZWxmID0g
V0VCS0lUX0RPTV9URVNUX0VWRU5UX0NPTlNUUlVDVE9SKG9iamVjdCk7CisgICAgV2ViQ29yZTo6
VGVzdEV2ZW50Q29uc3RydWN0b3IqIGNvcmVTZWxmID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAg
IHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9BVFRSMToKKyAgICB7CisgICAgICAg
IGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhTdHJpbmcoY29yZVNlbGYt
PmF0dHIxKCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9BVFRSMjoK
KyAgICB7CisgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhT
dHJpbmcoY29yZVNlbGYtPmF0dHIyKCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRl
ZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BfaWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9jb25zdHJ1Y3RlZChHT2JqZWN0
KiBvYmplY3QpCit7CisKKyAgICBpZiAoR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2V2
ZW50X2NvbnN0cnVjdG9yX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKQorICAgICAgICBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfcGFyZW50X2NsYXNz
KS0+Y29uc3RydWN0ZWQob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X2V2ZW50X2NvbnN0cnVjdG9yX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0
b3JDbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdENsYXNz
ID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmZpbmFs
aXplID0gd2Via2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVjdG9yX2ZpbmFsaXplOworICAgIGdv
YmplY3RDbGFzcy0+c2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV90ZXN0X2V2ZW50X2NvbnN0cnVj
dG9yX3NldF9wcm9wZXJ0eTsKKyAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtp
dF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9nZXRfcHJvcGVydHk7CisgICAgZ29iamVjdENs
YXNzLT5jb25zdHJ1Y3RlZCA9IHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9jb25z
dHJ1Y3RlZDsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENs
YXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9BVFRSMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoImF0
dHIxIiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9hdHRyMSIsIC8qIHNo
b3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJyZWFkLW9ubHkgIGdjaGFyKiBUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5hdHRyMSIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1
ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiIiwgLyogZGVmYXVsdCAqLworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUp
KTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfQVRUUjIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJhdHRyMiIsIC8q
IG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInRlc3RfZXZlbnRfY29uc3RydWN0b3JfYXR0cjIiLCAvKiBzaG9ydCBkZXNj
cmlwdGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAicmVhZC1vbmx5ICBnY2hhciogVGVzdEV2ZW50Q29uc3RydWN0b3IuYXR0
cjIiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUg
Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiIsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CisKKwor
fQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfaW5pdChX
ZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3RvciogcmVxdWVzdCkKK3sKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CitXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvciogd3JhcFRlc3RFdmVudENv
bnN0cnVjdG9yKFdlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yKiBjb3JlT2JqZWN0KQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOworCisgICAgLyogV2UgY2Fs
bCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2Ug
Y2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0CisgICAgICogaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0
IHN0cnVjdHVyZS4gIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUKKyAgICAgKiBtYXRj
aGluZyBkZXJlZigpLgorICAgICAqLworICAgIGNvcmVPYmplY3QtPnJlZigpOworCisgICAgcmV0
dXJuICBXRUJLSVRfRE9NX1RFU1RfRVZFTlRfQ09OU1RSVUNUT1IoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX0RPTV9URVNUX0VWRU5UX0NPTlNUUlVDVE9SLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiY29yZS1vYmplY3QiLCBjb3JlT2JqZWN0LCBOVUxM
KSk7Cit9Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RFdmVudENvbnN0cnVj
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMzM3ZmI2MDE1NDU3MzRk
NThkN2MwMjhhYjFhMzk3OTA0NjFiOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1
Y3Rvci5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5l
cmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRl
ZiBXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3Rvcl9oCisjZGVmaW5lIFdlYktpdERPTVRlc3RF
dmVudENvbnN0cnVjdG9yX2gKKworI2luY2x1ZGUgIndlYmtpdC93ZWJraXRkb21kZWZpbmVzLmgi
CisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZGVmaW5l
cy5oPgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01PYmplY3QuaCIKKworCitHX0JFR0lOX0RF
Q0xTCisjZGVmaW5lIFdFQktJVF9UWVBFX0RPTV9URVNUX0VWRU5UX0NPTlNUUlVDVE9SICAgICAg
ICAgICAgKHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9nZXRfdHlwZSgpKQorI2Rl
ZmluZSBXRUJLSVRfRE9NX1RFU1RfRVZFTlRfQ09OU1RSVUNUT1Iob2JqKSAgICAgICAgICAgIChH
X1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgV0VCS0lUX1RZUEVfRE9NX1RFU1RfRVZF
TlRfQ09OU1RSVUNUT1IsIFdlYktpdERPTVRlc3RFdmVudENvbnN0cnVjdG9yKSkKKyNkZWZpbmUg
V0VCS0lUX0RPTV9URVNUX0VWRU5UX0NPTlNUUlVDVE9SX0NMQVNTKGtsYXNzKSAgICAoR19UWVBF
X0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX0VWRU5UX0NP
TlNUUlVDVE9SLCBXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3RvckNsYXNzKQorI2RlZmluZSBX
RUJLSVRfRE9NX0lTX1RFU1RfRVZFTlRfQ09OU1RSVUNUT1Iob2JqKSAgICAgICAgIChHX1RZUEVf
Q0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfRE9NX1RFU1RfRVZFTlRfQ09O
U1RSVUNUT1IpKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFU1RfRVZFTlRfQ09OU1RSVUNUT1Jf
Q0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZ
UEVfRE9NX1RFU1RfRVZFTlRfQ09OU1RSVUNUT1IpKQorI2RlZmluZSBXRUJLSVRfRE9NX1RFU1Rf
RVZFTlRfQ09OU1RSVUNUT1JfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NM
QVNTKChvYmopLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfRVZFTlRfQ09OU1RSVUNUT1IsIFdlYktp
dERPTVRlc3RFdmVudENvbnN0cnVjdG9yQ2xhc3MpKQorCitzdHJ1Y3QgX1dlYktpdERPTVRlc3RF
dmVudENvbnN0cnVjdG9yIHsKKyAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNlOwor
fTsKKworc3RydWN0IF9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3RvckNsYXNzIHsKKyAgICBX
ZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdUeXBl
Cit3ZWJraXRfZG9tX3Rlc3RfZXZlbnRfY29uc3RydWN0b3JfZ2V0X3R5cGUgKHZvaWQpOworCisv
KioKKyAqIHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9nZXRfYXR0cjE6CisgKiBA
c2VsZjogQSAjV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IKKyAqCisgKiBSZXR1cm5zOgor
ICoKKyoqLworV0VCS0lUX0FQSSBnY2hhcioKK3dlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1
Y3Rvcl9nZXRfYXR0cjEoV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IqIHNlbGYpOworCisv
KioKKyAqIHdlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1Y3Rvcl9nZXRfYXR0cjI6CisgKiBA
c2VsZjogQSAjV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IKKyAqCisgKiBSZXR1cm5zOgor
ICoKKyoqLworV0VCS0lUX0FQSSBnY2hhcioKK3dlYmtpdF9kb21fdGVzdF9ldmVudF9jb25zdHJ1
Y3Rvcl9nZXRfYXR0cjIoV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3IqIHNlbGYpOworCitH
X0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3JfaCAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3JQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1
Y3RvclByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzBlODUyODkwMGUzN2ZjNmIzNjM1ZGNkN2NmMTI2
NGJmZTFmZGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEV2ZW50Q29uc3RydWN0b3JQcml2YXRlLmgK
QEAgLTAsMCArMSwzOSBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0
IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFdFQl9L
SVRfRE9NX1RFU1RfRVZFTlRfQ09OU1RSVUNUT1JfUFJJVkFURV9ICisjZGVmaW5lIFdFQl9LSVRf
RE9NX1RFU1RfRVZFTlRfQ09OU1RSVUNUT1JfUFJJVkFURV9ICisKKyNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdC9XZWJLaXRET01PYmplY3QuaD4KKyNpbmNsdWRlICJU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIgorbmFtZXNwYWNlIFdlYktpdCB7CisgICAgV2ViS2l0RE9N
VGVzdEV2ZW50Q29uc3RydWN0b3IgKgorICAgIHdyYXBUZXN0RXZlbnRDb25zdHJ1Y3RvcihXZWJD
b3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3RvciAqY29yZU9iamVjdCk7CisKKyAgICBXZWJDb3JlOjpU
ZXN0RXZlbnRDb25zdHJ1Y3RvciAqCisgICAgY29yZShXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1
Y3RvciAqcmVxdWVzdCk7CisKKyAgICBXZWJLaXRET01UZXN0RXZlbnRDb25zdHJ1Y3RvcioKKyAg
ICBraXQoV2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqIG5vZGUpOworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8qIFdFQl9LSVRfRE9NX1RFU1RfRVZFTlRfQ09OU1RSVUNU
T1JfUFJJVkFURV9IICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzNlMmZhMzVhNGUzZDIwOGM0MzE1MDFlNTJmZTU0NDY4NGNjYWVlYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAgICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxl
IGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElG
WSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5oIgorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIlRlc3RFdmVudENvbnN0cnVj
dG9yLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitB
U1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOworCisvKiBI
YXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLworI2lmIEVOQUJMRShKSVQpCisjZGVmaW5lIFRI
VU5LX0dFTkVSQVRPUihnZW5lcmF0b3IpICwgZ2VuZXJhdG9yCisjZWxzZQorI2RlZmluZSBUSFVO
S19HRU5FUkFUT1IoZ2VuZXJhdG9yKQorI2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCisjZGVm
aW5lIElOVFJJTlNJQyhpbnRyaW5zaWMpICwgaW50cmluc2ljCisjZWxzZQorI2RlZmluZSBJTlRS
SU5TSUMoaW50cmluc2ljKQorI2VuZGlmCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBK
U1Rlc3RFdmVudENvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAiYXR0cjEiLCBE
b250RGVsZXRlIHwgUmVhZE9ubHksIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKSwgKGludHB0cl90KTAg
VEhVTktfR0VORVJBVE9SKDApIElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9LAorICAgIHsg
ImF0dHIyIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMiksIChp
bnRwdHJfdCkwIFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMoREZHOjpOb0ludHJpbnNpYykg
fSwKKyAgICB7ICJjb25zdHJ1Y3RvciIsIERvbnRFbnVtIHwgUmVhZE9ubHksIChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RXZlbnRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yKSwgKGludHB0cl90KTAgVEhVTktfR0VORVJBVE9SKDApIElOVFJJTlNJ
QyhERkc6Ok5vSW50cmluc2ljKSB9LAorICAgIHsgMCwgMCwgMCwgMCBUSFVOS19HRU5FUkFUT1Io
MCkgSU5UUklOU0lDKERGRzo6Tm9JbnRyaW5zaWMpIH0KK307CisKKyN1bmRlZiBUSFVOS19HRU5F
UkFUT1IKK3N0YXRpYyBKU0NfQ09OU1RfSEFTSFRBQkxFIEhhc2hUYWJsZSBKU1Rlc3RFdmVudENv
bnN0cnVjdG9yVGFibGUgPSB7IDksIDcsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JUYWJsZVZhbHVl
cywgMCB9OworLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KKyNpZiBFTkFCTEUoSklU
KQorI2RlZmluZSBUSFVOS19HRU5FUkFUT1IoZ2VuZXJhdG9yKSAsIGdlbmVyYXRvcgorI2Vsc2UK
KyNkZWZpbmUgVEhVTktfR0VORVJBVE9SKGdlbmVyYXRvcikKKyNlbmRpZgorI2lmIEVOQUJMRShE
RkdfSklUKQorI2RlZmluZSBJTlRSSU5TSUMoaW50cmluc2ljKSAsIGludHJpbnNpYworI2Vsc2UK
KyNkZWZpbmUgSU5UUklOU0lDKGludHJpbnNpYykKKyNlbmRpZgorCitzdGF0aWMgY29uc3QgSGFz
aFRhYmxlVmFsdWUgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGVWYWx1ZXNb
XSA9Cit7CisgICAgeyAwLCAwLCAwLCAwIFRIVU5LX0dFTkVSQVRPUigwKSBJTlRSSU5TSUMoREZH
OjpOb0ludHJpbnNpYykgfQorfTsKKworI3VuZGVmIFRIVU5LX0dFTkVSQVRPUgorc3RhdGljIEpT
Q19DT05TVF9IQVNIVEFCTEUgSGFzaFRhYmxlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1
Y3RvclRhYmxlID0geyAxLCAwLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3JUYWJs
ZVZhbHVlcywgMCB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25z
dHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciIsICZE
T01Db25zdHJ1Y3Rvck9iamVjdDo6c19pbmZvLCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yVGFibGUsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKSB9OworCitKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpT
VGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQoreworfQorCit2b2lkIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBw
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90
eXBlLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9i
amVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSk7Cit9CisKK2Jvb2wgSlNUZXN0RXZlbnRDb25z
dHJ1Y3RvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0RXZlbnRDb25z
dHJ1Y3RvckNvbnN0cnVjdG9yLCBKU0RPTVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3RFdmVudENvbnN0
cnVjdG9yQ29uc3RydWN0b3JUYWJsZSwgc3RhdGljX2Nhc3Q8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKj4oY2VsbCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK3sKKyAgICByZXR1cm4g
Z2V0U3RhdGljVmFsdWVEZXNjcmlwdG9yPEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
ciwgSlNET01XcmFwcGVyPihleGVjLCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
VGFibGUsIHN0YXRpY19jYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcio+KG9i
amVjdCksIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCos
IENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjb25zdHJ1Y3RKU1Rlc3RFdmVudENvbnN0cnVjdG9yOworICAgIHJldHVy
biBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICov
CisjaWYgRU5BQkxFKEpJVCkKKyNkZWZpbmUgVEhVTktfR0VORVJBVE9SKGdlbmVyYXRvcikgLCBn
ZW5lcmF0b3IKKyNlbHNlCisjZGVmaW5lIFRIVU5LX0dFTkVSQVRPUihnZW5lcmF0b3IpCisjZW5k
aWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyNkZWZpbmUgSU5UUklOU0lDKGludHJpbnNpYykgLCBp
bnRyaW5zaWMKKyNlbHNlCisjZGVmaW5lIElOVFJJTlNJQyhpbnRyaW5zaWMpCisjZW5kaWYKKwor
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5
cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7IDAsIDAsIDAsIDAgVEhVTktfR0VORVJBVE9SKDAp
IElOVFJJTlNJQyhERkc6Ok5vSW50cmluc2ljKSB9Cit9OworCisjdW5kZWYgVEhVTktfR0VORVJB
VE9SCitzdGF0aWMgSlNDX0NPTlNUX0hBU0hUQUJMRSBIYXNoVGFibGUgSlNUZXN0RXZlbnRDb25z
dHJ1Y3RvclByb3RvdHlwZVRhYmxlID0geyAxLCAwLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJv
dG90eXBlVGFibGVWYWx1ZXMsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlw
ZSIsICZKU0M6OkpTTm9uRmluYWxPYmplY3Q6OnNfaW5mbywgJkpTVGVzdEV2ZW50Q29uc3RydWN0
b3JQcm90b3R5cGVUYWJsZSwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFdmVudENvbnN0
cnVjdG9yUHJvdG90eXBlKSB9OworCitKU09iamVjdCogSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclBy
b3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RFdmVudENvbnN0cnVjdG9y
PihleGVjLCBnbG9iYWxPYmplY3QpOworfQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAmSlNET01XcmFw
cGVyOjpzX2luZm8sICZKU1Rlc3RFdmVudENvbnN0cnVjdG9yVGFibGUsIDAgLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpIH07CisKK0pTVGVzdEV2ZW50Q29uc3Ry
dWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdEV2ZW50Q29uc3RydWN0
b3I+IGltcGwpCisgICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCisg
ICAgLCBtX2ltcGwoaW1wbCkKK3sKK30KKwordm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CisgICAgQVNTRVJUKGluaGVyaXRzKCZzX2luZm8pKTsK
K30KKworSlNPYmplY3QqIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0ZVByb3RvdHlwZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0
dXJuIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZShleGVjLT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdCwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKworYm9vbCBKU1Rlc3RFdmVudENv
bnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQor
eworICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxK
U1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90
PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IsIEJhc2U+KGV4ZWMsICZKU1Rlc3RFdmVudENvbnN0cnVj
dG9yVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK2Jvb2wgSlNU
ZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBv
YmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgSlNUZXN0RXZlbnRDb25zdHJ1
Y3RvciogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihv
YmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5m
byk7CisgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3RFdmVudENvbnN0
cnVjdG9yLCBCYXNlPihleGVjLCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclRhYmxlLCB0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOworfQorCitKU1ZhbHVlIGpzVGVzdEV2ZW50
Q29uc3RydWN0b3JBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0
IElkZW50aWZpZXImKQoreworICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIGNhc3RlZFRoaXMg
PSBzdGF0aWNfY2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oYXNPYmplY3Qoc2xvdEJhc2Up
KTsKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisgICAgVGVzdEV2ZW50Q29uc3RydWN0b3IqIGlt
cCA9IHN0YXRpY19jYXN0PFRlc3RFdmVudENvbnN0cnVjdG9yKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIGltcC0+YXR0cjEoKSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JB
dHRyMihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXIm
KQoreworICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2Fz
dDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CisgICAgVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcCA9IHN0YXRpY19j
YXN0PFRlc3RFdmVudENvbnN0cnVjdG9yKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzU3RyaW5nKGV4ZWMsIGltcC0+YXR0cjIoKSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworCitKU1ZhbHVlIGpzVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorewor
ICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIGRvbU9iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVz
dEV2ZW50Q29uc3RydWN0b3IqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIHJldHVybiBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihleGVjLCBkb21PYmplY3QtPmdsb2Jh
bE9iamVjdCgpKTsKK30KKworSlNWYWx1ZSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7
CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25z
dHJ1Y3Rvcj4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsKQor
eworICAgIHJldHVybiB3cmFwPEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+KGV4ZWMsIGdsb2JhbE9i
amVjdCwgaW1wbCk7Cit9CisKK1Rlc3RFdmVudENvbnN0cnVjdG9yKiB0b1Rlc3RFdmVudENvbnN0
cnVjdG9yKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuaW5oZXJpdHMo
JkpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OnNfaW5mbykgPyBzdGF0aWNfY2FzdDxKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yKj4oYXNPYmplY3QodmFsdWUpKS0+aW1wbCgpIDogMDsKK30KKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTllMThjZmRhNTYyMWEzNTc1
NDkyN2UwYmUyOWM3NDg5Mjk2ZDE1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKQEAgLTAs
MCArMSwxMjQgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVu
IHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2Vu
ZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yX2gKKyNkZWZpbmUgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcl9oCisKKyNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pT
T2JqZWN0Lmg+CisjaW5jbHVkZSA8cnVudGltZS9PYmplY3RQcm90b3R5cGUuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yIDogcHVibGljIEpT
RE9NV3JhcHBlciB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKyAg
ICBzdGF0aWMgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVz
dEV2ZW50Q29uc3RydWN0b3I+IGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yKiBwdHIgPSBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEV2ZW50Q29uc3RydWN0
b3I+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSk7CisgICAgICAgIHJldHVybiBwdHI7
CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRp
YyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOwor
CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsKCkg
Y29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPFRl
c3RFdmVudENvbnN0cnVjdG9yPiBtX2ltcGw7Citwcm90ZWN0ZWQ6CisgICAgSlNUZXN0RXZlbnRD
b25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0
cjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4pOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpK
U0dsb2JhbERhdGEmKTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OworfTsKKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9i
amVjdCosIFRlc3RFdmVudENvbnN0cnVjdG9yKik7CitUZXN0RXZlbnRDb25zdHJ1Y3RvciogdG9U
ZXN0RXZlbnRDb25zdHJ1Y3RvcihKU0M6OkpTVmFsdWUpOworCitjbGFzcyBKU1Rlc3RFdmVudENv
bnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBKU0M6OkpTTm9uRmluYWxPYmplY3QgQmFzZTsKKyAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogc2VsZihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKKyAgICBzdGF0aWMgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSogY3JlYXRlKEpT
Qzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yUHJvdG90eXBlKiBwdHIgPSBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdEV2
ZW50Q29uc3RydWN0b3JQcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgICAgICBy
ZXR1cm4gcHRyOworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2lu
Zm87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5
cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZShKU0M6OkpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU05vbkZpbmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVj
dHVyZSkgeyB9Citwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7Cit9OworCitjbGFzcyBKU1Rlc3RFdmVudENv
bnN0cnVjdG9yQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgeworcHJp
dmF0ZToKKyAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1
cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpF
eGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworCitwdWJsaWM6CisgICAgdHlwZWRlZiBE
T01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOworICAgIHN0YXRpYyBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICB7Cisg
ICAgICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciogcHRyID0gbmV3IChKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I+KCpleGVjLT5o
ZWFwKCkpKSBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3Ioc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVj
dCk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBK
U0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBj
b25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCAmc19pbmZvKTsKKyAgICB9Citwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU0M6OkltcGxlbWVudHNIYXNJbnN0YW5jZSB8IERPTUNvbnN0cnVjdG9yT2JqZWN0OjpTdHJ1
Y3R1cmVGbGFnczsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEpTVGVzdEV2ZW50Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBz
dGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBK
U0M6OkNvbnN0cnVjdERhdGEmKTsKK307CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpKU1ZhbHVl
IGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CitKU0M6OkpTVmFsdWUganNUZXN0RXZlbnRDb25z
dHJ1Y3RvckF0dHIyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0
b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYp
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50Q29uc3RydWN0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RF
dmVudENvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2ZjNGVjNWQ2OTM3NGQxYzEzMzBiYTQyMDRm
YmUxODg4ODFkNzhhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RFdmVudENvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSwz
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0BnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQg
PFdlYkNvcmUvRE9NT2JqZWN0Lmg+CisKKyNpZiBXRUJLSVRfVkVSU0lPTl9NQVhfQUxMT1dFRCA+
PSBXRUJLSVRfVkVSU0lPTl9MQVRFU1QKKworQGNsYXNzIE5TU3RyaW5nOworCitAaW50ZXJmYWNl
IERPTVRlc3RFdmVudENvbnN0cnVjdG9yIDogRE9NT2JqZWN0CistIChOU1N0cmluZyAqKWF0dHIx
OworLSAoTlNTdHJpbmcgKilhdHRyMjsKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRDb25zdHJ1
Y3Rvci5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RFdmVudENvbnN0cnVjdG9yLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3ZTYxZjEzN2UwZWU3YzVlOTg0OGI5
YzE3YWI5M2M5NDAzNmQ2ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5tbQpAQCAtMCww
ICsxLDEwMCBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KKyAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJh
dGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiRE9NSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiRE9NVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuaCIKKworI2ltcG9ydCAiRE9NQmxvYkludGVybmFsLmgiCisjaW1wb3J0ICJET01DU1NS
dWxlSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTUNTU1ZhbHVlSW50ZXJuYWwuaCIKKyNpbXBvcnQg
IkRPTUV2ZW50SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTU5vZGVJbnRlcm5hbC5oIgorI2ltcG9y
dCAiRE9NU3R5bGVTaGVldEludGVybmFsLmgiCisjaW1wb3J0ICJET01UZXN0RXZlbnRDb25zdHJ1
Y3RvckludGVybmFsLmgiCisjaW1wb3J0ICJFeGNlcHRpb25IYW5kbGVycy5oIgorI2ltcG9ydCAi
SlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW1wb3J0ICJLVVJMLmgiCisjaW1wb3J0ICJUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5oIgorI2ltcG9ydCAiVGhyZWFkQ2hlY2suaCIKKyNpbXBvcnQgIldl
YkNvcmVPYmpDRXh0cmFzLmgiCisjaW1wb3J0ICJXZWJTY3JpcHRPYmplY3RQcml2YXRlLmgiCisj
aW1wb3J0IDx3dGYvR2V0UHRyLmg+CisKKyNkZWZpbmUgSU1QTCByZWludGVycHJldF9jYXN0PFdl
YkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yKj4oX2ludGVybmFsKQorCitAaW1wbGVtZW50YXRp
b24gRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IKKworLSAodm9pZClkZWFsbG9jCit7CisgICAgaWYg
KFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtET01UZXN0RXZlbnRD
b25zdHJ1Y3RvciBjbGFzc10sIHNlbGYpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoX2lu
dGVybmFsKQorICAgICAgICBJTVBMLT5kZXJlZigpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30K
KworLSAodm9pZClmaW5hbGl6ZQoreworICAgIGlmIChfaW50ZXJuYWwpCisgICAgICAgIElNUEwt
PmRlcmVmKCk7CisgICAgW3N1cGVyIGZpbmFsaXplXTsKK30KKworLSAoTlNTdHJpbmcgKilhdHRy
MQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1
cm4gSU1QTC0+YXR0cjEoKTsKK30KKworLSAoTlNTdHJpbmcgKilhdHRyMgoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+YXR0cjIo
KTsKK30KKworQGVuZAorCitXZWJDb3JlOjpUZXN0RXZlbnRDb25zdHJ1Y3RvciogY29yZShET01U
ZXN0RXZlbnRDb25zdHJ1Y3RvciAqd3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBlciA/IHJl
aW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdEV2ZW50Q29uc3RydWN0b3IqPih3cmFwcGVyLT5f
aW50ZXJuYWwpIDogMDsKK30KKworRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IgKmtpdChXZWJDb3Jl
OjpUZXN0RXZlbnRDb25zdHJ1Y3RvciogdmFsdWUpCit7CisgICAgeyBET01fQVNTRVJUX01BSU5f
VEhSRUFEKCk7IFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7IH07CisgICAg
aWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBpZiAoRE9NVGVzdEV2ZW50Q29u
c3RydWN0b3IgKndyYXBwZXIgPSBnZXRET01XcmFwcGVyKHZhbHVlKSkKKyAgICAgICAgcmV0dXJu
IFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICBET01UZXN0RXZlbnRDb25zdHJ1
Y3RvciAqd3JhcHBlciA9IFtbRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IgYWxsb2NdIF9pbml0XTsK
KyAgICB3cmFwcGVyLT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PERPTU9iamVjdEludGVy
bmFsKj4odmFsdWUpOworICAgIHZhbHVlLT5yZWYoKTsKKyAgICBhZGRET01XcmFwcGVyKHdyYXBw
ZXIsIHZhbHVlKTsKKyAgICByZXR1cm4gW3dyYXBwZXIgYXV0b3JlbGVhc2VdOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEV2
ZW50Q29uc3RydWN0b3JJbnRlcm5hbC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3JJbnRlcm5hbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJhYWM4ZmZmMmE4YmY4NGYzNjM5MWM5OTcwNWFlZGFkNzMxMWNkY2QKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0RXZl
bnRDb25zdHJ1Y3RvckludGVybmFsLmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAqIFRoaXMgZmls
ZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJ
RlkhCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbXBvcnQgPFdlYkNvcmUvRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IuaD4K
KworI2lmIFdFQktJVF9WRVJTSU9OX01BWF9BTExPV0VEID49IFdFQktJVF9WRVJTSU9OX0xBVEVT
VAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgVGVzdEV2ZW50Q29uc3RydWN0b3I7
Cit9CisKK1dlYkNvcmU6OlRlc3RFdmVudENvbnN0cnVjdG9yKiBjb3JlKERPTVRlc3RFdmVudENv
bnN0cnVjdG9yICopOworRE9NVGVzdEV2ZW50Q29uc3RydWN0b3IgKmtpdChXZWJDb3JlOjpUZXN0
RXZlbnRDb25zdHJ1Y3RvciopOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXZlbnRDb25zdHJ1Y3Rvci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEV2ZW50Q29uc3RydWN0b3IuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhkM2JhZWUzMjA3YzVkODE1MGEzMDBkZTY5OGY3NjNlYzIxZTQzMWYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEV2
ZW50Q29uc3RydWN0b3IuaWRsCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zdHJBcmcsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFc3Ry
QXJnLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVGhpcyBJ
REwgZmlsZSBpcyBmb3IgdGVzdGluZyB0aGUgYmluZGluZ3MgY29kZSBnZW5lcmF0b3IgYW5kIGZv
ciB0cmFja2luZworLy8gY2hhbmdlcyBpbiBpdHMgb3VwdXQuCittb2R1bGUgdGVzdCB7CisgICAg
aW50ZXJmYWNlIFsKKyAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3I9RXZlbnQKKyAgICBdIFRlc3RF
dmVudENvbnN0cnVjdG9yIHsKKyAgICAgICAgLy8gQXR0cmlidXRlcworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGF0dHIxOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W0luaXRpYWxpemVkQXRDb25zdHJ1Y3Rvcl0gRE9NU3RyaW5nIGF0dHIyOworICAgIH07Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdjNjY5ZGRiZmRk
MDczOWJkNGI5Y2JiOGJiMWZkY2I5NGU4Zjk0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNw
cApAQCAtMCwwICsxLDE3MCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2Vi
S2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz
MCwKKyAgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJWOFRlc3RFdmVudENvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJP
cHRpb25zT2JqZWN0LmgiCisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgorI2luY2x1
ZGUgIlY4QmluZGluZ1N0YXRlLmgiCisjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCisjaW5jbHVk
ZSAiVjhJc29sYXRlZENvbnRleHQuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSA8
d3RmL1VudXNlZFBhcmFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV3JhcHBlclR5cGVJ
bmZvIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmluZm8gPSB7IFY4VGVzdEV2ZW50Q29uc3RydWN0
b3I6OkdldFRlbXBsYXRlLCBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpkZXJlZk9iamVjdCwgMCwg
MCB9OworCituYW1lc3BhY2UgVGVzdEV2ZW50Q29uc3RydWN0b3JJbnRlcm5hbCB7CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPiB2b2lkIFY4X1VTRShUKSB7IH0KKworc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhdHRyMUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdEV2
ZW50Q29uc3RydWN0b3IuYXR0cjEuX2dldCIpOworICAgIFRlc3RFdmVudENvbnN0cnVjdG9yKiBp
bXAgPSBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICByZXR1cm4gdjhTdHJpbmcoaW1wLT5hdHRyMSgpKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhdHRyMkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdEV2
ZW50Q29uc3RydWN0b3IuYXR0cjIuX2dldCIpOworICAgIFRlc3RFdmVudENvbnN0cnVjdG9yKiBp
bXAgPSBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAg
ICByZXR1cm4gdjhTdHJpbmcoaW1wLT5hdHRyMigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVz
dEV2ZW50Q29uc3RydWN0b3JJbnRlcm5hbAorCitzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0
ZSBUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJzW10gPSB7CisgICAgLy8gQXR0cmlidXRlICdhdHRy
MScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQorICAgIHsiYXR0cjEi
LCBUZXN0RXZlbnRDb25zdHJ1Y3RvckludGVybmFsOjphdHRyMUF0dHJHZXR0ZXIsIDAsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnYXR0cjInIChUeXBlOiAncmVhZG9ubHkgYXR0
cmlidXRlJyBFeHRBdHRyOiAnSW5pdGlhbGl6ZWRBdENvbnN0cnVjdG9yJykKKyAgICB7ImF0dHIy
IiwgVGVzdEV2ZW50Q29uc3RydWN0b3JJbnRlcm5hbDo6YXR0cjJBdHRyR2V0dGVyLCAwLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKK307CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RFdmVudENvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7
CisgICAgSU5DX1NUQVRTKCJET00uVGVzdEV2ZW50Q29uc3RydWN0b3IuQ29uc3RydWN0b3IiKTsK
KworICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93
RXJyb3IoIkRPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0
aW9uLiIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisKKyAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpj
dXJyZW50KCkgPT0gQ29uc3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCisgICAgICAg
IHJldHVybiBhcmdzLkhvbGRlcigpOworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQorICAg
ICAgICByZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBWOFByb3h5OjpU
eXBlRXJyb3IpOworCisgICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhW
OFBhcmFtZXRlcjw+LCB0eXBlLCBhcmdzWzBdKTsKKyAgICBUZXN0RXZlbnRDb25zdHJ1Y3Rvcklu
aXQgZXZlbnRJbml0OworICAgIGlmIChhcmdzLkxlbmd0aCgpID49IDIpIHsKKyAgICAgICAgRVhD
RVBUSU9OX0JMT0NLKE9wdGlvbnNPYmplY3QsIG9wdGlvbnMsIGFyZ3NbMV0pOworICAgICAgICBp
ZiAoIWZpbGxUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQoZXZlbnRJbml0LCBvcHRpb25zKSkKKyAg
ICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgUmVmUHRyPFRl
c3RFdmVudENvbnN0cnVjdG9yPiBldmVudCA9IFRlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGUo
dHlwZSwgZXZlbnRJbml0KTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdz
LkhvbGRlcigpLCAmaW5mbywgZXZlbnQuZ2V0KCkpOworICAgIHJldHVybiB0b1Y4KGV2ZW50LnJl
bGVhc2UoKSwgYXJncy5Ib2xkZXIoKSk7Cit9CisKK2Jvb2wgZmlsbFRlc3RFdmVudENvbnN0cnVj
dG9ySW5pdChUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQmIGV2ZW50SW5pdCwgY29uc3QgT3B0aW9u
c09iamVjdCYgb3B0aW9ucykKK3sKKyAgICBvcHRpb25zLmdldCgiYXR0cjIiLCBldmVudEluaXQu
YXR0cjIpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0
ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYykKK3sKKyAgICBkZXNj
LT5SZWFkT25seVByb3RvdHlwZSgpOworCisgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRl
ZmF1bHRTaWduYXR1cmU7CisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRl
KGRlc2MsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPigpLCBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjppbnRlcm5hbEZpZWxkQ291bnQs
CisgICAgICAgIFRlc3RFdmVudENvbnN0cnVjdG9yQXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoVGVz
dEV2ZW50Q29uc3RydWN0b3JBdHRycyksCisgICAgICAgIDAsIDApOworICAgIFVOVVNFRF9QQVJB
TShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNl
ZC4KKyAgICBkZXNjLT5TZXRDYWxsSGFuZGxlcihWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjb25z
dHJ1Y3RvckNhbGxiYWNrKTsKKyAgICAKKworICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0
ZQorICAgIGRlc2MtPlNldChnZXRUb1N0cmluZ05hbWUoKSwgZ2V0VG9TdHJpbmdUZW1wbGF0ZSgp
KTsKKyAgICByZXR1cm4gZGVzYzsKK30KKwordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFJhd1RlbXBsYXRlKCkKK3sKKyAgICBW
OEJpbmRpbmdQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpj
dXJyZW50KCk7CisgICAgVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOworICAgIGlm
IChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJu
IHJlc3VsdC0+c2Vjb25kOworCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1Rl
bXBsYXRlKCk7CisgICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsK
KyAgICByZXR1cm4gdGVtcGw7Cit9CisKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSgpCit7CisgICAgVjhCaW5k
aW5nUGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6Y3VycmVu
dCgpOworICAgIFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCisgICAgICAgIHJldHVybiByZXN1bHQtPnNl
Y29uZDsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQorICAgICAgICBDb25maWd1cmVWOFRl
c3RFdmVudENvbnN0cnVjdG9yVGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoKSk7CisgICAgZGF0YS0+
dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICByZXR1cm4gdGVtcGw7Cit9CisK
K2Jvb2wgVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlKQoreworICAgIHJldHVybiBHZXRSYXdUZW1wbGF0ZSgpLT5IYXNJbnN0YW5j
ZSh2YWx1ZSk7Cit9CisKKwordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RFdmVudENvbnN0
cnVjdG9yOjp3cmFwU2xvdyhUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wbCkKK3sKKyAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXI7CisgICAgVjhQcm94eSogcHJveHkgPSAwOworICAg
IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QocHJveHksICZpbmZv
LCBpbXBsKTsKKyAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB3cmFw
cGVyOworCisgICAgaW1wbC0+cmVmKCk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlckhhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcik7
CisKKyAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQorICAgICAgICB3cmFwcGVySGFuZGxl
Lk1hcmtJbmRlcGVuZGVudCgpOworICAgIGdldERPTU9iamVjdE1hcCgpLnNldChpbXBsLCB3cmFw
cGVySGFuZGxlKTsKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KKwordm9pZCBWOFRlc3RFdmVudENv
bnN0cnVjdG9yOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCit7CisgICAgc3RhdGljX2Nhc3Q8
VGVzdEV2ZW50Q29uc3RydWN0b3IqPihvYmplY3QpLT5kZXJlZigpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
OWI1Mjg1NWY1NDc1OTQ4MzQyYmZkMzllOTBhZTZmOGZhNmMzNmY4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29u
c3RydWN0b3IuaApAQCAtMCwwICsxLDg0IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2lmbmRl
ZiBWOFRlc3RFdmVudENvbnN0cnVjdG9yX2gKKyNkZWZpbmUgVjhUZXN0RXZlbnRDb25zdHJ1Y3Rv
cl9oCisKKyNpbmNsdWRlICJUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlY4RE9N
V3JhcHBlci5oIgorI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgorI2luY2x1ZGUgPHY4Lmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgT3B0aW9uc09iamVjdDsKKworY2xh
c3MgVjhUZXN0RXZlbnRDb25zdHJ1Y3RvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0
YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUoKTsKKyAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKCk7CisgICAgc3RhdGlj
IFRlc3RFdmVudENvbnN0cnVjdG9yKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
amVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3RFdmVudENv
bnN0cnVjdG9yKj4ob2JqZWN0LT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFw
cGVyT2JqZWN0SW5kZXgpKTsKKyAgICB9CisgICAgaW5saW5lIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXAoVGVzdEV2ZW50Q29uc3RydWN0b3IqKTsKKyAgICBzdGF0aWMgdm9pZCBk
ZXJlZk9iamVjdCh2b2lkKik7CisgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5mbyBpbmZvOworICAg
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJik7CisgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQg
PSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKKyAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBleGlzdGluZ1dyYXBwZXIoVGVzdEV2ZW50Q29uc3RydWN0b3Iq
KTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwU2xv
dyhUZXN0RXZlbnRDb25zdHJ1Y3RvciopOworfTsKKworQUxXQVlTX0lOTElORSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmV4aXN0aW5nV3JhcHBlcihUZXN0
RXZlbnRDb25zdHJ1Y3RvciogaW1wbCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NT2JqZWN0TWFwKCku
Z2V0KGltcGwpOworfQorCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEV2ZW50Q29uc3Ry
dWN0b3I6OndyYXAoVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcGwpCit7CisgICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGV4aXN0aW5nV3JhcHBlcihpbXBsKTsKKyAgICAg
ICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwor
ICAgIHJldHVybiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjp3cmFwU2xvdyhpbXBsKTsKK30KKwor
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RFdmVudENvbnN0cnVjdG9yKiBp
bXBsKQoreworICAgIGlmICghaW1wbCkKKyAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CisgICAg
cmV0dXJuIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OndyYXAoaW1wbCk7Cit9CitpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdEV2ZW50Q29uc3RydWN0b3Ig
PiBpbXBsKQoreworICAgIHJldHVybiB0b1Y4KGltcGwuZ2V0KCkpOworfQorCitib29sIGZpbGxU
ZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQoVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0JiwgY29uc3Qg
T3B0aW9uc09iamVjdCYpOworCit9CisKKyNlbmRpZiAvLyBWOFRlc3RFdmVudENvbnN0cnVjdG9y
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RJbnRlcmZhY2UuaAppbmRleCBlNWI1YjlhYjg1ZDhjNDNmNDJkYzYwMGRhYjk2MjE5
ODA1NDc3ZTBkLi4xNWQxZGIzNWQxZGQ1YjcxZWFmNTQ4OTY1YmI4ZjRmZGQxMDc5MTkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEludGVyZmFjZS5oCkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorCiBjbGFzcyBWOFRlc3RJbnRlcmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBi
b29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gdHJ1ZTsKQEAgLTc3LDYgKzc4LDcgQEAgaW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8IFRlc3RJbnRlcmZhY2UgPiBp
bXBsKQogewogICAgIHJldHVybiB0b1Y4KGltcGwuZ2V0KCkpOwogfQorCiB9CiAKICNlbmRpZiAv
LyBWOFRlc3RJbnRlcmZhY2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmgKaW5kZXggMWU0ZWY0MWM0MzQ0ODg5MmIwMDIyNGZiYTEwYWExMmFiODk0Y2M5MC4uOTQ3
ZWI1MGY0ZTE5ZmNkZmJhNzlmNjM4ZDY0ODFiZjBlMTVlMWQ3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBAIC0zMCw2ICszMCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorCiBjbGFzcyBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNl
OwpAQCAtNzMsNiArNzQsNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFz
c1JlZlB0cjwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgPiBpbXBsKQogewogICAgIHJldHVy
biB0b1Y4KGltcGwuZ2V0KCkpOwogfQorCiB9CiAKICNlbmRpZiAvLyBWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCmluZGV4IDNmNmUz
MjdkZWJhNWQyM2M4Nzc0NGFlMjU2YWY0ZDM0NTQ4OWM5YmEuLjQwM2FlY2NiYTIxMmRmMWI5YWE2
OTBjYjBjOGZkYjdkM2IwNDM5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaApA
QCAtMzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKwogY2xhc3MgVjhUZXN0
TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKCk7CkBAIC04MCw2ICs4
MSw3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0
TmFtZWRDb25zdHJ1Y3RvciA+IGltcGwpCiB7CiAgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQoKSk7
CiB9CisKIH0KIAogI2VuZGlmIC8vIFY4VGVzdE5hbWVkQ29uc3RydWN0b3JfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCmluZGV4
IDIyNGIxZDJlOTZkNDAwYzQ0ZjAwNTBmYjEyOGY5MjQyNTM3MmVlNDEuLjMwMjFhYjkyNDI5MDUx
NDY3ZjQ2YThjNTU4OTQ4N2VjNGUyYmQ5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKQEAgLTMwLDYgKzMwLDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCisKIGNsYXNzIFY4VGVzdE9iaiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKQEAgLTc4LDYg
Kzc5LDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8IFRl
c3RPYmogPiBpbXBsKQogewogICAgIHJldHVybiB0b1Y4KGltcGwuZ2V0KCkpOwogfQorCiB9CiAK
ICNlbmRpZiAvLyBWOFRlc3RPYmpfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCmluZGV4IDk0OTY4ZTdlNjM2NTc0MmY3Yzc5MTdmZjBh
ZDI3MjgyNDU5ZmI4NWIuLjBjYzQ4MGVmMzY5NDk0OGVmNDc2ZDMwMWVhN2NkODM5ZjNhMzM2MTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisKIGNsYXNz
IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKQEAgLTc1LDYgKzc2
LDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8IFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UKIHsKICAgICByZXR1cm4gdG9WOChpbXBsLmdl
dCgpKTsKIH0KKwogfQogCiAjZW5kaWYgLy8gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEV2ZW50Q29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEV2ZW50Q29uc3RydWN0b3JzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Zjg5NWY0OWFjZjhiY2Q1MTQ0OGFkMDEwOTg2YzI1Njk5MjY2NjUyZS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhFdmVudENvbnN0cnVjdG9ycy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJFdmVudENvbnN0cnVjdG9ycy5o
IgotCi0jaW5jbHVkZSAiQmVmb3JlTG9hZEV2ZW50LmgiCi0jaW5jbHVkZSAiQ2xvc2VFdmVudC5o
IgotI2luY2x1ZGUgIkN1c3RvbUV2ZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNs
dWRlICJEb2N1bWVudEZyYWdtZW50LmgiCi0jaW5jbHVkZSAiRXJyb3JFdmVudC5oIgotI2luY2x1
ZGUgIkhhc2hDaGFuZ2VFdmVudC5oIgotI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgotI2luY2x1
ZGUgIk5vZGUuaCIKLSNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCi0jaW5jbHVkZSAiUGFnZVRy
YW5zaXRpb25FdmVudC5oIgotI2luY2x1ZGUgIlBvcFN0YXRlRXZlbnQuaCIKLSNpbmNsdWRlICJQ
cm9ncmVzc0V2ZW50LmgiCi0jaW5jbHVkZSAiV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCIKLSNpbmNs
dWRlICJXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCIKLQotI2luY2x1ZGUgIk9wdGlvbnNPYmplY3Qu
aCIKLSNpbmNsdWRlICJWOEJlZm9yZUxvYWRFdmVudC5oIgotI2luY2x1ZGUgIlY4QmluZGluZy5o
IgotI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgotI2luY2x1ZGUgIlY4Q2xvc2VFdmVudC5o
IgotI2luY2x1ZGUgIlY4Q3VzdG9tRXZlbnQuaCIKLSNpbmNsdWRlICJWOERvY3VtZW50LmgiCi0j
aW5jbHVkZSAiVjhFcnJvckV2ZW50LmgiCi0jaW5jbHVkZSAiVjhFdmVudC5oIgotI2luY2x1ZGUg
IlY4SGFzaENoYW5nZUV2ZW50LmgiCi0jaW5jbHVkZSAiVjhNZXNzYWdlRXZlbnQuaCIKLSNpbmNs
dWRlICJWOE5vZGUuaCIKLSNpbmNsdWRlICJWOE92ZXJmbG93RXZlbnQuaCIKLSNpbmNsdWRlICJW
OFBhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJWOFBvcFN0YXRlRXZlbnQuaCIKLSNp
bmNsdWRlICJWOFByb2dyZXNzRXZlbnQuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCi0jaW5jbHVk
ZSAiVjhXZWJLaXRBbmltYXRpb25FdmVudC5oIgotI2luY2x1ZGUgIlY4V2ViS2l0VHJhbnNpdGlv
bkV2ZW50LmgiCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0jaW5jbHVkZSAiVHJhY2tFdmVu
dC5oIgotI2luY2x1ZGUgIlY4VHJhY2tFdmVudC5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRXZl
bnRUeXBlLCB0eXBlbmFtZSBFdmVudEluaXRUeXBlPgotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjb25zdHJ1Y3RWOEV2ZW50KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJvb2wgKCpm
aWxsZXIpKEV2ZW50SW5pdFR5cGUmLCBjb25zdCBPcHRpb25zT2JqZWN0JiksIFdyYXBwZXJUeXBl
SW5mbyogaW5mbykKLXsKLSAgICBJTkNfU1RBVFMoIkRPTS5FdmVudC5Db25zdHJ1Y3RvciIpOwot
Ci0gICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rp
b24uIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKLQotICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6OmN1
cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkKLSAgICAgICAg
cmV0dXJuIGFyZ3MuSG9sZGVyKCk7Ci0KLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCi0gICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5
cGVFcnJvcik7Ci0KLSAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4
UGFyYW1ldGVyPD4sIHR5cGUsIGFyZ3NbMF0pOwotICAgIEV2ZW50SW5pdFR5cGUgZXZlbnRJbml0
OwotICAgIGlmIChhcmdzLkxlbmd0aCgpID49IDIpIHsKLSAgICAgICAgRVhDRVBUSU9OX0JMT0NL
KE9wdGlvbnNPYmplY3QsIG9wdGlvbnMsIGFyZ3NbMV0pOwotICAgICAgICBpZiAoIWZpbGxlcihl
dmVudEluaXQsIG9wdGlvbnMpKQotICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsK
LSAgICB9Ci0KLSAgICBSZWZQdHI8RXZlbnRUeXBlPiBldmVudCA9IEV2ZW50VHlwZTo6Y3JlYXRl
KHR5cGUsIGV2ZW50SW5pdCk7Ci0KLSAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJn
cy5Ib2xkZXIoKSwgaW5mbywgZXZlbnQuZ2V0KCkpOwotICAgIHJldHVybiB0b1Y4KGV2ZW50LnJl
bGVhc2UoKSwgYXJncy5Ib2xkZXIoKSk7Ci19Ci0KLSNkZWZpbmUgRElDVElPTkFSWV9TVEFSVChF
dmVudFR5cGUpIFwKLSAgICBzdGF0aWMgYm9vbCBmaWxsIyNFdmVudFR5cGUjI0luaXQoRXZlbnRU
eXBlIyNJbml0JiBldmVudEluaXQsIGNvbnN0IE9wdGlvbnNPYmplY3QmIG9wdGlvbnMpIFwKLSAg
ICB7Ci0KLSNkZWZpbmUgRElDVElPTkFSWV9FTkQoRXZlbnRUeXBlKSBcCi0gICAgICAgIHJldHVy
biB0cnVlOyBcCi0gICAgfSBcCi0gICAgXAotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOCMj
RXZlbnRUeXBlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
IFwKLSAgICB7IFwKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFY4RXZlbnQ8RXZlbnRUeXBlLCBF
dmVudFR5cGUjI0luaXQ+KGFyZ3MsIGZpbGwjI0V2ZW50VHlwZSMjSW5pdCwgJmluZm8pOyBcCi0g
ICAgfQotCi0jZGVmaW5lIEZJTExfUEFSRU5UX1BST1BFUlRJRVMocGFyZW50RXZlbnRUeXBlKSBc
Ci0gICAgaWYgKCFmaWxsIyNwYXJlbnRFdmVudFR5cGUjI0luaXQoZXZlbnRJbml0LCBvcHRpb25z
KSkgXAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSNkZWZpbmUgRklMTF9QUk9QRVJUWShwcm9w
ZXJ0eU5hbWUpIFwKLSAgICBvcHRpb25zLmdldCgjcHJvcGVydHlOYW1lLCBldmVudEluaXQucHJv
cGVydHlOYW1lKTsgLy8gVGhpcyBjYW4gZmFpbCBidXQgaXQgaXMgT0suCi0KLUlOU1RBTlRJQVRF
X0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUl9GT1JfRVZFTlQoRElDVElPTkFSWV9TVEFSVCwgRElD
VElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpCi1JTlNU
QU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX0NVU1RPTV9FVkVOVChESUNUSU9O
QVJZX1NUQVJULCBESUNUSU9OQVJZX0VORCwgRklMTF9QQVJFTlRfUFJPUEVSVElFUywgRklMTF9Q
Uk9QRVJUWSkKLUlOU1RBTlRJQVRFX0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUl9GT1JfUFJPR1JF
U1NfRVZFTlQoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BS
T1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpCi1JTlNUQU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RS
VUNUT1JfRk9SX1dFQktJVF9BTklNQVRJT05fRVZFTlQoRElDVElPTkFSWV9TVEFSVCwgRElDVElP
TkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpCi1JTlNUQU5U
SUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX0hBU0hfQ0hBTkdFX0VWRU5UKERJQ1RJ
T05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxM
X1BST1BFUlRZKQotSU5TVEFOVElBVEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9DTE9T
RV9FVkVOVChESUNUSU9OQVJZX1NUQVJULCBESUNUSU9OQVJZX0VORCwgRklMTF9QQVJFTlRfUFJP
UEVSVElFUywgRklMTF9QUk9QRVJUWSkKLUlOU1RBTlRJQVRFX0lOSVRJQUxJWklOR19DT05TVFJV
Q1RPUl9GT1JfUEFHRV9UUkFOU0lUSU9OX0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05B
UllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKQotSU5TVEFOVElB
VEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9FUlJPUl9FVkVOVChESUNUSU9OQVJZX1NU
QVJULCBESUNUSU9OQVJZX0VORCwgRklMTF9QQVJFTlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJU
WSkKLUlOU1RBTlRJQVRFX0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUl9GT1JfUE9QX1NUQVRFX0VW
RU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJU
SUVTLCBGSUxMX1BST1BFUlRZKQotSU5TVEFOVElBVEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9S
X0ZPUl9XRUJLSVRfVFJBTlNJVElPTl9FVkVOVChESUNUSU9OQVJZX1NUQVJULCBESUNUSU9OQVJZ
X0VORCwgRklMTF9QQVJFTlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJUWSkKLUlOU1RBTlRJQVRF
X0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUl9GT1JfQkVGT1JFX0xPQURfRVZFTlQoRElDVElPTkFS
WV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJP
UEVSVFkpCi1JTlNUQU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX09WRVJGTE9X
X0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9Q
RVJUSUVTLCBGSUxMX1BST1BFUlRZKQotSU5TVEFOVElBVEVfSU5JVElBTElaSU5HX0NPTlNUUlVD
VE9SX0ZPUl9NRVNTQUdFX0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBG
SUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKQotSU5TVEFOVElBVEVfSU5JVElB
TElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9UUkFDS19FVkVOVChESUNUSU9OQVJZX1NUQVJULCBESUNU
SU9OQVJZX0VORCwgRklMTF9QQVJFTlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJUWSkKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JlZm9y
ZUxvYWRFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2ZW50LmlkbApp
bmRleCAyMzA4ZDAxNjEyMzYzNDI1YWMwOWYwNmQ3MzgyMGY3M2Y1NGQzMTdjLi40MGM4Yjc3NTQ2
ZThiNWE4OTMxYjA0NmE2ZWM5ZWZiOGIwYjFiM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQmVmb3JlTG9hZEV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQmVmb3Jl
TG9hZEV2ZW50LmlkbApAQCAtMjcsOSArMjcsOSBAQAogbW9kdWxlIGV2ZW50cyB7CiAKICAgICBp
bnRlcmZhY2UgWwotICAgICAgICBDdXN0b21Db25zdHJ1Y3RvcgorICAgICAgICBDdXN0b21Db25z
dHJ1Y3Rvcj1FdmVudAogICAgIF0gQmVmb3JlTG9hZEV2ZW50IDogRXZlbnQgewotICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVybDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFtJbml0aWFsaXplZEF0Q29uc3RydWN0b3JdIERPTVN0cmluZyB1cmw7CiAgICAgfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DdXN0b21FdmVudC5pZGwKaW5kZXggZDAyODgwNTJhYjJhZjc2Yjk4ZjRm
OGNlY2YwM2E3ZmFmODIyZmI3NS4uZTY0NDZmNDEzNmEwOGE4YzM2MDFmMWFmYTgxYmFkODEzYWRm
YTEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaWRsCkBAIC0yOCwxMCArMjgsMTAgQEAg
bW9kdWxlIGV2ZW50cyB7CiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfQ1BQKSB8fCAhTEFOR1VBR0Vf
Q1BQCiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMzoKICAgICBpbnRlcmZhY2UgWwot
ICAgICAgICBDdXN0b21Db25zdHJ1Y3RvcgorICAgICAgICBDdXN0b21Db25zdHJ1Y3Rvcj1FdmVu
dAogICAgIF0gQ3VzdG9tRXZlbnQgOiBFdmVudCB7CiAKLSAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NT2JqZWN0IGRldGFpbDsKKyAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxp
emVkQXRDb25zdHJ1Y3Rvcl0gRE9NT2JqZWN0IGRldGFpbDsKIAogICAgICAgIHZvaWQgaW5pdEN1
c3RvbUV2ZW50KGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIHR5
cGVBcmcsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0
aERlZmF1bHRWYWx1ZV0gYm9vbGVhbiBjYW5CdWJibGVBcmcsIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0Vycm9yRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vycm9yRXZl
bnQuaWRsCmluZGV4IDJmY2UzMWYwMWJjZDkzM2NhZmMzMWU4NTZhMjhjN2RkYzhkMzg1MjMuLmQw
ZmJkMGIzYjg3YTljMWJjMDI4ZTFlOWM4MmRlYmIwZDViNjQzYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FcnJvckV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXJy
b3JFdmVudC5pZGwKQEAgLTMyLDExICszMiwxMSBAQCBtb2R1bGUgZXZlbnRzIHsKIAogICAgIGlu
dGVyZmFjZSBbCiAgICAgICAgIE5vU3RhdGljVGFibGVzLAotICAgICAgICBDdXN0b21Db25zdHJ1
Y3RvcgorICAgICAgICBDdXN0b21Db25zdHJ1Y3Rvcj1FdmVudAogICAgIF0gRXJyb3JFdmVudCA6
IEV2ZW50IHsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBtZXNzYWdlOwot
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZpbGVuYW1lOwotICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsaW5lbm87CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRBdENvbnN0cnVjdG9yXSBET01TdHJpbmcgbWVzc2FnZTsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEF0Q29uc3RydWN0b3JdIERP
TVN0cmluZyBmaWxlbmFtZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXpl
ZEF0Q29uc3RydWN0b3JdIHVuc2lnbmVkIGxvbmcgbGluZW5vOwogICAgIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnQuaWRsCmluZGV4IGYyMjgyOGM0ZTU2MGUwZDZhYzQ4Yjk1NjM1YWYzZjU1MzdmOWJkNzMu
LjJiZTBhMWQ0Yzk2N2RkODVhNjFhNWI1ZTRlNGIyNjg5YWM3YmQwZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
LmlkbApAQCAtMjMsNyArMjMsNyBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAvLyBJbnRyb2R1Y2Vk
IGluIERPTSBMZXZlbCAyOgogICAgIGludGVyZmFjZSBbCiAgICAgICAgIEN1c3RvbVRvSlMsCi0g
ICAgICAgIEN1c3RvbUNvbnN0cnVjdG9yLAorICAgICAgICBDdXN0b21Db25zdHJ1Y3Rvcj1FdmVu
dCwKICAgICAgICAgTm9TdGF0aWNUYWJsZXMsCiAgICAgICAgIFBvbHltb3JwaGljCiAgICAgXSBF
dmVudCB7CkBAIC01Nyw4ICs1Nyw4IEBAIG1vZHVsZSBldmVudHMgewogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRXZlbnRUYXJnZXQgICAgICB0YXJnZXQ7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBFdmVudFRhcmdldCAgICAgIGN1cnJlbnRUYXJnZXQ7CiAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCAgIGV2ZW50UGhhc2U7Ci0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuICAgICAgICAgIGJ1YmJsZXM7Ci0gICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuICAgICAgICAgIGNhbmNlbGFibGU7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBbSW5pdGlhbGl6ZWRBdENvbnN0cnVjdG9yXSBib29sZWFuIGJ1YmJsZXM7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRBdENvbnN0cnVjdG9yXSBib29sZWFu
IGNhbmNlbGFibGU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01UaW1lU3RhbXAgICAg
IHRpbWVTdGFtcDsKIAogICAgICAgICB2b2lkICAgICAgICAgICAgICAgc3RvcFByb3BhZ2F0aW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaWRsCmluZGV4IDc0NWUyNzVlM2Mw
MmMzNjk5ZjA4ZTQ2MzZiMzJjZTc2NTk2NjQ4OTEuLmVkNTk5MzI4NWZhNGFkYmE2MzNmM2VkZWQ4
MWYxOWU5MTIzNGZlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9IYXNoQ2hhbmdl
RXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaWRsCkBA
IC0yMSwxNSArMjEsMTUgQEAgbW9kdWxlIGV2ZW50cyB7CiAKICAgICAvLyBJbnRyb2R1Y2VkIGlu
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlw
YWdlL2hpc3RvcnkuaHRtbCNldmVudC1oYXNoY2hhbmdlCiAgICAgaW50ZXJmYWNlIFsKLSAgICAg
ICAgQ3VzdG9tQ29uc3RydWN0b3IKKyAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3I9RXZlbnQKICAg
ICBdIEhhc2hDaGFuZ2VFdmVudCA6IEV2ZW50IHsKICAgICAgICAgdm9pZCBpbml0SGFzaENoYW5n
ZUV2ZW50KGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIHR5cGUs
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRo
RGVmYXVsdFZhbHVlXSBib29sZWFuIGNhbkJ1YmJsZSwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGJvb2xlYW4gY2Fu
Y2VsYWJsZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9
Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyBvbGRVUkwsIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01T
dHJpbmcgbmV3VVJMKTsgCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgb2xk
VVJMOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5ld1VSTDsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEF0Q29uc3RydWN0b3JdIERPTVN0cmlu
ZyBvbGRVUkw7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRBdENvbnN0
cnVjdG9yXSBET01TdHJpbmcgbmV3VVJMOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5pZGwKaW5kZXggNTI3ZmMwMGZlMzJmZmI5ZjE3N2NjOTkyM2I4ZTZiY2U4NWRkYjc5
MS4uMWZhMDIyYTZiMmQwNDY5OTNiZTlkMzI2ZTA0NjBlZmNiN2U4NmY0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5pZGwKQEAgLTI5LDE0ICsyOSwxNCBAQCBtb2R1bGUgZXZlbnRzIHsK
IAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIE5vU3RhdGljVGFibGVzLAotICAgICAgICBDdXN0
b21Db25zdHJ1Y3RvcgorICAgICAgICBDdXN0b21Db25zdHJ1Y3Rvcj1FdmVudAogICAgIF0gTWVz
c2FnZUV2ZW50IDogRXZlbnQgewotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IG9yaWdpbjsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYXN0RXZlbnRJ
ZDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVdpbmRvdyBzb3VyY2U7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRBdENvbnN0cnVjdG9yXSBET01TdHJpbmcg
b3JpZ2luOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQXRDb25zdHJ1
Y3Rvcl0gRE9NU3RyaW5nIGxhc3RFdmVudElkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W0luaXRpYWxpemVkQXRDb25zdHJ1Y3Rvcl0gRE9NV2luZG93IHNvdXJjZTsKICNpZiBkZWZpbmVk
KExBTkdVQUdFX0pBVkFTQ1JJUFQpICYmIExBTkdVQUdFX0pBVkFTQ1JJUFQKLSAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtDYWNoZWRBdHRyaWJ1dGUsIEN1c3RvbUdldHRlcl0gRE9NT2JqZWN0
IGRhdGE7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSBBcnJheSBw
b3J0czsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEF0Q29uc3RydWN0
b3IsIENhY2hlZEF0dHJpYnV0ZSwgQ3VzdG9tR2V0dGVyXSBET01PYmplY3QgZGF0YTsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEF0Q29uc3RydWN0b3IsIEN1c3RvbUdl
dHRlcl0gQXJyYXkgcG9ydHM7CiAKICAgICAgICAgW0N1c3RvbV0gdm9pZCBpbml0TWVzc2FnZUV2
ZW50KGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gRE9NU3RyaW5nIHR5cGVBcmcs
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNh
bGxXaXRoRGVmYXVsdFZhbHVlXSBib29sZWFuIGNhbkJ1YmJsZUFyZywgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZsb3dFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
T3ZlcmZsb3dFdmVudC5pZGwKaW5kZXggYmU0ZGZlYTNjOTZlZDk1ZTI2MjhjOTM4MjI0MjYxZTll
NjhhOWVjNi4uYmQxZjQxNTQyNmEyNjNiYzVjOGNiZjIyOTY4NGM0MjI4ZmM5NWIzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9PdmVyZmxvd0V2ZW50LmlkbApAQCAtMjYsMTUgKzI2LDE1IEBACiBtb2R1bGUg
ZXZlbnRzIHsKIAogICAgIGludGVyZmFjZSBbCi0gICAgICAgIEN1c3RvbUNvbnN0cnVjdG9yCisg
ICAgICAgIEN1c3RvbUNvbnN0cnVjdG9yPUV2ZW50CiAgICAgXSBPdmVyZmxvd0V2ZW50IDogRXZl
bnQgewogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBIT1JJWk9OVEFMID0gMDsKICAgICAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgVkVSVElDQUwgICA9IDE7CiAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IEJPVEggICAgICAgPSAyOwogICAgICAgICAKLSAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IG9yaWVudDsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gaG9yaXpvbnRhbE92ZXJmbG93OwotICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiB2ZXJ0aWNhbE92ZXJmbG93OyAgICAgICAgCisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBbSW5pdGlhbGl6ZWRBdENvbnN0cnVjdG9yXSB1bnNpZ25lZCBzaG9ydCBvcmllbnQ7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRBdENvbnN0cnVjdG9yXSBi
b29sZWFuIGhvcml6b250YWxPdmVyZmxvdzsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJ
bml0aWFsaXplZEF0Q29uc3RydWN0b3JdIGJvb2xlYW4gdmVydGljYWxPdmVyZmxvdzsgICAKIAog
I2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9D
CiAgICAgICAgIHZvaWQgaW5pdE92ZXJmbG93RXZlbnQoaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVm
YXVsdFZhbHVlXSB1bnNpZ25lZCBzaG9ydCBvcmllbnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGFn
ZVRyYW5zaXRpb25FdmVudC5pZGwKaW5kZXggMmQxODNmZDY2NzU2NGMyZjU0MzM4MTI3N2M0ZGFi
MmU1OTQ4NWMzNC4uNjRkYmJiNjA5ZjgzNWMzY2Y2OTQ2ZGE2N2I1ZGUwY2M2YWMxMWVkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmlkbApAQCAtMjYsOSArMjYs
OSBAQAogbW9kdWxlIGV2ZW50cyB7CiAKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21D
b25zdHJ1Y3RvcgorICAgICAgICBDdXN0b21Db25zdHJ1Y3Rvcj1FdmVudAogICAgIF0gUGFnZVRy
YW5zaXRpb25FdmVudCA6IEV2ZW50IHsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gcGVyc2lzdGVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQXRD
b25zdHJ1Y3Rvcl0gYm9vbGVhbiBwZXJzaXN0ZWQ7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9t
L1BvcFN0YXRlRXZlbnQuaWRsCmluZGV4IDk5OTlmNmZjY2M5ZWM0ZmE5ZTJhOTA5Yzg0ZjZlY2Qz
NmIzYzY1ZmQuLjBiMWE2YzRkMzEzNjIyM2VkZmI4Yjk0NDQ0YjMxZWZlNjRlNzczMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5pZGwKQEAgLTI4LDkgKzI4LDkgQEAgbW9kdWxlIGV2
ZW50cyB7CiAKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9DUFApIHx8ICFMQU5HVUFHRV9DUFAKICAg
ICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21Db25zdHJ1Y3RvcgorICAgICAgICBDdXN0b21D
b25zdHJ1Y3Rvcj1FdmVudAogICAgIF0gUG9wU3RhdGVFdmVudCA6IEV2ZW50IHsKLSAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21HZXR0ZXJdIERPTU9iamVjdCBzdGF0ZTsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEF0Q29uc3RydWN0b3IsIEN1c3RvbUdl
dHRlcl0gRE9NT2JqZWN0IHN0YXRlOwogICAgIH07CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1By
b2dyZXNzRXZlbnQuaWRsCmluZGV4IGQ5NjlhNTAzYzc3MTAyM2EwNjdhZDFlZTEwNzQ2YjY2NWVh
MDEzMTAuLjVlOTAzMmY0OTNkMzE0NjI2OGUxZmZlNTFhZmVmYWFmMGRiOTk0MjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUHJvZ3Jlc3NFdmVudC5pZGwKQEAgLTI2LDExICsyNiwxMSBAQAogbW9kdWxlIGV2
ZW50cyB7CiAKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBDdXN0b21Db25zdHJ1Y3RvcgorICAg
ICAgICBDdXN0b21Db25zdHJ1Y3Rvcj1FdmVudAogICAgIF0gUHJvZ3Jlc3NFdmVudCA6IEV2ZW50
IHsKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbGVuZ3RoQ29tcHV0YWJsZTsK
LSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBsb2FkZWQ7Ci0g
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWw7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRBdENvbnN0cnVjdG9yXSBib29sZWFu
IGxlbmd0aENvbXB1dGFibGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6
ZWRBdENvbnN0cnVjdG9yXSB1bnNpZ25lZCBsb25nIGxvbmcgbG9hZGVkOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQXRDb25zdHJ1Y3Rvcl0gdW5zaWduZWQgbG9uZyBs
b25nIHRvdGFsOwogCiAgICAgICAgIHZvaWQgaW5pdFByb2dyZXNzRXZlbnQoaW4gW09wdGlvbmFs
PUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgdHlwZUFyZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIGJvb2xl
YW4gY2FuQnViYmxlQXJnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFu
aW1hdGlvbkV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVu
dC5pZGwKaW5kZXggZTUwZWU5MTJlOTU1ZDZmNWRhOGNmOTdjMDM4YWEzMTI2NWIxNTVhMS4uNDRm
NjVjMjNiNjA3YzVkY2YxOTkwNjk5OWNkYTQ2ZjRkZjhkNDhjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsCkBAIC0yNiwxMCArMjYsMTAgQEAKIG1vZHVs
ZSBldmVudHMgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3IK
KyAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3I9RXZlbnQKICAgICBdIFdlYktpdEFuaW1hdGlvbkV2
ZW50IDogRXZlbnQgewotICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgICAg
IGFuaW1hdGlvbk5hbWU7Ci0gICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgICAgICAgICAg
ICAgZWxhcHNlZFRpbWU7CisgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRBdENv
bnN0cnVjdG9yXSBET01TdHJpbmcgICAgICAgICAgYW5pbWF0aW9uTmFtZTsKKyAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEF0Q29uc3RydWN0b3JdIGRvdWJsZSAgICAgICAgICAg
ICBlbGFwc2VkVGltZTsKICAgICAgdm9pZCAgICAgICAgICAgICAgIGluaXRXZWJLaXRBbmltYXRp
b25FdmVudChpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIERPTVN0cmluZyB0eXBl
QXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRp
b25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gYm9vbGVhbiBjYW5CdWJibGVBcmcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRo
RGVmYXVsdFZhbHVlXSBib29sZWFuIGNhbmNlbGFibGVBcmcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsCmluZGV4IGM4Y2ZkZmU5ODkzMjdlNjE0YzkzMWVm
NjMzN2Y0Mjg5ZTJhZmNkZTAuLjAzYWNmZThlNzZkZmUwYTQ1ODYzYzJmOTU1MjA0NDVlY2Y4NmFh
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsCkBA
IC0yNiwxMCArMjYsMTEgQEAKIG1vZHVsZSBldmVudHMgewogCiAgICAgaW50ZXJmYWNlIFsKLSAg
ICAgICAgQ3VzdG9tQ29uc3RydWN0b3IKKyAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3I9RXZlbnQK
ICAgICBdIFdlYktpdFRyYW5zaXRpb25FdmVudCA6IEV2ZW50IHsKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nICAgICAgICAgIHByb3BlcnR5TmFtZTsKLSAgICByZWFkb25seSBhdHRy
aWJ1dGUgZG91YmxlICAgICAgICAgICAgIGVsYXBzZWRUaW1lOworICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBbSW5pdGlhbGl6ZWRBdENvbnN0cnVjdG9yXSBET01TdHJpbmcgICAgICAgICAgcHJvcGVy
dHlOYW1lOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRBdENvbnN0cnVjdG9y
XSBkb3VibGUgICAgICAgICAgICAgZWxhcHNlZFRpbWU7CisKICAgICB2b2lkICAgICAgICAgICAg
ICAgaW5pdFdlYktpdFRyYW5zaXRpb25FdmVudChpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZhdWx0
VmFsdWVdIERPTVN0cmluZyB0eXBlQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gYm9v
bGVhbiBjYW5CdWJibGVBcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBib29sZWFuIGNh
bmNlbGFibGVBcmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNr
RXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbAppbmRl
eCAxYzI3NzI5ZWZkMTJiYjIwNjgyYjkxZWI1MWNkZmU5NDEwODFkMTE2Li5kMGFlMjY2ZTBmMTAw
Njc1MjZmOTJhMzkzZjAzNWQ3NWJlOTVhNmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VHJhY2tFdmVudC5pZGwKQEAgLTI4LDExICsyOCw5IEBAIG1vZHVsZSBodG1sIHsKICAgICBpbnRl
cmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKICAgICAgICAgRW5hYmxl
ZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrLAotICAgICAgICBDdXN0b21Db25zdHJ1Y3Rvcgor
ICAgICAgICBDdXN0b21Db25zdHJ1Y3Rvcj1FdmVudAogICAgIF0gVHJhY2tFdmVudCA6IEV2ZW50
IHsKLQotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3RvbUdldHRlcl0gb2JqZWN0IHRy
YWNrOwotCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRBdENvbnN0cnVj
dG9yLCBDdXN0b21HZXR0ZXJdIG9iamVjdCB0cmFjazsKICAgICB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmlkbAppbmRleCAzMjY4MzRhMGRhZjEyYjRkZmFlYWM2
NzE4OWMyNjZlOGYyNzUyMzU3Li5kNWUyNjhjMDczYzYxNmYwNTk0OTg5OTUxNDRmNDZjMDgyYTVi
ZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwKQEAgLTMyLDEx
ICszMiwxMSBAQCBtb2R1bGUgZXZlbnRzIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIE5v
U3RhdGljVGFibGVzLAotICAgICAgICBDdXN0b21Db25zdHJ1Y3RvcgorICAgICAgICBDdXN0b21D
b25zdHJ1Y3Rvcj1FdmVudAogICAgIF0gQ2xvc2VFdmVudCA6IEV2ZW50IHsKLSAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2FzQ2xlYW47Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBzaG9ydCBjb2RlOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0Nv
bnZlcnRpbmdOdWxsU3RyaW5nVG89VW5kZWZpbmVkXSBET01TdHJpbmcgcmVhc29uOworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQXRDb25zdHJ1Y3Rvcl0gYm9vbGVhbiB3
YXNDbGVhbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEF0Q29uc3Ry
dWN0b3JdIHVuc2lnbmVkIHNob3J0IGNvZGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBb
SW5pdGlhbGl6ZWRBdENvbnN0cnVjdG9yLCBDb252ZXJ0aW5nTnVsbFN0cmluZ1RvPVVuZGVmaW5l
ZF0gRE9NU3RyaW5nIHJlYXNvbjsKICAgICB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114906</attachid>
            <date>2011-11-14 02:50:12 -0800</date>
            <delta_ts>2011-11-14 02:50:12 -0800</delta_ts>
            <desc>WIP: An overview patch for JSC</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>49603</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OWZjMjE0Li45ODEyZjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzUg
QEAKIDIwMTEtMTEtMTQgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIFJlbW92ZSBhbGwgY3VzdG9tIGNvbnN0cnVjdG9ycyBvZiBFdmVudHMgaW4gSlNDCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTM3OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gTWFrZXMgQ29k
ZUdlbmVyYXRvckpTLnBtIGdlbmVyYXRlIEV2ZW50IGNvbnN0cnVjdG9ycworICAgICAgICBpZiBb
Q29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudF0gSURMIGlzIHNwZWNpZmllZC4KKyAgICAgICAgLSBS
ZW1vdmVzIEV2ZW50Q29uc3RydWN0b3JzLmggYW5kIEpTRXZlbnRDb25zdHJ1Y3RvcnMuY3BwLgor
ICAgICAgICAtIFJlcGxhY2VzIGFsbCBKU0MgY3VzdG9tIGNvbnN0cnVjdG9ycyBvZiBFdmVudHMK
KyAgICAgICAgd2l0aCB0aGUgZ2VuZXJhdGVkIGNvZGUgYnkgW0NvbnN0cnVjdG9yVGVtcGxhdGU9
RXZlbnRdIElETC4KKworICAgICAgICBUZXN0czogZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL2Jl
Zm9yZS1sb2FkLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZl
bnRzL2NvbnN0cnVjdG9ycy9jbG9zZS1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvY3VzdG9tLWV2ZW50LWNvbnN0cnVjdG9yLmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9lcnJvci1ldmVudC1j
b25zdHJ1Y3Rvci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMv
ZXZlbnQtY29uc3RydWN0b3JzLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2NvbnN0
cnVjdG9ycy9oYXNoLWNoYW5nZS1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvbWVzc2FnZS1ldmVudC1jb25zdHJ1Y3Rvci5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvb3ZlcmZsb3ctZXZlbnQt
Y29uc3RydWN0b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMvY29uc3RydWN0b3Jz
L3BhZ2UtdHJhbnNpdGlvbi1ldmVudC1jb25zdHJ1Y3Rvci5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMvcG9wLXN0YXRlLWV2ZW50LWNvbnN0cnVjdG9yLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZXZlbnRzL2NvbnN0cnVjdG9ycy9wcm9ncmVzcy1ldmVudC1j
b25zdHJ1Y3Rvci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9jb25zdHJ1Y3RvcnMv
dHJhY2stZXZlbnQtY29uc3RydWN0b3IuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9ldmVudHMv
Y29uc3RydWN0b3JzL3dlYmtpdC1hbmltYXRpb24tZXZlbnQtY29uc3RydWN0b3IuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9ldmVudHMvY29uc3RydWN0b3JzL3dlYmtpdC10cmFuc2l0aW9uLWV2
ZW50LWNvbnN0cnVjdG9yLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvRXZlbnRD
b25zdHJ1Y3RvcnMuaDogUmVtb3ZlZC4gVGhpcyBpcyB3aGF0IHdlIHdhbnRlZCB0byBkbyBpbiB0
aGlzIHBhdGNoLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRDb25zdHJ1Y3RvcnMuY3Bw
OiBEaXR0by4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBSZW1vdmVkIEV2ZW50Q29u
c3RydWN0b3JzLmggYW5kIEpTRXZlbnRDb25zdHJ1Y3RvcnMuY3BwLgorICAgICAgICAqIFRhcmdl
dC5wcmk6IERpdHRvLgorICAgICAgICAqIFVzZUpTQy5jbWFrZTogRGl0dG8uCisgICAgICAgICog
V2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOiBE
aXR0by4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgor
ICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOiBBZGRlZCBKU0RpY3Rpb25hcnkuaC4KKyAgICAgICAg
KEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbik6IEFkZGVkIGEgaGVhZGVyIGZvciBmaWxs
WFhYWEV2ZW50SW5pdCguLi4pLgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRp
b24pOiBHZW5lcmF0ZXMgYW4gRXZlbnQgY29uc3RydWN0b3IuIFRoZSBnZW5lcmF0ZWQgY29kZSBp
cyB0aGUgc2FtZSBhcyB0aGUgY29kZSB0aGF0IGhhZCBiZWVuIHdyaXR0ZW4gaW4gSlNFdmVudENv
bnN0cnVjdG9ycy5jcHAuCisgICAgICAgIChJc0NvbnN0cnVjdGFibGUpOiBKdWRnZXMgaWYgYSBn
aXZlbiBpbnRlcmZhY2UgaXMgY29uc3RydWN0YWJsZS4KKyAgICAgICAgKElzQ29uc3RydWN0b3JU
ZW1wbGF0ZSk6IEp1ZGdlcyBpZiBhIGdpdmVuIGludGVyZmFjZSBoYXMgYSBnaXZlbiB0ZW1wbGF0
ZSwgZS5nLiBqdWRnZXMgaWYgYW4gaW50ZXJmYWNlIGhhcyBbQ29uc3RydWN0b3JUZW1wbGF0ZT1F
dmVudF0uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEV2ZW50Q29uc3Ry
dWN0b3IuaWRsOiBDaGFuZ2VkICdDdXN0b21Db25zdHJ1Y3Rvcj1FdmVudCcgdG8gJ0NvbnN0cnVj
dG9yVGVtcGxhdGU9RXZlbnQnLiBXZSBzaG91bGQgaGF2ZSBjaGFuZ2VkIHRoaXMgaW4gcjEwMDEw
OC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHA6IFVwZGF0ZWQgYSBydW4tYmluZGluZ3MtdGVzdHMgcmVzdWx0LgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rl
c3RFdmVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxUZXN0RXZlbnRDb25z
dHJ1Y3RvckluaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
dmVudENvbnN0cnVjdG9yLmg6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OmZpbGxUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmg6IERpdHRvLgorCisg
ICAgICAgICogZG9tL0JlZm9yZUxvYWRFdmVudC5pZGw6IEluIGVzc2VuY2UsIHJlcGxhY2VkIFtK
U0N1c3RvbUNvbnN0cnVjdG9yXSBJREwgd2l0aCBbSlNDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50
XSBJREwuCisgICAgICAgICogZG9tL0N1c3RvbUV2ZW50LmlkbDogRGl0dG8uCisgICAgICAgICog
ZG9tL0Vycm9yRXZlbnQuaWRsOiBEaXR0by4KKyAgICAgICAgKiBkb20vRXZlbnQuaWRsOiBEaXR0
by4KKyAgICAgICAgKiBkb20vSGFzaENoYW5nZUV2ZW50LmlkbDogRGl0dG8uCisgICAgICAgICog
ZG9tL01lc3NhZ2VFdmVudC5pZGw6IERpdHRvLgorICAgICAgICAqIGRvbS9PdmVyZmxvd0V2ZW50
LmlkbDogRGl0dG8uCisgICAgICAgICogZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaWRsOiBEaXR0
by4KKyAgICAgICAgKiBkb20vUG9wU3RhdGVFdmVudC5pZGw6IERpdHRvLgorICAgICAgICAqIGRv
bS9Qcm9ncmVzc0V2ZW50LmlkbDogRGl0dG8uCisgICAgICAgICogZG9tL1dlYktpdEFuaW1hdGlv
bkV2ZW50LmlkbDogRGl0dG8uCisgICAgICAgICogZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5p
ZGw6IERpdHRvLgorICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tFdmVudC5pZGw6IERpdHRvLgor
ICAgICAgICAqIHdlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGw6IERpdHRvLgorCisyMDExLTExLTE0
ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKwogICAgICAgICBSZW1vdmUg
YWxsIGN1c3RvbSBjb25zdHJ1Y3RvcnMgb2YgRXZlbnRzIGluIFY4CiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjA3NAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQppbmRleCAwM2QzNzBjLi44N2ZiMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTY4OCw3ICs2ODgsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5QmFzZS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQmluZGluZ1NlY3VyaXR5QmFzZS5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0JpbmRpbmdTZWN1cml0eS5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvR2VuZXJpY0JpbmRpbmcuaCBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggXApA
QCAtNzYzLDcgKzc2Miw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFbnRyeUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRW50cnlTeW5jQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudEN1c3RvbS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRD
b25zdHJ1Y3RvcnMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlz
dGVuZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggYjZhZmMxNi4uZDI1Mzc5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yODEsNyArMjgx
LDYgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcCBcCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5n
cy9qcy9KU0Vycm9ySGFuZGxlci5jcHAgXAotICAgICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50Q29u
c3RydWN0b3JzLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwIFwK
ICAgICAgICAgYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwIFwKQEAgLTEzMzYsNyArMTMzNSw2IEBAIEhFQURFUlMg
Kz0gXAogICAgIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIFwKICAgICBiaW5kaW5ncy9T
Y3JpcHRDb250cm9sbGVyQmFzZS5oIFwKICAgICBiaW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNh
bGxiYWNrLmggXAotICAgIGJpbmRpbmdzL2dlbmVyaWMvRXZlbnRDb25zdHJ1Y3RvcnMuaCBcCiAg
ICAgYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKIAogdjggewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNl
SlNDLmNtYWtlCmluZGV4IDMzYjczODYuLjdjYjA2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1VzZUpTQy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTUy
LDcgKzUyLDYgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMv
SlNEb2N1bWVudEN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3Bw
CiAgICAgYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCi0gICAgYmluZGluZ3MvanMvSlNF
dmVudENvbnN0cnVjdG9ycy5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0V2
ZW50VGFyZ2V0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGYxMTBkYTkuLmI0YTUzZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTE3NjEsNyArMTc2MSw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3Mv
Z2VuZXJpYy9CaW5kaW5nU2VjdXJpdHkuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvZ2VuZXJp
Yy9CaW5kaW5nU2VjdXJpdHlCYXNlLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvZ2VuZXJp
Yy9CaW5kaW5nU2VjdXJpdHlCYXNlLmgnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL2dlbmVyaWMv
RXZlbnRDb25zdHJ1Y3RvcnMuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvZ2VuZXJpYy9HZW5l
cmljQmluZGluZy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCcsCkBAIC0xODUwLDcgKzE4NDksNiBAQAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL0pTRW50cnlTeW5jQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNFcnJvckhhbmRsZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0Vycm9y
SGFuZGxlci5oJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0V2ZW50Q29uc3RydWN0b3Jz
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMWYxMzA3Yi4uZTM4N2EyMSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTU4MjI5LDEwICs1
ODIyOSw2IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxiaW5kaW5nc1xnZW5lcmljXEV2ZW50Q29uc3RydWN0b3JzLmgiCi0JCQkJCT4KLQkJ
CQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xnZW5l
cmljXEdlbmVyaWNCaW5kaW5nLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC02MDg0OSw1OCAr
NjA4NDUsNiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcSlNFdmVudENvbnN0cnVjdG9ycy5jcHAiCi0JCQkJCT4KLQkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKLQkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJPgotCQkJCQkJPFRvb2wKLQkJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJLz4KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
LQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgotCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCi0JCQkJCQk+Ci0JCQkJCQk8VG9vbAotCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCQkJCQkvPgotCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgotCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KLQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NG
TGl0ZXxXaW4zMiIKLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJPgotCQkJ
CQkJPFRvb2wKLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkJLz4KLQkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCQlOYW1l
PSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKLQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgotCQkJCQkJPgotCQkJCQkJPFRvb2wKLQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgotCQkJCQkJLz4KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJCQkJPEZpbGVDb25maWd1
cmF0aW9uCi0JCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCi0JCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKLQkJCQkJCT4KLQkJCQkJCTxUb29sCi0JCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKLQkJCQkJCS8+Ci0JCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgotCQkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKLQkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQkJPgotCQkJCQkJPFRvb2wKLQkJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgotCQkJCQkJLz4KLQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KLQkJ
CQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xK
U0V2ZW50Q3VzdG9tLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAy
YTIwYzg5Li5hYjIyMDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC01Mjg1LDggKzUyODUsNiBAQAogCQlCQ0UxQzQ0MDBEOTgz
MEY0MDAzQjAyRjIgLyogSlNMb2NhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0UxQzQzRjBEOTgzMEY0MDAzQjAyRjIgLyogSlNM
b2NhdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCUJDRTNCRUMyMEQyMjJCMUQwMDdFMDZFNCAvKiBU
YWdOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0UzQkVDMDBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuY3BwICovOyB9Owog
CQlCQ0UzQkVDMzBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTNCRUMxMEQyMjJCMUQwMDdFMDZF
NCAvKiBUYWdOb2RlTGlzdC5oICovOyB9OwotCQlCQ0U0Mzg5NzE0MEIwMDUxMDA1RTQzN0UgLyog
RXZlbnRDb25zdHJ1Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDRTQzODk2MTQwQjAwNTEwMDVFNDM3RSAvKiBFdmVudENvbnN0cnVjdG9ycy5o
ICovOyB9OwotCQlCQ0U0Mzg5QTE0MEIwMDczMDA1RTQzN0UgLyogSlNFdmVudENvbnN0cnVjdG9y
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0U0
Mzg5OTE0MEIwMDczMDA1RTQzN0UgLyogSlNFdmVudENvbnN0cnVjdG9ycy5jcHAgKi87IH07CiAJ
CUJDRTQzODlDMTQwQjFCQTgwMDVFNDM3RSAvKiBKU0RpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTQzODlCMTQwQjFCQTcwMDVFNDM3
RSAvKiBKU0RpY3Rpb25hcnkuaCAqLzsgfTsKIAkJQkNFNDM4QTIxNDBDMERDMDAwNUU0MzdFIC8q
IEpTRGljdGlvbmFyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0U0MzhBMTE0MEMwREJGMDA1RTQzN0UgLyogSlNEaWN0aW9uYXJ5LmNwcCAqLzsg
fTsKIAkJQkNFNDQxMzMxMkY3NDhFMjAwOUI4NEI4IC8qIFJlbmRlckNvbWJpbmVUZXh0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRTQ0MTMxMTJG
NzQ4RTIwMDlCODRCOCAvKiBSZW5kZXJDb21iaW5lVGV4dC5jcHAgKi87IH07CkBAIC0xMjU4MSw4
ICsxMjU3OSw2IEBACiAJCUJDRTFDNDNGMEQ5ODMwRjQwMDNCMDJGMiAvKiBKU0xvY2F0aW9uQ3Vz
dG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTG9jYXRpb25D
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0UzQkVDMDBEMjIyQjFE
MDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGFnTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
Q0UzQkVDMTBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGFnTm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQkNFNDM4OTYxNDBCMDA1MTAwNUU0MzdFIC8qIEV2ZW50Q29uc3RydWN0b3JzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEV2ZW50Q29uc3RydWN0b3JzLmg7IHBhdGgg
PSBnZW5lcmljL0V2ZW50Q29uc3RydWN0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUJDRTQzODk5MTQwQjAwNzMwMDVFNDM3RSAvKiBKU0V2ZW50Q29uc3RydWN0b3JzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXZlbnRDb25zdHJ1Y3RvcnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0U0Mzg5QjE0MEIxQkE3MDA1RTQz
N0UgLyogSlNEaWN0aW9uYXJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RGljdGlvbmFyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0U0MzhBMTE0MEMw
REJGMDA1RTQzN0UgLyogSlNEaWN0aW9uYXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRGljdGlvbmFyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDRTQ0MTMxMTJGNzQ4RTIwMDlCODRCOCAvKiBSZW5kZXJDb21iaW5lVGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJDb21iaW5lVGV4dC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTQxNyw3ICsxOTQxMyw2IEBACiAJCQkJ
QTYyMkE4RjUxMjJDNDRBNjAwQTc4NUIzIC8qIEJpbmRpbmdTZWN1cml0eS5oICovLAogCQkJCUE2
MjJBOEY2MTIyQzQ0QTYwMEE3ODVCMyAvKiBCaW5kaW5nU2VjdXJpdHlCYXNlLmNwcCAqLywKIAkJ
CQlBNjIyQThGNzEyMkM0NEE2MDBBNzg1QjMgLyogQmluZGluZ1NlY3VyaXR5QmFzZS5oICovLAot
CQkJCUJDRTQzODk2MTQwQjAwNTEwMDVFNDM3RSAvKiBFdmVudENvbnN0cnVjdG9ycy5oICovLAog
CQkJCUE2MjJBOEY5MTIyQzQ0QTYwMEE3ODVCMyAvKiBHZW5lcmljQmluZGluZy5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBnZW5lcmljOwpAQCAtMTk0ODYsNyArMTk0ODEsNiBAQAogCQkJCTY1RTBF
OTQzMTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCAqLywKIAkJCQlGM0Q0NjE0NjEx
NjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuY3BwICovLAogCQkJCUYzRDQ2MTQ3MTE2
MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9ySGFuZGxlci5oICovLAotCQkJCUJDRTQzODk5MTQwQjAw
NzMwMDVFNDM3RSAvKiBKU0V2ZW50Q29uc3RydWN0b3JzLmNwcCAqLywKIAkJCQlCQzYwOTAxRTBF
OTFCOEVDMDAwQzY4QjUgLyogSlNFdmVudFRhcmdldC5jcHAgKi8sCiAJCQkJQkM2MDkwMUQwRTkx
QjhFQzAwMEM2OEI1IC8qIEpTRXZlbnRUYXJnZXQuaCAqLywKIAkJCQkzMzE0QUNFOTEwODkyMDg2
MDAwRjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCAqLywKQEAgLTI0NjEyLDcgKzI0NjA2LDYg
QEAKIAkJCQlERjlBRkQ3MjEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1MDBGMzIxM0ZERTNCRTAwOTlF
QzI0IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMEEzQTcz
MTE0MDVBMzk4MDBGQjhFRDMgLyogUmVzb3VyY2VMb2FkZXJPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKLQkJCQlCQ0U0Mzg5NzE0MEIwMDUxMDA1RTQzN0UgLyogRXZlbnRDb25zdHJ1Y3RvcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRTQzODlDMTQwQjFCQTgwMDVFNDM3RSAvKiBKU0RpY3Rpb25h
cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NTMyMkFDMTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxl
Y3RvclF1ZXJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMTBCNjk4MDE0MEMxNzQwMDBCQzFDMjYg
LyogV2ViVlRUVG9rZW4uaCBpbiBIZWFkZXJzICovLApAQCAtMjc0NzQsNyArMjc0NjcsNiBAQAog
CQkJCTQ5OThBRUQ0MTNGQzQxN0YwMDkwQjFBQSAvKiBKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNh
bGxiYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMTQxNEI1MTNBMEYwNTAwMDE5
OTk2QyAvKiBXZWJLaXRGb250RmFtaWx5TmFtZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREY5
QUZENzMxM0ZDMzFEODAwMTVGRUI3IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0gaW4gU291cmNlcyAqLywKLQkJCQlCQ0U0Mzg5QTE0MEIwMDczMDA1RTQzN0UgLyogSlNF
dmVudENvbnN0cnVjdG9ycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0U0MzhBMjE0MEMwREMw
MDA1RTQzN0UgLyogSlNEaWN0aW9uYXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0NTMyMkFC
MTQwQ0UyNjcwMDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIxMEI2OTgxMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJWVFRUb2tlbml6ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0V2ZW50
Q29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0V2ZW50Q29u
c3RydWN0b3JzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMDE4YjMuLjAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9FdmVudENvbnN0cnVjdG9y
cy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IEV2ZW50Q29uc3RydWN0b3JzX2gKLSNkZWZpbmUgRXZlbnRDb25zdHJ1Y3RvcnNfaAotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLSNkZWZpbmUgSU5TVEFOVElBVEVfSU5JVElBTElaSU5HX0NPTlNU
UlVDVE9SX0ZPUl9FVkVOVChESUNUSU9OQVJZX1NUQVJULCBESUNUSU9OQVJZX0VORCwgRklMTF9Q
QVJFTlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJUWSkgXAotICAgIFwKLSAgICBESUNUSU9OQVJZ
X1NUQVJUKEV2ZW50KSBcCi0gICAgICAgIEZJTExfUFJPUEVSVFkoYnViYmxlcykgXAotICAgICAg
ICBGSUxMX1BST1BFUlRZKGNhbmNlbGFibGUpIFwKLSAgICBESUNUSU9OQVJZX0VORChFdmVudCkK
LQotI2RlZmluZSBJTlNUQU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX0NVU1RP
TV9FVkVOVChESUNUSU9OQVJZX1NUQVJULCBESUNUSU9OQVJZX0VORCwgRklMTF9QQVJFTlRfUFJP
UEVSVElFUywgRklMTF9QUk9QRVJUWSkgXAotICAgIFwKLSAgICBESUNUSU9OQVJZX1NUQVJUKEN1
c3RvbUV2ZW50KSBcCi0gICAgICAgIEZJTExfUEFSRU5UX1BST1BFUlRJRVMoRXZlbnQpIFwKLSAg
ICAgICAgRklMTF9QUk9QRVJUWShkZXRhaWwpIFwKLSAgICBESUNUSU9OQVJZX0VORChDdXN0b21F
dmVudCkKLQotI2RlZmluZSBJTlNUQU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9S
X1BST0dSRVNTX0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BB
UkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBcCi0gICAgXAotICAgIERJQ1RJT05BUllf
U1RBUlQoUHJvZ3Jlc3NFdmVudCkgXAotICAgICAgICBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTKEV2
ZW50KSBcCi0gICAgICAgIEZJTExfUFJPUEVSVFkobGVuZ3RoQ29tcHV0YWJsZSkgXAotICAgICAg
ICBGSUxMX1BST1BFUlRZKGxvYWRlZCkgXAotICAgICAgICBGSUxMX1BST1BFUlRZKHRvdGFsKSBc
Ci0gICAgRElDVElPTkFSWV9FTkQoUHJvZ3Jlc3NFdmVudCkKLQotI2RlZmluZSBJTlNUQU5USUFU
RV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX1dFQktJVF9BTklNQVRJT05fRVZFTlQoRElD
VElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJ
TExfUFJPUEVSVFkpIFwKLSAgICBcCi0gICAgRElDVElPTkFSWV9TVEFSVChXZWJLaXRBbmltYXRp
b25FdmVudCkgXAotICAgICAgICBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTKEV2ZW50KSBcCi0gICAg
ICAgIEZJTExfUFJPUEVSVFkoYW5pbWF0aW9uTmFtZSkgXAotICAgICAgICBGSUxMX1BST1BFUlRZ
KGVsYXBzZWRUaW1lKSBcCi0gICAgRElDVElPTkFSWV9FTkQoV2ViS2l0QW5pbWF0aW9uRXZlbnQp
Ci0KLSNkZWZpbmUgSU5TVEFOVElBVEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9IQVNI
X0NIQU5HRV9FVkVOVChESUNUSU9OQVJZX1NUQVJULCBESUNUSU9OQVJZX0VORCwgRklMTF9QQVJF
TlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJUWSkgXAotICAgIFwKLSAgICBESUNUSU9OQVJZX1NU
QVJUKEhhc2hDaGFuZ2VFdmVudCkgXAotICAgICAgICBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTKEV2
ZW50KSBcCi0gICAgICAgIEZJTExfUFJPUEVSVFkob2xkVVJMKSBcCi0gICAgICAgIEZJTExfUFJP
UEVSVFkobmV3VVJMKSBcCi0gICAgRElDVElPTkFSWV9FTkQoSGFzaENoYW5nZUV2ZW50KQotCi0j
ZGVmaW5lIElOU1RBTlRJQVRFX0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUl9GT1JfUEFHRV9UUkFO
U0lUSU9OX0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVO
VF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBcCi0gICAgXAotICAgIERJQ1RJT05BUllfU1RB
UlQoUGFnZVRyYW5zaXRpb25FdmVudCkgXAotICAgICAgICBGSUxMX1BBUkVOVF9QUk9QRVJUSUVT
KEV2ZW50KSBcCi0gICAgICAgIEZJTExfUFJPUEVSVFkocGVyc2lzdGVkKSBcCi0gICAgRElDVElP
TkFSWV9FTkQoUGFnZVRyYW5zaXRpb25FdmVudCkKLQotI2RlZmluZSBJTlNUQU5USUFURV9JTklU
SUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX1BPUF9TVEFURV9FVkVOVChESUNUSU9OQVJZX1NUQVJU
LCBESUNUSU9OQVJZX0VORCwgRklMTF9QQVJFTlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJUWSkg
XAotICAgIFwKLSAgICBESUNUSU9OQVJZX1NUQVJUKFBvcFN0YXRlRXZlbnQpIFwKLSAgICAgICAg
RklMTF9QQVJFTlRfUFJPUEVSVElFUyhFdmVudCkgXAotICAgICAgICBGSUxMX1BST1BFUlRZKHN0
YXRlKSBcCi0gICAgRElDVElPTkFSWV9FTkQoUG9wU3RhdGVFdmVudCkKLQotI2RlZmluZSBJTlNU
QU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX0VSUk9SX0VWRU5UKERJQ1RJT05B
UllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BS
T1BFUlRZKSBcCi0gICAgXAotICAgIERJQ1RJT05BUllfU1RBUlQoRXJyb3JFdmVudCkgXAotICAg
ICAgICBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTKEV2ZW50KSBcCi0gICAgICAgIEZJTExfUFJPUEVS
VFkobWVzc2FnZSkgXAotICAgICAgICBGSUxMX1BST1BFUlRZKGZpbGVuYW1lKSBcCi0gICAgICAg
IEZJTExfUFJPUEVSVFkobGluZW5vKSBcCi0gICAgRElDVElPTkFSWV9FTkQoRXJyb3JFdmVudCkK
LQotI2RlZmluZSBJTlNUQU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX0NMT1NF
X0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9Q
RVJUSUVTLCBGSUxMX1BST1BFUlRZKSBcCi0gICAgXAotICAgIERJQ1RJT05BUllfU1RBUlQoQ2xv
c2VFdmVudCkgXAotICAgICAgICBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTKEV2ZW50KSBcCi0gICAg
ICAgIEZJTExfUFJPUEVSVFkod2FzQ2xlYW4pIFwKLSAgICAgICAgRklMTF9QUk9QRVJUWShjb2Rl
KSBcCi0gICAgICAgIEZJTExfUFJPUEVSVFkocmVhc29uKSBcCi0gICAgRElDVElPTkFSWV9FTkQo
Q2xvc2VFdmVudCkKLQotI2RlZmluZSBJTlNUQU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNU
T1JfRk9SX01FU1NBR0VfRVZFTlQoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJ
TExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpIFwKLSAgICBcCi0gICAgRElDVElP
TkFSWV9TVEFSVChNZXNzYWdlRXZlbnQpIFwKLSAgICAgICAgRklMTF9QQVJFTlRfUFJPUEVSVElF
UyhFdmVudCkgXAotICAgICAgICBGSUxMX1BST1BFUlRZKGRhdGEpIFwKLSAgICAgICAgRklMTF9Q
Uk9QRVJUWShvcmlnaW4pIFwKLSAgICAgICAgRklMTF9QUk9QRVJUWShsYXN0RXZlbnRJZCkgXAot
ICAgICAgICBGSUxMX1BST1BFUlRZKHNvdXJjZSkgXAotICAgICAgICBGSUxMX1BST1BFUlRZKHBv
cnRzKSBcCi0gICAgRElDVElPTkFSWV9FTkQoTWVzc2FnZUV2ZW50KQotCi0jZGVmaW5lIElOU1RB
TlRJQVRFX0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUl9GT1JfV0VCS0lUX1RSQU5TSVRJT05fRVZF
TlQoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJ
RVMsIEZJTExfUFJPUEVSVFkpIFwKLSAgICBcCi0gICAgRElDVElPTkFSWV9TVEFSVChXZWJLaXRU
cmFuc2l0aW9uRXZlbnQpIFwKLSAgICAgICAgRklMTF9QQVJFTlRfUFJPUEVSVElFUyhFdmVudCkg
XAotICAgICAgICBGSUxMX1BST1BFUlRZKHByb3BlcnR5TmFtZSkgXAotICAgICAgICBGSUxMX1BS
T1BFUlRZKGVsYXBzZWRUaW1lKSBcCi0gICAgRElDVElPTkFSWV9FTkQoV2ViS2l0VHJhbnNpdGlv
bkV2ZW50KQotCi0jZGVmaW5lIElOU1RBTlRJQVRFX0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUl9G
T1JfQkVGT1JFX0xPQURfRVZFTlQoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJ
TExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpIFwKLSAgICBcCi0gICAgRElDVElP
TkFSWV9TVEFSVChCZWZvcmVMb2FkRXZlbnQpIFwKLSAgICAgICAgRklMTF9QQVJFTlRfUFJPUEVS
VElFUyhFdmVudCkgXAotICAgICAgICBGSUxMX1BST1BFUlRZKHVybCkgXAotICAgIERJQ1RJT05B
UllfRU5EKEJlZm9yZUxvYWRFdmVudCkKLQotI2RlZmluZSBJTlNUQU5USUFURV9JTklUSUFMSVpJ
TkdfQ09OU1RSVUNUT1JfRk9SX09WRVJGTE9XX0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJ
T05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBcCi0gICAg
XAotICAgIERJQ1RJT05BUllfU1RBUlQoT3ZlcmZsb3dFdmVudCkgXAotICAgICAgICBGSUxMX1BB
UkVOVF9QUk9QRVJUSUVTKEV2ZW50KSBcCi0gICAgICAgIEZJTExfUFJPUEVSVFkob3JpZW50KSBc
Ci0gICAgICAgIEZJTExfUFJPUEVSVFkoaG9yaXpvbnRhbE92ZXJmbG93KSBcCi0gICAgICAgIEZJ
TExfUFJPUEVSVFkodmVydGljYWxPdmVyZmxvdykgXAotICAgIERJQ1RJT05BUllfRU5EKE92ZXJm
bG93RXZlbnQpCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0jZGVmaW5lIElOU1RBTlRJQVRF
X0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUl9GT1JfVFJBQ0tfRVZFTlQoRElDVElPTkFSWV9TVEFS
VCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkp
IFwKLSAgICBcCi0gICAgRElDVElPTkFSWV9TVEFSVChUcmFja0V2ZW50KSBcCi0gICAgICAgIEZJ
TExfUEFSRU5UX1BST1BFUlRJRVMoRXZlbnQpIFwKLSAgICAgICAgRklMTF9QUk9QRVJUWSh0cmFj
aykgXAotICAgIERJQ1RJT05BUllfRU5EKFRyYWNrRXZlbnQpCi0jZWxzZQotI2RlZmluZSBJTlNU
QU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX1RSQUNLX0VWRU5UKERJQ1RJT05B
UllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BS
T1BFUlRZKQotI2VuZGlmCi0KLSNkZWZpbmUgSU5TVEFOVElBVEVfQUxMX0VWRU5UX0lOSVRJQUxJ
WklOR19DT05TVFJVQ1RPUlMoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExf
UEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpIFwKLSAgICBJTlNUQU5USUFURV9JTklU
SUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05B
UllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBcCi0gICAgSU5T
VEFOVElBVEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9DVVNUT01fRVZFTlQoRElDVElP
TkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExf
UFJPUEVSVFkpIFwKLSAgICBJTlNUQU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9S
X1BST0dSRVNTX0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BB
UkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBcCi0gICAgSU5TVEFOVElBVEVfSU5JVElB
TElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9XRUJLSVRfQU5JTUFUSU9OX0VWRU5UKERJQ1RJT05BUllf
U1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BF
UlRZKSBcCi0gICAgSU5TVEFOVElBVEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9IQVNI
X0NIQU5HRV9FVkVOVChESUNUSU9OQVJZX1NUQVJULCBESUNUSU9OQVJZX0VORCwgRklMTF9QQVJF
TlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJUWSkgXAotICAgIElOU1RBTlRJQVRFX0lOSVRJQUxJ
WklOR19DT05TVFJVQ1RPUl9GT1JfUEFHRV9UUkFOU0lUSU9OX0VWRU5UKERJQ1RJT05BUllfU1RB
UlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZ
KSBcCi0gICAgSU5TVEFOVElBVEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9QT1BfU1RB
VEVfRVZFTlQoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BS
T1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpIFwKLSAgICBJTlNUQU5USUFURV9JTklUSUFMSVpJTkdf
Q09OU1RSVUNUT1JfRk9SX0VSUk9SX0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllf
RU5ELCBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBcCi0gICAgSU5TVEFO
VElBVEVfSU5JVElBTElaSU5HX0NPTlNUUlVDVE9SX0ZPUl9DTE9TRV9FVkVOVChESUNUSU9OQVJZ
X1NUQVJULCBESUNUSU9OQVJZX0VORCwgRklMTF9QQVJFTlRfUFJPUEVSVElFUywgRklMTF9QUk9Q
RVJUWSkgXAotICAgIElOU1RBTlRJQVRFX0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUl9GT1JfTUVT
U0FHRV9FVkVOVChESUNUSU9OQVJZX1NUQVJULCBESUNUSU9OQVJZX0VORCwgRklMTF9QQVJFTlRf
UFJPUEVSVElFUywgRklMTF9QUk9QRVJUWSkgXAotICAgIElOU1RBTlRJQVRFX0lOSVRJQUxJWklO
R19DT05TVFJVQ1RPUl9GT1JfV0VCS0lUX1RSQU5TSVRJT05fRVZFTlQoRElDVElPTkFSWV9TVEFS
VCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkp
IFwKLSAgICBJTlNUQU5USUFURV9JTklUSUFMSVpJTkdfQ09OU1RSVUNUT1JfRk9SX0JFRk9SRV9M
T0FEX0VWRU5UKERJQ1RJT05BUllfU1RBUlQsIERJQ1RJT05BUllfRU5ELCBGSUxMX1BBUkVOVF9Q
Uk9QRVJUSUVTLCBGSUxMX1BST1BFUlRZKSBcCi0gICAgSU5TVEFOVElBVEVfSU5JVElBTElaSU5H
X0NPTlNUUlVDVE9SX0ZPUl9PVkVSRkxPV19FVkVOVChESUNUSU9OQVJZX1NUQVJULCBESUNUSU9O
QVJZX0VORCwgRklMTF9QQVJFTlRfUFJPUEVSVElFUywgRklMTF9QUk9QRVJUWSkgXAotICAgIElO
U1RBTlRJQVRFX0lOSVRJQUxJWklOR19DT05TVFJVQ1RPUl9GT1JfVFJBQ0tfRVZFTlQoRElDVElP
TkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQsIEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExf
UFJPUEVSVFkpIFwKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRXZlbnRD
b25zdHJ1Y3RvcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAKaW5kZXggNzhjZTk4Ni4uN2RiOGQ0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC03Miw3ICs3Miw2
IEBACiAjaW5jbHVkZSAiSlNEb2N1bWVudEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNFbGVtZW50
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0Vycm9ySGFuZGxlci5jcHAiCi0jaW5jbHVkZSAiSlNF
dmVudENvbnN0cnVjdG9ycy5jcHAiCiAjaW5jbHVkZSAiSlNFdmVudEN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNFdmVudExpc3RlbmVyLmNwcCIKICNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmNwcCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDb25zdHJ1Y3Rv
cnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudENvbnN0cnVjdG9ycy5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwN2I0ZWUuLjAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudENvbnN0cnVjdG9ycy5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJFdmVudENvbnN0cnVjdG9ycy5oIgotCi0jaW5jbHVkZSAiQmVmb3JlTG9h
ZEV2ZW50LmgiCi0jaW5jbHVkZSAiQ2xvc2VFdmVudC5oIgotI2luY2x1ZGUgIkN1c3RvbUV2ZW50
LmgiCi0jaW5jbHVkZSAiRXJyb3JFdmVudC5oIgotI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVk
ZSAiSGFzaENoYW5nZUV2ZW50LmgiCi0jaW5jbHVkZSAiSlNCZWZvcmVMb2FkRXZlbnQuaCIKLSNp
bmNsdWRlICJKU0Nsb3NlRXZlbnQuaCIKLSNpbmNsdWRlICJKU0N1c3RvbUV2ZW50LmgiCi0jaW5j
bHVkZSAiSlNEaWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiSlNFcnJvckV2ZW50LmgiCi0jaW5jbHVk
ZSAiSlNFdmVudC5oIgotI2luY2x1ZGUgIkpTSGFzaENoYW5nZUV2ZW50LmgiCi0jaW5jbHVkZSAi
SlNNZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJKU092ZXJmbG93RXZlbnQuaCIKLSNpbmNsdWRl
ICJKU1BhZ2VUcmFuc2l0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJKU1BvcFN0YXRlRXZlbnQuaCIK
LSNpbmNsdWRlICJKU1Byb2dyZXNzRXZlbnQuaCIKLSNpbmNsdWRlICJKU1dlYktpdEFuaW1hdGlv
bkV2ZW50LmgiCi0jaW5jbHVkZSAiSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCIKLSNpbmNsdWRl
ICJNZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCi0jaW5jbHVkZSAi
UGFnZVRyYW5zaXRpb25FdmVudC5oIgotI2luY2x1ZGUgIlBvcFN0YXRlRXZlbnQuaCIKLSNpbmNs
dWRlICJQcm9ncmVzc0V2ZW50LmgiCi0jaW5jbHVkZSAiV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCIK
LSNpbmNsdWRlICJXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCIKLSNpbmNsdWRlIDxydW50aW1lL0Vy
cm9yLmg+Ci0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0jaW5jbHVkZSAiSlNUcmFja0V2ZW50
LmgiCi0jaW5jbHVkZSAiVHJhY2tFdmVudC5oIgotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBK
U0M7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ29uc3RydWN0
b3IsIHR5cGVuYW1lIEV2ZW50VHlwZSwgdHlwZW5hbWUgRXZlbnRJbml0VHlwZT4KLXN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU0V2ZW50V2l0aEluaXRpYWxpemVyKEV4ZWNTdGF0ZSog
ZXhlYywgYm9vbCAoKmZpbGxlcikoRXZlbnRJbml0VHlwZSYsIEpTRGljdGlvbmFyeSYpKQotewot
ICAgIENvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3Iq
PihleGVjLT5jYWxsZWUoKSk7Ci0KLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjdXRp
b25Db250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAg
IGlmICghZXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiQ29uc3RydWN0b3IgYXNzb2NpYXRlZCBleGVj
dXRpb24gY29udGV4dCBpcyB1bmF2YWlsYWJsZSIpKTsKLQotICAgIEF0b21pY1N0cmluZyBldmVu
dFR5cGUgPSB1c3RyaW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmco
ZXhlYykpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLQotICAgIEV2ZW50SW5pdFR5cGUgZXZlbnRJ
bml0OwotCi0gICAgSlNWYWx1ZSBpbml0aWFsaXplclZhbHVlID0gZXhlYy0+YXJndW1lbnQoMSk7
Ci0gICAgaWYgKCFpbml0aWFsaXplclZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKLSAgICAg
ICAgLy8gR2l2ZW4gdGhlIGFib3ZlIHRlc3QsIHRoaXMgd2lsbCBhbHdheXMgeWllbGQgYW4gb2Jq
ZWN0LgotICAgICAgICBKU09iamVjdCogaW5pdGlhbGl6ZXJPYmplY3QgPSBpbml0aWFsaXplclZh
bHVlLnRvT2JqZWN0KGV4ZWMpOwotCi0gICAgICAgIC8vIENyZWF0ZSB0aGUgZGljdGlvbmFyeSB3
cmFwcGVyIGZyb20gdGhlIGluaXRpYWxpemVyIG9iamVjdC4KLSAgICAgICAgSlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnkoZXhlYywgaW5pdGlhbGl6ZXJPYmplY3QpOwotCi0gICAgICAgIC8vIEF0dGVt
cHQgdG8gZmlsbCBpbiB0aGUgRXZlbnRJbml0LgotICAgICAgICBpZiAoIWZpbGxlcihldmVudElu
aXQsIGRpY3Rpb25hcnkpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICB9Ci0KLSAgICBSZWZQdHI8RXZlbnRUeXBlPiBldmVudCA9IEV2ZW50
VHlwZTo6Y3JlYXRlKGV2ZW50VHlwZSwgZXZlbnRJbml0KTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlMoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIGV2ZW50Lmdl
dCgpKSk7Ci19Ci0KLQotI2RlZmluZSBESUNUSU9OQVJZX1NUQVJUKEV2ZW50KSBcCi0gICAgc3Rh
dGljIGJvb2wgZmlsbCMjRXZlbnQjI0luaXQoRXZlbnQjI0luaXQmIGV2ZW50SW5pdCwgSlNEaWN0
aW9uYXJ5JiBkaWN0aW9uYXJ5KSBcCi0gICAgewotCi0jZGVmaW5lIERJQ1RJT05BUllfRU5EKEV2
ZW50KSBcCi0gICAgICAgIHJldHVybiB0cnVlOyBcCi0gICAgfSBcCi0gICAgXAotICAgIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlMjI0V2ZW50IyNDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
SlMjI0V2ZW50KEV4ZWNTdGF0ZSogZXhlYykgXAotICAgIHsgXAotICAgICAgICByZXR1cm4gY29u
c3RydWN0SlNFdmVudFdpdGhJbml0aWFsaXplcjxKUyMjRXZlbnQjI0NvbnN0cnVjdG9yLCBFdmVu
dCwgRXZlbnQjI0luaXQ+KGV4ZWMsIGZpbGwjI0V2ZW50IyNJbml0KTsgXAotICAgIH0KLQotI2Rl
ZmluZSBGSUxMX1BBUkVOVF9QUk9QRVJUSUVTKHBhcmVudCkgXAotICAgIGlmICghZmlsbCMjcGFy
ZW50IyNJbml0KGV2ZW50SW5pdCwgZGljdGlvbmFyeSkpIFwKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0jZGVmaW5lIEZJTExfUFJPUEVSVFkocHJvcGVydHlOYW1lKSBcCi0gICAgaWYgKCFkaWN0
aW9uYXJ5LnRyeUdldFByb3BlcnR5KCNwcm9wZXJ0eU5hbWUsIGV2ZW50SW5pdC5wcm9wZXJ0eU5h
bWUpKSBcCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotSU5TVEFOVElBVEVfQUxMX0VWRU5UX0lO
SVRJQUxJWklOR19DT05TVFJVQ1RPUlMoRElDVElPTkFSWV9TVEFSVCwgRElDVElPTkFSWV9FTkQs
IEZJTExfUEFSRU5UX1BST1BFUlRJRVMsIEZJTExfUFJPUEVSVFkpCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggMjUwMDU2Mi4uZDQ1N2JmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTcyMyw2ICs3MjMs
NyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICB9CiAKICAgICBBZGRDbGFzc0ZvcndhcmRJZk5l
ZWRlZCgiSlNET01XaW5kb3dTaGVsbCIpIGlmICRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ci
OworICAgIEFkZENsYXNzRm9yd2FyZElmTmVlZGVkKCJKU0RpY3Rpb25hcnkiKSBpZiBJc0NvbnN0
cnVjdG9yVGVtcGxhdGUoJGRhdGFOb2RlLCAiRXZlbnQiKTsKIAogICAgICMgQ2xhc3MgZGVjbGFy
YXRpb24KICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiY2xhc3MgJGNsYXNzTmFtZSA6IHB1Ymxp
YyAkcGFyZW50Q2xhc3NOYW1lIHtcbiIpOwpAQCAtMTA3Miw3ICsxMDczLDcgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAKICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlND
dXN0b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbUNvbnN0cnVjdG9yIn0gfHwgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik9t
aXRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siSlNET01CaW5kaW5n
LmgifSA9IDE7Ci0gICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbihcQGhlYWRl
ckNvbnRlbnQsICRjbGFzc05hbWUsICRkYXRhTm9kZSk7CisgICAgICAgIEdlbmVyYXRlQ29uc3Ry
dWN0b3JEZWNsYXJhdGlvbihcQGhlYWRlckNvbnRlbnQsICRjbGFzc05hbWUsICRkYXRhTm9kZSwg
JGludGVyZmFjZU5hbWUpOwogICAgIH0KIAogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgewpA
QCAtMzE4OSw5ICszMTkwLDkgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbgog
ICAgIG15ICRvdXRwdXRBcnJheSA9IHNoaWZ0OwogICAgIG15ICRjbGFzc05hbWUgPSBzaGlmdDsK
ICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0
OwogCiAgICAgbXkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lID0gIiR7Y2xhc3NOYW1lfUNvbnN0cnVj
dG9yIjsKLSAgICBteSAkY2FuQ29uc3RydWN0ID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0N1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q3VzdG9tQ29uc3RydWN0b3IifTsKICAgICBteSAkY2FsbFdpdGggPSAkZGF0YU5vZGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9OwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
Y2xhc3MgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0gOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmpl
Y3Qge1xuIik7CkBAIC0zMjIwLDExICszMjIxLDE1IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9y
RGVjbGFyYXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJwcm90ZWN0ZWQ6XG4iKTsKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OkltcGxlbWVu
dHNIYXNJbnN0YW5jZSB8IERPTUNvbnN0cnVjdG9yT2JqZWN0OjpTdHJ1Y3R1cmVGbGFncztcbiIp
OwogCi0gICAgaWYgKCRjYW5Db25zdHJ1Y3QpIHsKKyAgICBpZiAoSXNDb25zdHJ1Y3RhYmxlKCRk
YXRhTm9kZSkpIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0JHtjbGFzc05hbWV9KEpTQzo6
RXhlY1N0YXRlKik7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRp
YyBKU0M6OkNvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShKU0M6OkpTQ2VsbCosIEpTQzo6
Q29uc3RydWN0RGF0YSYpO1xuIik7CiAgICAgfQogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn07
XG5cbiIpOworCisgICAgaWYgKElzQ29uc3RydWN0b3JUZW1wbGF0ZSgkZGF0YU5vZGUsICJFdmVu
dCIpKSB7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImJvb2wgZmlsbCR7aW50ZXJmYWNl
TmFtZX1Jbml0KCR7aW50ZXJmYWNlTmFtZX1Jbml0JiwgSlNEaWN0aW9uYXJ5Jik7XG5cbiIpOwor
ICAgIH0KIH0KIAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCkBAIC0zMjY5LDgg
KzMyNzQsNzIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0b3I8JHtjb25z
dHJ1Y3RvckNsYXNzTmFtZX0sIEpTRE9NV3JhcHBlcj4oZXhlYywgJiR7Y29uc3RydWN0b3JDbGFz
c05hbWV9VGFibGUsIHN0YXRpY19jYXN0PCR7Y29uc3RydWN0b3JDbGFzc05hbWV9Kj4ob2JqZWN0
KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIn1cblxuIik7CiAKLSAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0N1c3Rv
bUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
Q29uc3RydWN0b3IifSkgewotICAgICAgICBpZiAoISgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJKU0N1c3RvbUNvbnN0cnVjdG9yIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSkpIHsKKyAgICBpZiAoSXNDb25zdHJ1Y3RhYmxl
KCRkYXRhTm9kZSkpIHsKKyAgICAgICAgaWYgKElzQ29uc3RydWN0b3JUZW1wbGF0ZSgkZGF0YU5v
ZGUsICJFdmVudCIpKSB7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0RpY3Rpb25hcnku
aCJ9ID0gMTsKKyAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0g
PSAxOworCisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX06OmNvbnN0cnVjdCR7
Y2xhc3NOYW1lfShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFt
ZX0qIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+
KGV4ZWMtPmNhbGxlZSgpKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGV4ZWN1dGlv
bkNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAg
aWYgKCFleGVjdXRpb25Db250ZXh0KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJDb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGV4ZWN1
dGlvbiBjb250ZXh0IGlzIHVuYXZhaWxhYmxlIikpOworCisgICAgQXRvbWljU3RyaW5nIGV2ZW50
VHlwZSA9IHVzdHJpbmdUb0F0b21pY1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgJHtpbnRlcmZhY2VOYW1lfUluaXQg
ZXZlbnRJbml0OworCisgICAgSlNWYWx1ZSBpbml0aWFsaXplclZhbHVlID0gZXhlYy0+YXJndW1l
bnQoMSk7CisgICAgaWYgKCFpbml0aWFsaXplclZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsK
KyAgICAgICAgLy8gR2l2ZW4gdGhlIGFib3ZlIHRlc3QsIHRoaXMgd2lsbCBhbHdheXMgeWllbGQg
YW4gb2JqZWN0LgorICAgICAgICBKU09iamVjdCogaW5pdGlhbGl6ZXJPYmplY3QgPSBpbml0aWFs
aXplclZhbHVlLnRvT2JqZWN0KGV4ZWMpOworCisgICAgICAgIC8vIENyZWF0ZSB0aGUgZGljdGlv
bmFyeSB3cmFwcGVyIGZyb20gdGhlIGluaXRpYWxpemVyIG9iamVjdC4KKyAgICAgICAgSlNEaWN0
aW9uYXJ5IGRpY3Rpb25hcnkoZXhlYywgaW5pdGlhbGl6ZXJPYmplY3QpOworCisgICAgICAgIC8v
IEF0dGVtcHQgdG8gZmlsbCBpbiB0aGUgRXZlbnRJbml0LgorICAgICAgICBpZiAoIWZpbGwke2lu
dGVyZmFjZU5hbWV9SW5pdChldmVudEluaXQsIGRpY3Rpb25hcnkpKQorICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisKKyAgICBSZWZQdHI8
JHtpbnRlcmZhY2VOYW1lfT4gZXZlbnQgPSAke2ludGVyZmFjZU5hbWV9OjpjcmVhdGUoZXZlbnRU
eXBlLCBldmVudEluaXQpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBq
c0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgZXZlbnQuZ2V0KCkpKTsKK30KKworYm9vbCBm
aWxsJHtpbnRlcmZhY2VOYW1lfUluaXQoJHtpbnRlcmZhY2VOYW1lfUluaXQmIGV2ZW50SW5pdCwg
SlNEaWN0aW9uYXJ5JiBkaWN0aW9uYXJ5KQoreworRU5ECisKKyAgICAgICAgICAgIGZvcmVhY2gg
bXkgJGludGVyZmFjZUJhc2UgKEB7JGRhdGFOb2RlLT5wYXJlbnRzfSkgeworICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CisgICAgaWYgKCFmaWxsJHtpbnRlcmZhY2VC
YXNlfUluaXQoZXZlbnRJbml0LCBkaWN0aW9uYXJ5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CitFTkQKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChteSAkaW5kZXggPSAwOyAk
aW5kZXggPCBAeyRkYXRhTm9kZS0+YXR0cmlidXRlc307ICRpbmRleCsrKSB7CisgICAgICAgICAg
ICAgICAgbXkgJGF0dHJpYnV0ZSA9IEB7JGRhdGFOb2RlLT5hdHRyaWJ1dGVzfVskaW5kZXhdOwor
ICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJJbml0aWFsaXplZEJ5Q29uc3RydWN0b3IifSkgeworICAgICAgICAgICAgICAgICAg
ICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKKyAgICBpZiAoIWRpY3Rp
b25hcnkudHJ5R2V0UHJvcGVydHkoIiR7YXR0cmlidXRlTmFtZX0iLCBldmVudEluaXQuJHthdHRy
aWJ1dGVOYW1lfSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKK0VORAorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCA8PEVO
RCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0VORAorICAgICAgICB9IGVsc2lmICghKCRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3VzdG9tQ29uc3RydWN0b3IifSB8fCAkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9KSkgewogICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6Y29uc3RydWN0JHtjbGFzc05hbWV9KEV4ZWNTdGF0
ZSogZXhlYylcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CiAK
QEAgLTMzMzIsNCArMzQwMSwxOSBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24K
ICAgICB9CiB9CiAKK3N1YiBJc0NvbnN0cnVjdGFibGUKK3sKKyAgICBteSAkZGF0YU5vZGUgPSBz
aGlmdDsKKworICAgIHJldHVybiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Db25zdHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ3Vz
dG9tQ29uc3RydWN0b3IifSB8fCAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25z
dHJ1Y3RvciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQ29uc3RydWN0
b3JUZW1wbGF0ZSJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVj
dG9yVGVtcGxhdGUifTsKK30KKworc3ViIElzQ29uc3RydWN0b3JUZW1wbGF0ZQoreworICAgIG15
ICRkYXRhTm9kZSA9IHNoaWZ0OworICAgIG15ICR0ZW1wbGF0ZSA9IHNoaWZ0OworCisgICAgcmV0
dXJuICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0NvbnN0cnVjdG9yVGVtcGxh
dGUifSAmJiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0NvbnN0cnVjdG9yVGVt
cGxhdGUifSBlcSAkdGVtcGxhdGUpIHx8ICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25zdHJ1Y3RvclRlbXBsYXRlIn0gJiYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ29uc3RydWN0b3JUZW1wbGF0ZSJ9IGVxICR0ZW1wbGF0ZSk7Cit9CisKIDE7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjczMTZlMy4uOWUxY2VhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMjEsOCArMjEsMTAgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgiCiAKKyNp
bmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiVGVz
dEV2ZW50Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9KU1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIApAQCAtOTcs
NiArOTksNDIgQEAgYm9vbCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWMKICAgICByZXR1cm4gZ2V0U3RhdGlj
VmFsdWVEZXNjcmlwdG9yPEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciwgSlNET01X
cmFwcGVyPihleGVjLCAmSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yVGFibGUsIHN0
YXRpY19jYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcio+KG9iamVjdCksIHBy
b3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yQ29uc3RydWN0b3IqIGpzQ29uc3RydWN0b3IgPSBzdGF0aWNfY2FzdDxKU1Rlc3RFdmVudENv
bnN0cnVjdG9yQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisKKyAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBleGVjdXRpb25Db250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworICAgIGlmICghZXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiQ29uc3Ry
dWN0b3IgYXNzb2NpYXRlZCBleGVjdXRpb24gY29udGV4dCBpcyB1bmF2YWlsYWJsZSIpKTsKKwor
ICAgIEF0b21pY1N0cmluZyBldmVudFR5cGUgPSB1c3RyaW5nVG9BdG9taWNTdHJpbmcoZXhlYy0+
YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAg
IFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdCBldmVudEluaXQ7CisKKyAgICBKU1ZhbHVlIGluaXRp
YWxpemVyVmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKKyAgICBpZiAoIWluaXRpYWxpemVyVmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICAvLyBHaXZlbiB0aGUgYWJvdmUgdGVz
dCwgdGhpcyB3aWxsIGFsd2F5cyB5aWVsZCBhbiBvYmplY3QuCisgICAgICAgIEpTT2JqZWN0KiBp
bml0aWFsaXplck9iamVjdCA9IGluaXRpYWxpemVyVmFsdWUudG9PYmplY3QoZXhlYyk7CisKKyAg
ICAgICAgLy8gQ3JlYXRlIHRoZSBkaWN0aW9uYXJ5IHdyYXBwZXIgZnJvbSB0aGUgaW5pdGlhbGl6
ZXIgb2JqZWN0LgorICAgICAgICBKU0RpY3Rpb25hcnkgZGljdGlvbmFyeShleGVjLCBpbml0aWFs
aXplck9iamVjdCk7CisKKyAgICAgICAgLy8gQXR0ZW1wdCB0byBmaWxsIGluIHRoZSBFdmVudElu
aXQuCisgICAgICAgIGlmICghZmlsbFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdChldmVudEluaXQs
IGRpY3Rpb25hcnkpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICB9CisKKyAgICBSZWZQdHI8VGVzdEV2ZW50Q29uc3RydWN0b3I+IGV2ZW50
ID0gVGVzdEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0ZShldmVudFR5cGUsIGV2ZW50SW5pdCk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2Jh
bE9iamVjdCgpLCBldmVudC5nZXQoKSkpOworfQorCitib29sIGZpbGxUZXN0RXZlbnRDb25zdHJ1
Y3RvckluaXQoVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0JiBldmVudEluaXQsIEpTRGljdGlvbmFy
eSYgZGljdGlvbmFyeSkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogQ29uc3RydWN0VHlwZSBK
U1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxs
KiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKIHsKICAgICBjb25zdHJ1Y3REYXRhLm5h
dGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEpTVGVzdEV2ZW50Q29uc3RydWN0b3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50Q29uc3RydWN0b3IuaAppbmRleCA1OWUxOGNmLi4yNmRlZjViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKQEAgLTI5LDYgKzI5LDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBKU0RpY3Rpb25hcnk7CisKIGNsYXNzIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9N
V3JhcHBlciBCYXNlOwpAQCAtMTEzLDYgKzExNSw4IEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMg
SlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNv
bnN0cnVjdERhdGEmKTsKIH07CiAKK2Jvb2wgZmlsbFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdChU
ZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQmLCBKU0RpY3Rpb25hcnkmKTsKKwogLy8gQXR0cmlidXRl
cwogCiBKU0M6OkpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEV2ZW50Q29u
c3RydWN0b3IuaWRsCmluZGV4IDhkM2JhZWUuLmMwNTdjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXZlbnRDb25zdHJ1Y3Rvci5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFdmVudENvbnN0cnVj
dG9yLmlkbApAQCAtMzAsNyArMzAsNyBAQAogLy8gY2hhbmdlcyBpbiBpdHMgb3VwdXQuCiBtb2R1
bGUgdGVzdCB7CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3I9RXZl
bnQKKyAgICAgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudAogICAgIF0gVGVzdEV2ZW50Q29u
c3RydWN0b3IgewogICAgICAgICAvLyBBdHRyaWJ1dGVzCiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgYXR0cjE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
aW5kZXggY2UyODkyNy4uMTRlMmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9y
LmNwcApAQCAtMjEsOCArMjEsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJW
OFRlc3RFdmVudENvbnN0cnVjdG9yLmgiCiAKKyNpbmNsdWRlICJPcHRpb25zT2JqZWN0LmgiCiAj
aW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5o
IgorI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRl
LmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRl
eHQuaCIKQEAgLTYwLDYgKzYyLDM4IEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIFRl
c3RFdmVudENvbnN0cnVjdG9yQXR0cnNbXSA9IHsKICAgICB7ImF0dHIyIiwgVGVzdEV2ZW50Q29u
c3RydWN0b3JJbnRlcm5hbDo6YXR0cjJBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07
CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpjb25zdHJ1
Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRT
KCJET00uVGVzdEV2ZW50Q29uc3RydWN0b3IuQ29uc3RydWN0b3IiKTsKKworICAgIGlmICghYXJn
cy5Jc0NvbnN0cnVjdENhbGwoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoIkRPTSBvYmpl
Y3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIsIFY4UHJveHk6
OlR5cGVFcnJvcik7CisKKyAgICBpZiAoQ29uc3RydWN0b3JNb2RlOjpjdXJyZW50KCkgPT0gQ29u
c3RydWN0b3JNb2RlOjpXcmFwRXhpc3RpbmdPYmplY3QpCisgICAgICAgIHJldHVybiBhcmdzLkhv
bGRlcigpOworCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQorICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBWOFByb3h5OjpUeXBlRXJyb3IpOworCisg
ICAgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCB0
eXBlLCBhcmdzWzBdKTsKKyAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQgZXZlbnRJbml0Owor
ICAgIGlmIChhcmdzLkxlbmd0aCgpID49IDIpIHsKKyAgICAgICAgRVhDRVBUSU9OX0JMT0NLKE9w
dGlvbnNPYmplY3QsIG9wdGlvbnMsIGFyZ3NbMV0pOworICAgICAgICBpZiAoIWZpbGxUZXN0RXZl
bnRDb25zdHJ1Y3RvckluaXQoZXZlbnRJbml0LCBvcHRpb25zKSkKKyAgICAgICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgUmVmUHRyPFRlc3RFdmVudENvbnN0cnVj
dG9yPiBldmVudCA9IFRlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGUodHlwZSwgZXZlbnRJbml0
KTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcihhcmdzLkhvbGRlcigpLCAmaW5m
bywgZXZlbnQuZ2V0KCkpOworICAgIHJldHVybiB0b1Y4KGV2ZW50LnJlbGVhc2UoKSwgYXJncy5I
b2xkZXIoKSk7Cit9CisKK2Jvb2wgZmlsbFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdChUZXN0RXZl
bnRDb25zdHJ1Y3RvckluaXQmIGV2ZW50SW5pdCwgY29uc3QgT3B0aW9uc09iamVjdCYgb3B0aW9u
cykKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxhdGUo
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MpCiB7CiAgICAgZGVzYy0+
UmVhZE9ubHlQcm90b3R5cGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCmluZGV4
IGRhMWU1MTEuLjUyMGUxY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaApAQCAt
MzAsNiArMzAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE9wdGlvbnNPYmpl
Y3Q7CiBjbGFzcyBWOFRlc3RFdmVudENvbnN0cnVjdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwpAQCAtNzUsNiArNzYsOCBA
QCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdEV2ZW50
Q29uc3RydWN0b3IgPiBpbXBsKQogICAgIHJldHVybiB0b1Y4KGltcGwuZ2V0KCkpOwogfQogCiti
b29sIGZpbGxUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQoVGVzdEV2ZW50Q29uc3RydWN0b3JJbml0
JiwgY29uc3QgT3B0aW9uc09iamVjdCYpOworCiB9CiAKICNlbmRpZiAvLyBWOFRlc3RFdmVudENv
bnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVMb2FkRXZl
bnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5pZGwKaW5kZXggNjU3
Nzg1Zi4uNDYwMGU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZUxvYWRF
dmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5pZGwKQEAg
LTI3LDggKzI3LDcgQEAKIG1vZHVsZSBldmVudHMgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAg
ICAgVjhDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50LAotICAgICAgICBKU0N1c3RvbUNvbnN0cnVj
dG9yCisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQKICAgICBdIEJlZm9yZUxvYWRF
dmVudCA6IEV2ZW50IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEJ5
Q29uc3RydWN0b3JdIERPTVN0cmluZyB1cmw7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DdXN0b21FdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZl
bnQuaWRsCmluZGV4IDI1MmI2YzIuLjNiZTM5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50
LmlkbApAQCAtMjgsOCArMjgsNyBAQCBtb2R1bGUgZXZlbnRzIHsKICNpZiAhZGVmaW5lZChMQU5H
VUFHRV9DUFApIHx8ICFMQU5HVUFHRV9DUFAKICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZl
bCAzOgogICAgIGludGVyZmFjZSBbCi0gICAgICAgIFY4Q29uc3RydWN0b3JUZW1wbGF0ZT1FdmVu
dCwKLSAgICAgICAgSlNDdXN0b21Db25zdHJ1Y3RvcgorICAgICAgICBDb25zdHJ1Y3RvclRlbXBs
YXRlPUV2ZW50CiAgICAgXSBDdXN0b21FdmVudCA6IEV2ZW50IHsKICAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIFtJbml0aWFsaXplZEJ5Q29uc3RydWN0b3JdIERPTU9iamVjdCBkZXRhaWw7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FcnJvckV2ZW50LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FcnJvckV2ZW50LmlkbAppbmRleCA3NzBiOTNlLi42ZDNkYzZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXJyb3JFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0Vycm9yRXZlbnQuaWRsCkBAIC0zMiw4ICszMiw3IEBAIG1vZHVsZSBldmVudHMgewog
CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgTm9TdGF0aWNUYWJsZXMsCi0gICAgICAgIFY4Q29u
c3RydWN0b3JUZW1wbGF0ZT1FdmVudCwKLSAgICAgICAgSlNDdXN0b21Db25zdHJ1Y3RvcgorICAg
ICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50CiAgICAgXSBFcnJvckV2ZW50IDogRXZlbnQg
ewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQnlDb25zdHJ1Y3Rvcl0g
RE9NU3RyaW5nIG1lc3NhZ2U7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6
ZWRCeUNvbnN0cnVjdG9yXSBET01TdHJpbmcgZmlsZW5hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmlkbAppbmRl
eCAwZmI1OGUyLi44MGIyZjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5pZGwKQEAgLTIzLDggKzIzLDcgQEAg
bW9kdWxlIGV2ZW50cyB7CiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKICAgICBp
bnRlcmZhY2UgWwogICAgICAgICBDdXN0b21Ub0pTLAotICAgICAgICBWOENvbnN0cnVjdG9yVGVt
cGxhdGU9RXZlbnQsCi0gICAgICAgIEpTQ3VzdG9tQ29uc3RydWN0b3IsCisgICAgICAgIENvbnN0
cnVjdG9yVGVtcGxhdGU9RXZlbnQsCiAgICAgICAgIE5vU3RhdGljVGFibGVzLAogICAgICAgICBQ
b2x5bW9ycGhpYwogICAgIF0gRXZlbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0hhc2hDaGFuZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50
LmlkbAppbmRleCBiNDkyNGYyLi41NjFiNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vSGFzaENoYW5nZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5n
ZUV2ZW50LmlkbApAQCAtMjEsOCArMjEsNyBAQCBtb2R1bGUgZXZlbnRzIHsKIAogICAgIC8vIElu
dHJvZHVjZWQgaW4gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvaGlzdG9yeS5odG1sI2V2ZW50LWhhc2hjaGFuZ2UKICAgICBpbnRlcmZh
Y2UgWwotICAgICAgICBWOENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQsCi0gICAgICAgIEpTQ3Vz
dG9tQ29uc3RydWN0b3IKKyAgICAgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudAogICAgIF0g
SGFzaENoYW5nZUV2ZW50IDogRXZlbnQgewogICAgICAgICB2b2lkIGluaXRIYXNoQ2hhbmdlRXZl
bnQoaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSBET01TdHJpbmcgdHlwZSwgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWw9Q2FsbFdpdGhEZWZh
dWx0VmFsdWVdIGJvb2xlYW4gY2FuQnViYmxlLCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5p
ZGwKaW5kZXggMDJmYjk1My4uNmQzMjRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5p
ZGwKQEAgLTI5LDggKzI5LDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAKICAgICBpbnRlcmZhY2UgWwog
ICAgICAgICBOb1N0YXRpY1RhYmxlcywKLSAgICAgICAgVjhDb25zdHJ1Y3RvclRlbXBsYXRlPUV2
ZW50LAotICAgICAgICBKU0N1c3RvbUNvbnN0cnVjdG9yCisgICAgICAgIENvbnN0cnVjdG9yVGVt
cGxhdGU9RXZlbnQKICAgICBdIE1lc3NhZ2VFdmVudCA6IEV2ZW50IHsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEJ5Q29uc3RydWN0b3JdIERPTVN0cmluZyBvcmlnaW47
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRCeUNvbnN0cnVjdG9yXSBE
T01TdHJpbmcgbGFzdEV2ZW50SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vT3Zl
cmZsb3dFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vT3ZlcmZsb3dFdmVudC5pZGwKaW5k
ZXggNTQ5ZjEzOC4uYjQzYjUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL092ZXJm
bG93RXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9PdmVyZmxvd0V2ZW50LmlkbApA
QCAtMjYsOCArMjYsNyBAQAogbW9kdWxlIGV2ZW50cyB7CiAKICAgICBpbnRlcmZhY2UgWwotICAg
ICAgICBWOENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQsCi0gICAgICAgIEpTQ3VzdG9tQ29uc3Ry
dWN0b3IKKyAgICAgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudAogICAgIF0gT3ZlcmZsb3dF
dmVudCA6IEV2ZW50IHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgSE9SSVpPTlRBTCA9
IDA7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFZFUlRJQ0FMICAgPSAxOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaWRsCmluZGV4IGRiNDRiMmQuLjM3MzRk
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRyYW5zaXRpb25FdmVudC5pZGwKQEAgLTI2
LDggKzI2LDcgQEAKIG1vZHVsZSBldmVudHMgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAg
VjhDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50LAotICAgICAgICBKU0N1c3RvbUNvbnN0cnVjdG9y
CisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQKICAgICBdIFBhZ2VUcmFuc2l0aW9u
RXZlbnQgOiBFdmVudCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbSW5pdGlhbGl6ZWRC
eUNvbnN0cnVjdG9yXSBib29sZWFuIHBlcnNpc3RlZDsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bv
cFN0YXRlRXZlbnQuaWRsCmluZGV4IDcyZTEzMmQuLjU4YWQ5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
UG9wU3RhdGVFdmVudC5pZGwKQEAgLTI4LDggKzI4LDcgQEAgbW9kdWxlIGV2ZW50cyB7CiAKICNp
ZiAhZGVmaW5lZChMQU5HVUFHRV9DUFApIHx8ICFMQU5HVUFHRV9DUFAKICAgICBpbnRlcmZhY2Ug
WwotICAgICAgICBWOENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQsCi0gICAgICAgIEpTQ3VzdG9t
Q29uc3RydWN0b3IKKyAgICAgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudAogICAgIF0gUG9w
U3RhdGVFdmVudCA6IEV2ZW50IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFs
aXplZEJ5Q29uc3RydWN0b3IsIEN1c3RvbUdldHRlcl0gRE9NT2JqZWN0IHN0YXRlOwogICAgIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5pZGwKaW5kZXggZDg5ZWMyNC4uNjkzM2RmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmlkbApAQCAtMjYsOCArMjYsNyBAQAogbW9k
dWxlIGV2ZW50cyB7CiAKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBWOENvbnN0cnVjdG9yVGVt
cGxhdGU9RXZlbnQsCi0gICAgICAgIEpTQ3VzdG9tQ29uc3RydWN0b3IKKyAgICAgICAgQ29uc3Ry
dWN0b3JUZW1wbGF0ZT1FdmVudAogICAgIF0gUHJvZ3Jlc3NFdmVudCA6IEV2ZW50IHsKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEJ5Q29uc3RydWN0b3JdIGJvb2xlYW4g
bGVuZ3RoQ29tcHV0YWJsZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXpl
ZEJ5Q29uc3RydWN0b3JdIHVuc2lnbmVkIGxvbmcgbG9uZyBsb2FkZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmlkbAppbmRleCBjMTQ1ODBmLi4zNDZiZjc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5pZGwKQEAgLTI2LDgg
KzI2LDcgQEAKIG1vZHVsZSBldmVudHMgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgVjhD
b25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50LAotICAgICAgICBKU0N1c3RvbUNvbnN0cnVjdG9yCisg
ICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQKICAgICBdIFdlYktpdEFuaW1hdGlvbkV2
ZW50IDogRXZlbnQgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0luaXRpYWxpemVkQnlD
b25zdHJ1Y3Rvcl0gRE9NU3RyaW5nIGFuaW1hdGlvbk5hbWU7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBbSW5pdGlhbGl6ZWRCeUNvbnN0cnVjdG9yXSBkb3VibGUgZWxhcHNlZFRpbWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsCmluZGV4IDE5ZjI3
NDEuLmFiOWE0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0
aW9uRXZlbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZl
bnQuaWRsCkBAIC0yNiw4ICsyNiw3IEBACiBtb2R1bGUgZXZlbnRzIHsKIAogICAgIGludGVyZmFj
ZSBbCi0gICAgICAgIFY4Q29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudCwKLSAgICAgICAgSlNDdXN0
b21Db25zdHJ1Y3RvcgorICAgICAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50CiAgICAgXSBX
ZWJLaXRUcmFuc2l0aW9uRXZlbnQgOiBFdmVudCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJ
bml0aWFsaXplZEJ5Q29uc3RydWN0b3JdIERPTVN0cmluZyBwcm9wZXJ0eU5hbWU7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEJ5Q29uc3RydWN0b3JdIGRvdWJsZSBlbGFwc2Vk
VGltZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tFdmVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsCmluZGV4IDFmZTBh
MzEuLjVkMjhmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tF
dmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0V2ZW50LmlkbApA
QCAtMjgsOCArMjgsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAg
Q29uZGl0aW9uYWw9VklERU9fVFJBQ0ssCiAgICAgICAgIEVuYWJsZWRBdFJ1bnRpbWU9d2Via2l0
VmlkZW9UcmFjaywKLSAgICAgICAgVjhDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50LAotICAgICAg
ICBKU0N1c3RvbUNvbnN0cnVjdG9yCisgICAgICAgIENvbnN0cnVjdG9yVGVtcGxhdGU9RXZlbnQK
ICAgICBdIFRyYWNrRXZlbnQgOiBFdmVudCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBb
SW5pdGlhbGl6ZWRCeUNvbnN0cnVjdG9yLCBDdXN0b21HZXR0ZXJdIG9iamVjdCB0cmFjazsKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9DbG9zZUV2ZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3dlYnNvY2tldHMvQ2xvc2VFdmVudC5pZGwKaW5kZXggMmIyNTMy
Yi4uZGI3ODU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2Vic29ja2V0cy9DbG9zZUV2
ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaWRsCkBA
IC0zMiw4ICszMiw3IEBAIG1vZHVsZSBldmVudHMgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAg
ICAgTm9TdGF0aWNUYWJsZXMsCi0gICAgICAgIFY4Q29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudCwK
LSAgICAgICAgSlNDdXN0b21Db25zdHJ1Y3RvcgorICAgICAgICBDb25zdHJ1Y3RvclRlbXBsYXRl
PUV2ZW50CiAgICAgXSBDbG9zZUV2ZW50IDogRXZlbnQgewogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgW0luaXRpYWxpemVkQnlDb25zdHJ1Y3Rvcl0gYm9vbGVhbiB3YXNDbGVhbjsKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFtJbml0aWFsaXplZEJ5Q29uc3RydWN0b3JdIHVuc2lnbmVk
IHNob3J0IGNvZGU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>