<?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>128110</bug_id>
          
          <creation_ts>2014-02-03 10:45:07 -0800</creation_ts>
          <short_desc>Web Replay: upstream base input classes and the input cursor interface</short_desc>
          <delta_ts>2014-02-03 17:03:37 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>sam</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>975927</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-03 10:45:07 -0800</bug_when>
    <thetext>The first patch of many..

This one includes the base classes for captured nondeterministic inputs, and the machinery to set the input cursor (which mediates storing and loading inputs) on a JSGlobalObject or Document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975978</commentid>
    <comment_count>1</comment_count>
      <attachid>223013</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-03 12:55:28 -0800</bug_when>
    <thetext>Created attachment 223013
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975979</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-03 12:57:57 -0800</bug_when>
    <thetext>Attachment 223013 did not pass style-queue:


ERROR: Source/JavaScriptCore/replay/NondeterministicInput.h:69:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/replay/NondeterministicInput.h:74:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/replay/EmptyInputCursor.h:52:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/replay/EmptyInputCursor.h:58:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/replay/EmptyInputCursor.h:64:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 5 in 15 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>975982</commentid>
    <comment_count>3</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-03 13:00:19 -0800</bug_when>
    <thetext>Filed bug against style checker: https://bugs.webkit.org/show_bug.cgi?id=128119</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976058</commentid>
    <comment_count>4</comment_count>
      <attachid>223013</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-02-03 15:29:00 -0800</bug_when>
    <thetext>Comment on attachment 223013
patch

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

r=me, I only have style comments and nits. I may have more questions once these get used and when ReplayController is added.

&gt; Source/JavaScriptCore/replay/EmptyInputCursor.h:32
&gt; +#include &lt;replay/InputCursor.h&gt;

Nit: You should be able to just do #include &quot;InputCursor.h&quot; and all ports should build fine.

&gt; Source/JavaScriptCore/replay/EmptyInputCursor.h:38
&gt; +class EmptyInputCursor : public InputCursor {

Nit: Easier and cleaner to put &quot;final&quot; here in the class definition then on every single method.

    class EmptyInputCursor final : public InputCursor

&gt; Source/JavaScriptCore/replay/EmptyInputCursor.h:45
&gt; +        return adoptRef(new EmptyInputCursor());

Style: Parens not needed. &quot;new EmptyInputCursor&quot;

&gt; Source/JavaScriptCore/replay/InputCursor.h:48
&gt; +    virtual bool isCapturing() const =0;
&gt; +    virtual bool isReplaying() const =0;

Style: &quot;= 0;&quot;, here and elsewhere.

&gt; Source/JavaScriptCore/replay/InputCursor.h:53
&gt; +        return storeInput(std::unique_ptr&lt;NondeterministicInputBase&gt;(WTF::safeCast&lt;InputType*&gt;(new InputType(std::forward&lt;Args&gt;(args)...))));

Maybe break this up into 2 lines so it is easier to read?

    InputType* inputType = WTF::safeCast&lt;InputType*&gt;(blah);
    return storeInput(std::unique_ptr&lt;NondeterministicInputBase&gt;(inputType));

&gt; Source/JavaScriptCore/replay/NondeterministicInput.h:67
&gt; +class NondeterministicInput : public NondeterministicInputBase {

Nit: final in class

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:17859
&gt; +			name = replay;

Nit: This should be &quot;path = replay&quot;. That way, if you want to add files to this group in Xcode, Xcode automatically opens up the Source/WebCore/replay folder instead of the project base Source/WebCore folder.

You can change this in Xcode by selecting the Group, showing the right sidebar, and setting the Relative to Group path. You&apos;ll need to re-add the files inside the group. Better to do this now while there is 1 file then when there are 10+!

&gt; Source/WebCore/replay/EventLoopInput.h:38
&gt; +namespace JSC {
&gt; +class EncodedValue;
&gt; +}

Nit: This forward declaration is unneeded, as it is guaranteed by the base header.

&gt; Source/WebCore/replay/EventLoopInput.h:46
&gt; +    explicit ReplayPosition()

Nit: explicit not needed here.

&gt; Source/WebCore/replay/EventLoopInput.h:61
&gt; +class EventLoopInputBase : public NondeterministicInputBase {

Nit: final in class.

&gt; Source/WebCore/replay/EventLoopInput.h:80
&gt; +    virtual const AtomicString&amp; type() const override final {

Style: brace on its own line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976092</commentid>
    <comment_count>5</comment_count>
      <attachid>223013</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-03 16:25:05 -0800</bug_when>
    <thetext>Comment on attachment 223013
patch

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

&gt;&gt; Source/JavaScriptCore/replay/EmptyInputCursor.h:32
&gt;&gt; +#include &lt;replay/InputCursor.h&gt;
&gt; 
&gt; Nit: You should be able to just do #include &quot;InputCursor.h&quot; and all ports should build fine.

Oops, nice catch. This class grew up in WebCore.

&gt;&gt; Source/JavaScriptCore/replay/EmptyInputCursor.h:45
&gt;&gt; +        return adoptRef(new EmptyInputCursor());
&gt; 
&gt; Style: Parens not needed. &quot;new EmptyInputCursor&quot;

Filed against check-webkit-style: https://bugs.webkit.org/show_bug.cgi?id=128134

&gt;&gt; Source/JavaScriptCore/replay/InputCursor.h:48
&gt;&gt; +    virtual bool isReplaying() const =0;
&gt; 
&gt; Style: &quot;= 0;&quot;, here and elsewhere.

Filed against check-webkit-style: https://bugs.webkit.org/show_bug.cgi?id=128134

&gt;&gt; Source/JavaScriptCore/replay/InputCursor.h:53
&gt;&gt; +        return storeInput(std::unique_ptr&lt;NondeterministicInputBase&gt;(WTF::safeCast&lt;InputType*&gt;(new InputType(std::forward&lt;Args&gt;(args)...))));
&gt; 
&gt; Maybe break this up into 2 lines so it is easier to read?
&gt; 
&gt;     InputType* inputType = WTF::safeCast&lt;InputType*&gt;(blah);
&gt;     return storeInput(std::unique_ptr&lt;NondeterministicInputBase&gt;(inputType));

OK

&gt;&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:17859
&gt;&gt; +			name = replay;
&gt; 
&gt; Nit: This should be &quot;path = replay&quot;. That way, if you want to add files to this group in Xcode, Xcode automatically opens up the Source/WebCore/replay folder instead of the project base Source/WebCore folder.
&gt; 
&gt; You can change this in Xcode by selecting the Group, showing the right sidebar, and setting the Relative to Group path. You&apos;ll need to re-add the files inside the group. Better to do this now while there is 1 file then when there are 10+!

I could never figure out how to make it do this. Thanks! I wrote up some of the steps details in the wiki, since I seem to forget frequently.

https://trac.webkit.org/wiki/AddingFiles

&gt;&gt; Source/WebCore/replay/EventLoopInput.h:61
&gt;&gt; +class EventLoopInputBase : public NondeterministicInputBase {
&gt; 
&gt; Nit: final in class.

dispatch() is overridden by every subclass of EventLoopInput.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976120</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2014-02-03 17:03:37 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/163346</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223013</attachid>
            <date>2014-02-03 12:55:28 -0800</date>
            <delta_ts>2014-02-03 16:25:05 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-128110-20140203125533.patch</filename>
            <type>text/plain</type>
            <size>32633</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMzE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ODhlNGI1ZGVmYzBlY2I2ZTBkNGVkMDU4NjUyYTMyMzEzZWE1MjFmLi5jMGZhYzQ4MzU4ZGJjMDA0
NmExZjExMzYzODZlNTZhOGY1NmVlMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNC0wMi0wMyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgUmVwbGF5OiB1cHN0cmVhbSBiYXNlIGlucHV0IGNsYXNzZXMgYW5kIHRoZSBp
bnB1dCBjdXJzb3IgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjgxMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgdGhlIGJhc2UgY2xhc3MgZm9yIGFsbCByZXBsYXkgaW5wdXRzLiBB
ZGQgSW5wdXRUcmFpdHMsIGEgdHJhaXQgdGhhdAorICAgICAgICBwcm92aWRlcyBhbiBpbnB1dCdz
IHF1ZXVlLCB0eXBlLCBhbmQgZW5jb2RlL2RlY29kZSBtZXRob2RzIHN0YXRpY2FsbHkgc28KKyAg
ICAgICAgdGhhdCB0aGV5IGNhbiBiZSB1c2VkIHdpdGhpbiB0ZW1wbGF0ZWQgaGVscGVyIGZ1bmN0
aW9ucyBpbiBJbnB1dEN1cnNvciBhbmQKKyAgICAgICAgRW5jb2RlZFZhbHVlLgorCisgICAgICAg
IEFkZCB0aGUgSW5wdXRDdXJzb3IgYmFzZSBjbGFzcyB3aGljaCBtZWRpYXRlcyB0aGUgc2F2aW5n
IGFuZCBmZXRjaGluZyBvZgorICAgICAgICByZXBsYXkgaW5wdXRzIGZyb20gYSByZXBsYXkgcmVj
b3JkaW5nIGJ5IGluc3RydW1lbnRlZCBub25kZXRlcm1pbmlzdGljIGNvZGUuCisKKyAgICAgICAg
QWRkIGEgZHVtbXkgY3Vyc29yIGltcGxlbWVudGF0aW9uLiBUaGlzIGFsbG93cyB1cyB0byByZXR1
cm4gYSBjdXJzb3IgcmVmZXJlbmNlCisgICAgICAgIHRvIGNsaWVudHMgZXZlbiBpZiBubyBjYXB0
dXJpbmcgb3IgcmVwbGF5aW5nIGlzIGhhcHBlbmluZy4KKworICAgICAgICBBZGQgdGhlIGFiaWxp
dHkgdG8gc2V0IGFuIElucHV0Q3Vyc29yIGluc3RhbmNlIG9uIGEgSlNHbG9iYWxPYmplY3QuIFRo
aXMKKyAgICAgICAgaXMgdGhlIG1lYW5zIGZvciBjb25uZWN0aW5nIGEgcmVwbGF5IHJlY29yZGlu
ZyB0byBhIHNjcmlwdCBjb250ZXh0LgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZXBsYXkvRW1wdHlJbnB1dEN1cnNvci5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RW1wdHlJbnB1dEN1cnNvcjo6fkVtcHR5SW5wdXRDdXJz
b3IpOgorICAgICAgICAoSlNDOjpFbXB0eUlucHV0Q3Vyc29yOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpFbXB0eUlucHV0Q3Vyc29yOjpFbXB0eUlucHV0Q3Vyc29yKToKKyAgICAgICAgKiByZXBs
YXkvSW5wdXRDdXJzb3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OklucHV0Q3Vyc29yOjpJbnB1
dEN1cnNvcik6CisgICAgICAgIChKU0M6OklucHV0Q3Vyc29yOjp+SW5wdXRDdXJzb3IpOgorICAg
ICAgICAoSlNDOjpJbnB1dEN1cnNvcjo6YXBwZW5kSW5wdXQpOgorICAgICAgICAoSlNDOjpJbnB1
dEN1cnNvcjo6ZmV0Y2hJbnB1dCk6CisgICAgICAgICogcmVwbGF5L05vbmRldGVybWluaXN0aWNJ
bnB1dC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Tm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZTo6
Tm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZSk6CisgICAgICAgIChKU0M6Ok5vbmRldGVybWluaXN0
aWNJbnB1dEJhc2U6On5Ob25kZXRlcm1pbmlzdGljSW5wdXRCYXNlKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OkpT
R2xvYmFsT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnNldElucHV0Q3Vy
c29yKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjppbnB1dEN1cnNvcik6CisKIDIwMTQtMDEtMjUgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgVW5pY29kZS5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNDEyMGNjNjg3OTNiZDg2ZDYzYmUyNmJhMTU2Nzg4OTExODA5YzY5Mi4uZjdkZjE0
NGFmY2Q0YzlmNjhlODVhY2I3ZTMxOTEyZDcwYTM0ODZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQwIEBACisyMDE0LTAyLTAzICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFdlYiBSZXBsYXk6IHVwc3RyZWFtIGJhc2UgaW5wdXQgY2xhc3NlcyBhbmQgdGhlIGlucHV0
IGN1cnNvciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyODExMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBFdmVudExvb3BJbnB1dCwgYSBiYXNlIGNsYXNzIGZvciByZXBsYXkgaW5w
dXRzIHRoYXQgYXJlIGhhbmRsZWQKKyAgICAgICAgYXMgaWYgdGhleSBiZWdpbiBhIG5ldyBydW4g
bG9vcC4gRm9yIGV4YW1wbGUsIG5hdmlnYXRpb25zLCB1c2VyIGlucHV0LAorICAgICAgICBuZXR3
b3JrIGNhbGxiYWNrcywgYW5kIGFzeW5jaHJvbm91cyB0aW1lcnMgYXJlIG1vZGVsZWQgYnkgaW5w
dXRzIHdoaWNoCisgICAgICAgIGRlcml2ZSBmcm9tIHRoaXMgYmFzZSBjbGFzcy4KKworICAgICAg
ICBBZGQgdGhlIGFiaWxpdHkgdG8gc2V0IGFuIElucHV0Q3Vyc29yIGluc3RhbmNlIG9uIGEgRG9j
dW1lbnQuIFRoaXMKKyAgICAgICAgaXMgdGhlIG1lYW5zIGZvciBjb25uZWN0aW5nIGEgcmVwbGF5
IHJlY29yZGluZyB0byBhIGRvY3VtZW50IGNvbnRleHQuCisKKyAgICAgICAgQWRkIGZvcndhcmRp
bmcgaGVhZGVycyBmb3Igc29tZSBmdW5kYW1lbnRhbCByZXBsYXkgY2xhc3Nlcy4KKworICAgICAg
ICBObyBuZXcgdGVzdHM7IG5vIG5ldyBmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQuCisKKyAgICAg
ICAgKiBGb3J3YXJkaW5nSGVhZGVycy9yZXBsYXkvRW1wdHlJbnB1dEN1cnNvci5oOiBBZGRlZC4K
KyAgICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9yZXBsYXkvSW5wdXRDdXJzb3IuaDogQWRkZWQu
CisgICAgICAgICogRm9yd2FyZGluZ0hlYWRlcnMvcmVwbGF5L05vbmRldGVybWluaXN0aWNJbnB1
dC5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6aW5wdXRDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNl
dElucHV0Q3Vyc29yKToKKyAgICAgICAgKiByZXBsYXkvRXZlbnRMb29wSW5wdXQuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlQb3NpdGlvbjo6UmVwbGF5UG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVwbGF5UG9zaXRpb246OmluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlcGxheVBvc2l0aW9uOjp0aW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcElucHV0
QmFzZTo6RXZlbnRMb29wSW5wdXRCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcElu
cHV0QmFzZTo6fkV2ZW50TG9vcElucHV0QmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExv
b3BJbnB1dEJhc2U6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TG9vcElu
cHV0QmFzZTo6cG9zaXRpb24pOgorCiAyMDE0LTAxLTI1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIFVuaWNvZGUuaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA4MWJkMzJmM2M3YjdjMjQ4NjliMTAwYTdjNDViODAzZjE2NWQzYzRl
Li5kOTk2MzA4OTY4N2IxODcyYWQzOWM2MDQ1YmUxNTc1YTUyNGNkNDk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtOTE2LDYgKzkxNiw5IEBACiAJCTk2OUEwNzlCMEVEMUQzQUUw
MEYxRjY4MSAvKiBPcGNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk2OUEwNzk1MEVEMUQzQUUwMEYxRjY4MSAvKiBPcGNvZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5Nzg4MDE0MDE0NzFBRDky
MDA0MUIwMTYgLyogSlNEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMyMjE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5j
cHAgKi87IH07CiAJCTk3ODgwMTQxMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzg4RkMyMzE0NzFB
RDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTk5RTQ1QTEwMThBMDFGMzUwMDI2RDg4RiAvKiBFbXB0eUlu
cHV0Q3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OUU0NUEwRDE4QTAxRjM1MDAyNkQ4OEYgLyogRW1wdHlJbnB1dEN1cnNvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5RTQ1QTExMThBMDFG
MzUwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMEUxOEEwMUYzNTAwMjZEODhGIC8qIElucHV0Q3Vyc29y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTlF
NDVBMTIxOEEwMUYzNTAwMjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlFNDVBMEYxOEEwMUYzNTAw
MjZEODhGIC8qIE5vbmRldGVybWluaXN0aWNJbnB1dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNzEyQjNCMTFDN0IyMTIwMDdBNTMxNSAvKiBS
ZWdFeHBDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTcxMkIzQTExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuY3BwICovOyB9Owog
CQlBMTcxMkIzRjExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjNFMTFDN0IyMjgwMDdBNTMx
NSAvKiBSZWdFeHBDYWNoZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUExNzEyQjQxMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0Iy
MzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjM1Miw2ICsyMzU1LDkgQEAKIAkJOTY5QTA5MjIwRUQxRTA5
QzAwRjFGNjgxIC8qIENvbXBsZXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29tcGxldGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3
ODhGQzIyMTQ3MUFEMEMwMDY4Q0UyRCAvKiBKU0RhdGVNYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRGF0ZU1hdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5Nzg4RkMyMzE0NzFBRDBDMDA2OENFMkQgLyogSlNEYXRlTWF0aC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RhdGVNYXRoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk5RTQ1QTBEMThBMDFGMzUwMDI2RDg4RiAvKiBFbXB0eUlucHV0Q3Vy
c29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEVtcHR5SW5wdXRDdXJzb3Iu
aDsgcGF0aCA9IHJlcGxheS9FbXB0eUlucHV0Q3Vyc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk5RTQ1QTBFMThBMDFGMzUwMDI2RDg4RiAvKiBJbnB1dEN1cnNvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnB1dEN1cnNvci5oOyBwYXRoID0gcmVwbGF5
L0lucHV0Q3Vyc29yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5RTQ1QTBGMThB
MDFGMzUwMDI2RDg4RiAvKiBOb25kZXRlcm1pbmlzdGljSW5wdXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTm9uZGV0ZXJtaW5pc3RpY0lucHV0Lmg7IHBhdGggPSByZXBsYXkv
Tm9uZGV0ZXJtaW5pc3RpY0lucHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
NzEyQjNBMTFDN0IyMTIwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWdFeHBDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtleS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjk1NSw2ICsyOTYxLDcgQEAKIAkJCQk3RTM5RDgzNzBF
QzNBMzg4MDAzQUYxMUEgLyogcGFyc2VyICovLAogCQkJCTAzNDc2OERGRkYzOEE1MDQxMURCOUM4
QiAvKiBQcm9kdWN0cyAqLywKIAkJCQk5NUFCODMxQTBEQTQyQzY5MDBCQzgzRjMgLyogcHJvZmls
ZXIgKi8sCisJCQkJOTlFNDVBMEMxOEEwMUU5MzAwMjZEODhGIC8qIHJlcGxheSAqLywKIAkJCQk5
MzJGQzNDMjA4MjRCQjcwMDA1QjNDNzUgLyogUmVzb3VyY2VzICovLAogCQkJCTdFRjZFMEJCMEVC
N0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovLAogCQkJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1
NSAvKiB0ZXN0cyAqLywKQEAgLTQ0NTIsNiArNDQ1OSwxNiBAQAogCQkJcGF0aCA9IGJ5dGVjb2Rl
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJOTlFNDVBMEMxOEEwMUU5MzAw
MjZEODhGIC8qIHJlcGxheSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJOTlFNDVBMEQxOEEwMUYzNTAwMjZEODhGIC8qIEVtcHR5SW5wdXRDdXJzb3IuaCAq
LywKKwkJCQk5OUU0NUEwRTE4QTAxRjM1MDAyNkQ4OEYgLyogSW5wdXRDdXJzb3IuaCAqLywKKwkJ
CQk5OUU0NUEwRjE4QTAxRjM1MDAyNkQ4OEYgLyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggKi8s
CisJCQkpOworCQkJbmFtZSA9IHJlcGxheTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCUE1MTNFNUNDMTg1RkI5OTIwMDdFOTVBRCAvKiBhZ2VudHMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtNDkwMSw2ICs0OTE4LDcgQEAKIAkJCQkw
RkVBMEExMDE3MDUxM0RCMDBCQjcyMkMgLyogRlRMTG93ZXJERkdUb0xMVk0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3RDg5RDAyMTdBMEI5MDQwMDc3M0FEOCAvKiBGVExMb3dlcmVkTm9kZVZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMxQzE3RDUxRjIyMDBDQTJDNDAgLyogRlRMT1NS
RW50cnkuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5RTQ1QTExMThBMDFGMzUwMDI2RDg4RiAvKiBJ
bnB1dEN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCREQxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTE9TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkRFMTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjIzNUJFMDE3MTc4RTFDMDA2OTBDN0YgLyogRlRMT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTUwNzEsNiArNTA4OSw3IEBACiAJCQkJQkMxOEM0NUUwRTE2RjVDRDAwQjM0NDYw
IC8qIEpTU3RhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzFFQUYwMTc5ODdBQjYwMDI5OURC
MiAvKiBKU1N0YWNrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjcwRTE2RjVD
RDAwQjM0NDYwIC8qIEpTU3RyaW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUU0NUExMjE4QTAx
RjM1MDAyNkQ4OEYgLyogTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkU4NTUzOTExMUI5OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyNjAwQjVBNzE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMThDNDI4MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU1N0cmluZ1Jl
Zi5oIGluIEhlYWRlcnMgKi8sCkBAIC01MjcwLDYgKzUyODksNyBAQAogCQkJCUU0OURDMTZEMTJF
RjI5NTMwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZCN0YzOUUxNUVEOEU0NjAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3Mzg2NTU0MTE4Njk3QjQwMDU0MDI3OSAvKiBTcGVjaWFsaXpl
ZFRodW5rSklULmggaW4gSGVhZGVycyAqLywKKwkJCQk5OUU0NUExMDE4QTAxRjM1MDAyNkQ4OEYg
LyogRW1wdHlJbnB1dEN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NTQxQjIxNjEzQzFG
QjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MkU1
NDE0MURBRUVFMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3QzFFQUYyMTc5ODdBQjYwMDI5OURCMiAvKiBTdGFja1Zpc2l0b3IuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9FbXB0eUlucHV0Q3Vy
c29yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VtcHR5SW5wdXRDdXJzb3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wOTc1YzJiN2Y1ZjYyODI5YzgxODRlNWMzYjkxMDU3NDQyZjQwMDVmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9FbXB0eUlucHV0Q3Vy
c29yLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUyAiQVMKKyAqIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhP
TERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBFbXB0eUlucHV0Q3Vyc29yX2gKKyNkZWZpbmUgRW1wdHlJbnB1dEN1cnNvcl9oCisK
KyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKworI2luY2x1ZGUgPHJlcGxheS9JbnB1dEN1cnNvci5o
PgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFbXB0eUlucHV0Q3Vyc29yIDogcHVibGlj
IElucHV0Q3Vyc29yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFbXB0eUlucHV0Q3Vyc29y
KTsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5FbXB0eUlucHV0Q3Vyc29yKCkgeyB9CisKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxFbXB0eUlucHV0Q3Vyc29yPiBjcmVhdGUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eUlucHV0Q3Vyc29yKCkpOworICAgIH0KKworICAg
IHZpcnR1YWwgYm9vbCBpc0NhcHR1cmluZygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzUmVwbGF5aW5nKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgTm9uZGV0ZXJtaW5pc3RpY0lu
cHV0QmFzZSogdW5jaGVja2VkTG9hZElucHV0KElucHV0UXVldWUpIG92ZXJyaWRlIGZpbmFsCisg
ICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHN0b3JlSW5wdXQoc3RkOjp1bmlxdWVfcHRy
PE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2U+KSBvdmVycmlkZSBmaW5hbAorICAgIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVh
bCBOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlKiBsb2FkSW5wdXQoSW5wdXRRdWV1ZSwgY29uc3Qg
QXRvbWljU3RyaW5nJikgb3ZlcnJpZGUgZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgRW1wdHlJbnB1dEN1cnNvcigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK3Vz
aW5nIEpTQzo6RW1wdHlJbnB1dEN1cnNvcjsKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUkVQTEFZ
KQorCisjZW5kaWYgLy8gRW1wdHlJbnB1dEN1cnNvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcmVwbGF5L0lucHV0Q3Vyc29yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cmVwbGF5L0lucHV0Q3Vyc29yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgxODAxMjMwOWJhNzI3YTNmNGRmN2E4
NjczNmFhZTU5NzQ4YzI0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvSW5wdXRDdXJzb3IuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAqIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbnB1dEN1cnNvcl9o
CisjZGVmaW5lIElucHV0Q3Vyc29yX2gKKworI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorCisjaW5j
bHVkZSAiTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIElucHV0Q3Vyc29yIDogcHVi
bGljIFJlZkNvdW50ZWQ8SW5wdXRDdXJzb3I+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bnB1dEN1cnNvcik7CitwdWJsaWM6CisgICAgSW5wdXRDdXJzb3IoKSB7IH0KKworICAgIHZpcnR1
YWwgfklucHV0Q3Vyc29yKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDYXB0dXJpbmcoKSBj
b25zdCA9MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNSZXBsYXlpbmcoKSBjb25zdCA9MDsKKworICAg
IHRlbXBsYXRlIDxjbGFzcyBJbnB1dFR5cGUsIGNsYXNzLi4uIEFyZ3M+IGlubGluZQorICAgIHZv
aWQgYXBwZW5kSW5wdXQoQXJncyYmLi4uIGFyZ3MpCisgICAgeworICAgICAgICByZXR1cm4gc3Rv
cmVJbnB1dChzdGQ6OnVuaXF1ZV9wdHI8Tm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZT4oV1RGOjpz
YWZlQ2FzdDxJbnB1dFR5cGUqPihuZXcgSW5wdXRUeXBlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLikpKSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0VHlwZT4gaW5saW5l
CisgICAgSW5wdXRUeXBlKiBmZXRjaElucHV0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxJbnB1dFR5cGUqPihsb2FkSW5wdXQoSW5wdXRUcmFpdHM8SW5wdXRUeXBlPjo6cXVl
dWUoKSwgSW5wdXRUcmFpdHM8SW5wdXRUeXBlPjo6dHlwZSgpKSk7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIHN0b3JlSW5wdXQoc3RkOjp1bmlxdWVfcHRyPE5vbmRldGVybWluaXN0aWNJbnB1
dEJhc2U+KSA9MDsKKyAgICB2aXJ0dWFsIE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UqIHVuY2hl
Y2tlZExvYWRJbnB1dChJbnB1dFF1ZXVlKSA9MDsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIE5v
bmRldGVybWluaXN0aWNJbnB1dEJhc2UqIGxvYWRJbnB1dChJbnB1dFF1ZXVlLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSA9MDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6Oklu
cHV0Q3Vyc29yOworCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCisKKyNlbmRpZiAvLyBJ
bnB1dEN1cnNvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L05v
bmRldGVybWluaXN0aWNJbnB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9Ob25k
ZXRlcm1pbmlzdGljSW5wdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzkxNjA2ZWVhZGY2OGEwYmNkNGQ4MTkw
YTQyYTkwZTM0MTI2OTA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3JlcGxheS9Ob25kZXRlcm1pbmlzdGljSW5wdXQuaApAQCAtMCwwICsxLDg4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKKyAq
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRAorICogVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBCisgKiBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOb25k
ZXRlcm1pbmlzdGljSW5wdXRfaAorI2RlZmluZSBOb25kZXRlcm1pbmlzdGljSW5wdXRfaAorCisj
aWYgRU5BQkxFKFdFQl9SRVBMQVkpCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRW5jb2Rl
ZFZhbHVlOworCitlbnVtIGNsYXNzIElucHV0UXVldWUgeworICAgIFNjcmlwdE1lbW9pemVkRGF0
YSA9IDAsCisgICAgTG9hZGVyTWVtb2l6ZWREYXRhID0gMSwKKyAgICBFdmVudExvb3BJbnB1dCA9
IDIsCisgICAgQ291bnQgPSAzCit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFR5cGU+Citz
dHJ1Y3QgSlNfRVhQT1JUX1BSSVZBVEUgSW5wdXRUcmFpdHMgeworICAgIHN0YXRpYyBJbnB1dFF1
ZXVlIHF1ZXVlKCk7CisgICAgc3RhdGljIEF0b21pY1N0cmluZyYgdHlwZSgpOworCisgICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2RlZElucHV0LCBJbnB1dFR5cGUmIGRl
Y29kZWRJbnB1dCk7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEVuY29kZWRWYWx1ZSYgZW5jb2Rl
ZElucHV0LCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXRUeXBlPiYgZGVjb2RlZElucHV0KTsKK307CisK
K2NsYXNzIE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UpOworcHVibGljOgorICAgIE5vbmRldGVybWlu
aXN0aWNJbnB1dEJhc2UoKSB7IH0KKyAgICB2aXJ0dWFsIH5Ob25kZXRlcm1pbmlzdGljSW5wdXRC
YXNlKCkgeyB9CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIGNvbnN0
ID0wOworICAgIHZpcnR1YWwgSW5wdXRRdWV1ZSBxdWV1ZSgpIGNvbnN0ID0wOworfTsKKwordGVt
cGxhdGU8dHlwZW5hbWUgSW5wdXRUeXBlPgorY2xhc3MgTm9uZGV0ZXJtaW5pc3RpY0lucHV0IDog
cHVibGljIE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UgeworICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwKKyAgICB7CisgICAgICAgIHJl
dHVybiBJbnB1dFRyYWl0czxJbnB1dFR5cGU+Ojp0eXBlKCk7CisgICAgfQorCisgICAgdmlydHVh
bCBJbnB1dFF1ZXVlIHF1ZXVlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwKKyAgICB7CisgICAgICAg
IHJldHVybiBJbnB1dFRyYWl0czxJbnB1dFR5cGU+OjpxdWV1ZSgpOworICAgIH0KK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCit1c2luZyBKU0M6OklucHV0UXVldWU7Cit1c2luZyBKU0M6Oklu
cHV0VHJhaXRzOwordXNpbmcgSlNDOjpOb25kZXRlcm1pbmlzdGljSW5wdXQ7Cit1c2luZyBKU0M6
Ok5vbmRldGVybWluaXN0aWNJbnB1dEJhc2U7CisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1JFUExB
WSkKKworI2VuZGlmIC8vIE5vbmRldGVybWluaXN0aWNJbnB1dF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMmMyNzRjMWE3ZDQ4
MWMwN2RmMGQyYmViM2IyOTMxYTM5MDdhNWU2Ni4uNjZkZmQyOTM4YTE5NjVjY2JhZTA5OGJmMzUx
Y2JiOWE4MTM5MjhiYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcApAQCAtMTI3LDYgKzEyNywxMCBAQAogI2luY2x1ZGUgIlJlbW90ZUlu
c3BlY3Rvci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNpbmNsdWRlICJF
bXB0eUlucHV0Q3Vyc29yLmgiCisjZW5kaWYKKwogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0Lmx1
dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTE1Miw2ICsxNTYsOSBAQCBjb25zdCBHbG9iYWxP
YmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSA9IHsgJmFsbAogCiBKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUqIGdsb2JhbE9i
amVjdE1ldGhvZFRhYmxlKQogICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCAwKQorI2lmIEVOQUJM
RShXRUJfUkVQTEFZKQorICAgICwgbV9pbnB1dEN1cnNvcihFbXB0eUlucHV0Q3Vyc29yOjpjcmVh
dGUoKSkKKyNlbmRpZgogICAgICwgbV9tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludChh
ZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpKSkKICAgICAsIG1faGF2aW5nQUJh
ZFRpbWVXYXRjaHBvaW50KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQog
ICAgICwgbV92YXJJbmplY3Rpb25XYXRjaHBvaW50KGFkb3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0
KElzV2F0Y2hlZCkpKQpAQCAtNzcwLDYgKzc3NywxMyBAQCBib29sIEpTR2xvYmFsT2JqZWN0Ojpy
ZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKCkgY29uc3QKICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFdF
Ql9SRVBMQVkpCit2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXRJbnB1dEN1cnNvcihQYXNzUmVmUHRy
PElucHV0Q3Vyc29yPiBwcnBDdXJzb3IpCit7CisgICAgbV9pbnB1dEN1cnNvciA9IHBycEN1cnNv
cjsKK30KKyNlbmRpZgorCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjpzZXROYW1lKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKICAgICBtX25hbWUgPSBuYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYjBjYWQzZGM1NDcwZjdjN2EwZTU3MGJk
Y2QyZGZmYTg5NWUyYWEwYy4uZjk4N2U0YTAwOTc0OGIzOTQ3NzcyYzU1NDljYjA0M2MzMjBiZTg2
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEZ1bmN0
aW9uUHJvdG90eXBlOwogY2xhc3MgR2V0dGVyU2V0dGVyOwogY2xhc3MgR2xvYmFsQ29kZUJsb2Nr
OworY2xhc3MgSW5wdXRDdXJzb3I7CiBjbGFzcyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU7CiBj
bGFzcyBKU1Byb21pc2VDb25zdHJ1Y3RvcjsKIGNsYXNzIEpTUHJvbWlzZVByb3RvdHlwZTsKQEAg
LTIyNSw2ICsyMjYsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgRGVidWdnZXIqIG1fZGVidWdnZXI7
CiAKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICBSZWZQdHI8SW5wdXRDdXJzb3I+IG1faW5w
dXRDdXJzb3I7CisjZW5kaWYKKwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIHN0
ZDo6dW5pcXVlX3B0cjxKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU+IG1faW5zcGVjdG9yRGVidWdn
YWJsZTsKICNlbmRpZgpAQCAtNDE3LDYgKzQyMiwxMSBAQCBwdWJsaWM6CiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wpOwogICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgcmVtb3RlRGVidWdnaW5nRW5hYmxlZCgpIGNvbnN0OwogCisjaWYg
RU5BQkxFKFdFQl9SRVBMQVkpCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRJbnB1dEN1
cnNvcihQYXNzUmVmUHRyPElucHV0Q3Vyc29yPik7CisgICAgSW5wdXRDdXJzb3ImIGlucHV0Q3Vy
c29yKCkgY29uc3QgeyByZXR1cm4gKm1faW5wdXRDdXJzb3I7IH0KKyNlbmRpZgorCiAgICAgdm9p
ZCBzZXROYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmFtZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJk
aW5nSGVhZGVycy9yZXBsYXkvRW1wdHlJbnB1dEN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvcmVwbGF5L0VtcHR5SW5wdXRDdXJzb3IuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGE3
OTRmNDM2ZDcyMzI5YTcxMjFmMTRmNTAxMWU1NWZmOWQyODI5Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcmVwbGF5L0VtcHR5SW5wdXRDdXJzb3Iu
aApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfRW1wdHlJbnB1dEN1cnNvcl9o
CisjZGVmaW5lIFdlYkNvcmVfRldEX0VtcHR5SW5wdXRDdXJzb3JfaAorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0VtcHR5SW5wdXRDdXJzb3IuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcmVwbGF5L0lucHV0Q3Vyc29yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9yZXBsYXkvSW5wdXRDdXJzb3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YzY4YzM0MDdiYmZkZjcwOGY3ZWNhYWM3MDYxMzU3ODQ3NTRhYTBmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcmVwbGF5L0lucHV0Q3Vyc29y
LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0lucHV0Q3Vyc29yX2gKKyNk
ZWZpbmUgV2ViQ29yZV9GV0RfSW5wdXRDdXJzb3JfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0lucHV0Q3Vyc29yLmg+CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Zvcndh
cmRpbmdIZWFkZXJzL3JlcGxheS9Ob25kZXRlcm1pbmlzdGljSW5wdXQuaCBiL1NvdXJjZS9XZWJD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL3JlcGxheS9Ob25kZXRlcm1pbmlzdGljSW5wdXQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43YmVjZGI3MjExMjA0Y2Q0NWNjZTBiZDBmMjFiNDkyMDQ5YTFkNTU5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvcmVwbGF5L05vbmRl
dGVybWluaXN0aWNJbnB1dC5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9O
b25kZXRlcm1pbmlzdGljSW5wdXRfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9Ob25kZXRlcm1pbmlz
dGljSW5wdXRfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL05vbmRldGVybWluaXN0aWNJbnB1
dC5oPgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMDRmZmE0NzY3MmUxZTBmNTg1NGYzMDhjN2IzYTM4ZWZjMDFhMmVk
MC4uMzAzY2NlNDZkYWE4MzRmMmY5YTI5ODA4MGNmZDkwNTY5YzE1YjM4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzQ4OSw2
ICszNDg5LDcgQEAKIAkJOThDRTQzMjYxMjlFMDBCRDAwNTgyMURDIC8qIExpbmtMb2FkZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOThDRTQzMjUx
MjlFMDBCRDAwNTgyMURDIC8qIExpbmtMb2FkZXIuY3BwICovOyB9OwogCQk5OENFNDMyQTEyOUUw
MEU1MDA1ODIxREMgLyogTGlua0xvYWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOThDRTQzMjkxMjlFMDBFNTAwNTgyMURDIC8qIExpbmtMb2FkZXIu
aCAqLzsgfTsKIAkJOThFQjFGOTUxMzEzRkUwNTAwRDBFMUVBIC8qIE5vdEltcGxlbWVudGVkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OEVCMUY5NDEz
MTNGRTA1MDBEMEUxRUEgLyogTm90SW1wbGVtZW50ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5OUU0NUExNTE4QTAyMTkzMDAyNkQ4OEYgLyog
RXZlbnRMb29wSW5wdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk5RTQ1QTE0MThBMDIxOTMwMDI2RDg4RiAvKiBFdmVudExvb3BJbnB1dC5oICovOyB9
OwogCQk5QTExNDIwNDE4MzJEMTM1MDAwQkI4QUQgLyogVmFsdWVUb1N0cmluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUExMTQyMDMxODMyRDEzNDAw
MEJCOEFEIC8qIFZhbHVlVG9TdHJpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5QTFCNkY5NzE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJp
bmdMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDlBMUI2Rjk2MTU4ODY5QzgwMDExQThDNCAvKiBKU0RPTVN0cmluZ0xpc3RDdXN0b20u
Y3BwICovOyB9OwogCQk5QTUyOEU4MzE3RDdGNTJGMDBBQTk1MTggLyogRmxvYXRpbmdPYmplY3Rz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlBNTI4
RTgxMTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9hdGluZ09iamVjdHMuY3BwICovOyB9OwpAQCAtMTA0
NDYsNiArMTA0NDcsNyBAQAogCQk5OENFNDMyNTEyOUUwMEJEMDA1ODIxREMgLyogTGlua0xvYWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMaW5rTG9hZGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOThDRTQzMjkxMjlFMDBFNTAwNTgyMURD
IC8qIExpbmtMb2FkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlua0xv
YWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OEVCMUY5NDEzMTNGRTA1MDBE
MEUxRUEgLyogTm90SW1wbGVtZW50ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTm90SW1wbGVtZW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTlFNDVB
MTQxOEEwMjE5MzAwMjZEODhGIC8qIEV2ZW50TG9vcElucHV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEV2ZW50TG9vcElucHV0Lmg7IHBhdGggPSByZXBsYXkvRXZlbnRMb29w
SW5wdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUExMTQyMDMxODMyRDEzNDAw
MEJCOEFEIC8qIFZhbHVlVG9TdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmFsdWVUb1N0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QTFCNkY5
NjE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlBNTI4RTgxMTdEN0Y1MkYwMEFBOTUxOCAvKiBG
bG9hdGluZ09iamVjdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RmxvYXRpbmdPYmplY3RzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MjYw
LDYgKzE0MjYyLDcgQEAKIAkJCQlCQ0YxQTVCQTA5NzgzMjA5MDA2MUExMjMgLyogcGxhdGZvcm0g
Ki8sCiAJCQkJNURDRjgzNjkwRDU5MTU3ODAwOTUzQkM2IC8qIHBsdWdpbnMgKi8sCiAJCQkJRjUy
M0QyRjMwMkRFNDQzQjAxODYzNUNBIC8qIHJlbmRlcmluZyAqLywKKwkJCQk5OUU0NUExMzE4QTAy
MTc2MDAyNkQ4OEYgLyogcmVwbGF5ICovLAogCQkJCTFBRTgyRUM5MENBQUUxNzcwMDIyMzdBRSAv
KiBzdG9yYWdlICovLAogCQkJCUU0NzYzRDRBMTdCMjcwNDkwMEQzNTIwNiAvKiBzdHlsZSAqLywK
IAkJCQlCMjIyNzdDQTBEMDBCRjFFMDA3MUI3ODIgLyogc3ZnICovLApAQCAtMTc4NDgsNiArMTc4
NTEsMTQgQEAKIAkJCW5hbWUgPSBwYXJzZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OworCQk5OUU0NUExMzE4QTAyMTc2MDAyNkQ4OEYgLyogcmVwbGF5ICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5OUU0NUExNDE4QTAyMTkzMDAyNkQ4
OEYgLyogRXZlbnRMb29wSW5wdXQuaCAqLywKKwkJCSk7CisJCQluYW1lID0gcmVwbGF5OworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQTE0ODMyOEIxODdGNTA2ODAwREE2M0E2
IC8qIHdhayAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0y
NDc3Niw2ICsyNDc4Nyw3IEBACiAJCQkJRkJEQjYxQTExNkQ2MDM3RTAwQkIzMzk0IC8qIFBhZ2VS
dWxlQ29sbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzgyMDg5NTE0N0QzNUY5MDAxMEJD
MDYgLyogUGFnZVJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NzQyRTUxMzQz
NjMzQzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJOTlFNDVBMTUxOEEwMjE5MzAwMjZEODhGIC8qIEV2ZW50TG9vcElucHV0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzNzFFNjVDQzEzNjYxRURDMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3MTk3RjI0MTc1Njg5QzQwMDdCOTQ0MiAvKiBQYWdlVGhyb3R0
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTI4NEFFMTEwNDQ3RDQ1MDBFQUVCNTIgLyogUGFn
ZVRyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCAyYWUxNjVmNDZhMjlmNjg0ZDI0OGE1N2NiMzM0NmI2MGZiY2MxMjgwLi5hOTZmOTcwMDVi
Mjk0NDRlMTZhNTQ5NmM3OTkxMzFjMzNiOTE3YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTIyMCw2ICsyMjAsMTAgQEAKICNpbmNsdWRlICJDYXB0aW9uVXNlclByZWZlcmVuY2VzLmgi
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorI2luY2x1ZGUgPHJlcGxheS9FbXB0
eUlucHV0Q3Vyc29yLmg+CisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5h
bWVzcGFjZSBVbmljb2RlOwogCkBAIC00OTYsNiArNTAwLDkgQEAgRG9jdW1lbnQ6OkRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3Nlcywg
dW5zaWcKICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKICAgICAsIG1fdGVtcGxhdGVEb2N1
bWVudEhvc3QobnVsbHB0cikKICNlbmRpZgorI2lmIEVOQUJMRShXRUJfUkVQTEFZKQorICAgICwg
bV9pbnB1dEN1cnNvcihFbXB0eUlucHV0Q3Vyc29yOjpjcmVhdGUoKSkKKyNlbmRpZgogICAgICwg
bV9kaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lcih0aGlzLCAmRG9jdW1lbnQ6OmRpZEFzc29j
aWF0ZUZvcm1Db250cm9sc1RpbWVyRmlyZWQpCiAgICAgLCBtX2hhc0luamVjdGVkUGx1Z0luc1Nj
cmlwdChmYWxzZSkKICAgICAsIG1fcmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKGZhbHNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCAzMWIwNjc5ODhkYzBjZDdkZWQxZGQ1MmZmMTdlMTM0NDZkY2Vl
MzNkLi4wMWNjMzE0MmZkYjk0YmZiOWE3NzY4Zjk4ODIzOWQxZGFlNGY2NDM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtNTksNiArNTksMTAgQEAKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyNp
bmNsdWRlIDxyZXBsYXkvSW5wdXRDdXJzb3IuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CkBAIC00NDIsNiArNDQ2LDExIEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgVVJMIGJhc2VVUkkoKSBjb25zdCBvdmVycmlkZTsKIAorI2lmIEVOQUJM
RShXRUJfUkVQTEFZKQorICAgIElucHV0Q3Vyc29yJiBpbnB1dEN1cnNvcigpIGNvbnN0IHsgcmV0
dXJuICptX2lucHV0Q3Vyc29yOyB9CisgICAgdm9pZCBzZXRJbnB1dEN1cnNvcihQYXNzUmVmUHRy
PElucHV0Q3Vyc29yPiBjdXJzb3IpIHsgbV9pbnB1dEN1cnNvciA9IGN1cnNvcjsgfQorI2VuZGlm
CisKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKICAgICB2b2lkIHZpc2liaWxpdHlT
dGF0ZUNoYW5nZWQoKTsKICAgICBTdHJpbmcgdmlzaWJpbGl0eVN0YXRlKCkgY29uc3Q7CkBAIC0x
NjQ1LDYgKzE2NTQsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Rm9udExvYWRlcj4gbV9mb250
bG9hZGVyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKyAgICBSZWZQdHI8SW5w
dXRDdXJzb3I+IG1faW5wdXRDdXJzb3I7CisjZW5kaWYKKwogICAgIFRpbWVyPERvY3VtZW50PiBt
X2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyOwogICAgIEhhc2hTZXQ8UmVmUHRyPEVsZW1l
bnQ+PiBtX2Fzc29jaWF0ZWRGb3JtQ29udHJvbHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlcGxheS9FdmVudExvb3BJbnB1dC5oIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L0V2ZW50
TG9vcElucHV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQwN2I5MWIzYWNlNGUwODE3NDI5ZmYxZDU3M2I3MTA3
OGQxNzg5MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9FdmVudExv
b3BJbnB1dC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
MyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTCisgKiBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQKKyAqIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QQorICogUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRXZlbnRMb29wSW5wdXRfaAorI2RlZmluZSBF
dmVudExvb3BJbnB1dF9oCisKKyNpZiBFTkFCTEUoV0VCX1JFUExBWSkKKworI2luY2x1ZGUgPHJl
cGxheS9Ob25kZXRlcm1pbmlzdGljSW5wdXQuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFbmNvZGVkVmFsdWU7Cit9CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgUmVwbGF5Q29udHJvbGxlcjsKKworc3RydWN0IFJlcGxheVBv
c2l0aW9uIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBSZXBsYXlQb3NpdGlvbigpCisgICAgICAg
IDogbV9pbmRleCgwKQorICAgICAgICAsIG1fdGltZSgwLjApIHsgfQorCisgICAgZXhwbGljaXQg
UmVwbGF5UG9zaXRpb24odW5zaWduZWQgaW5kZXgpCisgICAgICAgIDogbV9pbmRleChpbmRleCkK
KyAgICAgICAgLCBtX3RpbWUobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpIHsgfQorCisg
ICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgZG91Ymxl
IHRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWU7IH0KK3ByaXZhdGU6CisgICAgdW5zaWduZWQg
bV9pbmRleDsKKyAgICBkb3VibGUgbV90aW1lOworfTsKKworY2xhc3MgRXZlbnRMb29wSW5wdXRC
YXNlIDogcHVibGljIE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UgeworcHVibGljOgorICAgIEV2
ZW50TG9vcElucHV0QmFzZSgpCisgICAgICAgIDogbV9wb3NpdGlvbihSZXBsYXlQb3NpdGlvbigp
KSB7IH0KKworICAgIHZpcnR1YWwgfkV2ZW50TG9vcElucHV0QmFzZSgpIHsgfQorICAgIHZpcnR1
YWwgSW5wdXRRdWV1ZSBxdWV1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIElucHV0
UXVldWU6OkV2ZW50TG9vcElucHV0OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2goUmVw
bGF5Q29udHJvbGxlciYpID0wOworCisgICAgLy8gRHVyaW5nIGNhcHR1cmUsIHRoZSBwb3NpdGlv
biBpcyBzZXQgd2hlbiB0aGUgZm9sbG93aW5nIGV2ZW50IGxvb3AgaW5wdXQgaXMgY2FwdHVyZWQu
CisgICAgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBSZXBsYXlQb3NpdGlvbiYgcG9zaXRpb24pIHsg
bV9wb3NpdGlvbiA9IHBvc2l0aW9uOyB9CisgICAgUmVwbGF5UG9zaXRpb24gcG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9Citwcm90ZWN0ZWQ6CisgICAgUmVwbGF5UG9zaXRp
b24gbV9wb3NpdGlvbjsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFR5cGU+CitjbGFz
cyBFdmVudExvb3BJbnB1dCA6IHB1YmxpYyBFdmVudExvb3BJbnB1dEJhc2UgeworICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeworICAg
ICAgICByZXR1cm4gSW5wdXRUcmFpdHM8SW5wdXRUeXBlPjo6dHlwZSgpOworICAgIH0KK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfUkVQTEFZKQor
CisjZW5kaWYgLy8gRXZlbnRMb29wSW5wdXRfaAo=
</data>
<flag name="review"
          id="247031"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>